@makeswift/runtime 0.9.9 → 0.9.11

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 (174) hide show
  1. package/dist/PreviewProvider.es.js +2 -2
  2. package/dist/ReadOnlyText.es.js +1 -1
  3. package/dist/ReadOnlyTextV2.cjs.js +3 -1
  4. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  5. package/dist/ReadOnlyTextV2.es.js +4 -2
  6. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  7. package/dist/api.cjs.js +19 -0
  8. package/dist/api.cjs.js.map +1 -1
  9. package/dist/api.es.js +19 -0
  10. package/dist/api.es.js.map +1 -1
  11. package/dist/controls.cjs.js +2 -0
  12. package/dist/controls.cjs.js.map +1 -1
  13. package/dist/controls.es.js +1 -1
  14. package/dist/index.cjs.js +127 -32
  15. package/dist/index.cjs.js.map +1 -1
  16. package/dist/index.cjs10.js +6 -2
  17. package/dist/index.cjs10.js.map +1 -1
  18. package/dist/index.cjs5.js +30 -75
  19. package/dist/index.cjs5.js.map +1 -1
  20. package/dist/index.cjs9.js +4 -1
  21. package/dist/index.cjs9.js.map +1 -1
  22. package/dist/index.es.js +128 -33
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/index.es10.js +8 -4
  25. package/dist/index.es10.js.map +1 -1
  26. package/dist/index.es5.js +31 -73
  27. package/dist/index.es5.js.map +1 -1
  28. package/dist/index.es6.js +1 -1
  29. package/dist/index.es9.js +5 -2
  30. package/dist/index.es9.js.map +1 -1
  31. package/dist/react-page.cjs.js +37 -17
  32. package/dist/react-page.cjs.js.map +1 -1
  33. package/dist/react-page.es.js +36 -18
  34. package/dist/react-page.es.js.map +1 -1
  35. package/dist/slate.cjs.js +69 -6
  36. package/dist/slate.cjs.js.map +1 -1
  37. package/dist/slate.es.js +69 -7
  38. package/dist/slate.es.js.map +1 -1
  39. package/dist/types/src/api/graphql/documents/fragments.d.ts +1 -0
  40. package/dist/types/src/api/graphql/documents/fragments.d.ts.map +1 -1
  41. package/dist/types/src/api/graphql/documents/queries.d.ts +1 -0
  42. package/dist/types/src/api/graphql/documents/queries.d.ts.map +1 -1
  43. package/dist/types/src/api/graphql/generated/fragment-document-nodes.d.ts +1 -0
  44. package/dist/types/src/api/graphql/generated/fragment-document-nodes.d.ts.map +1 -1
  45. package/dist/types/src/api/graphql/generated/types.d.ts +17 -0
  46. package/dist/types/src/api/graphql/generated/types.d.ts.map +1 -1
  47. package/dist/types/src/api/graphql/types.d.ts +3 -3
  48. package/dist/types/src/api/graphql/types.d.ts.map +1 -1
  49. package/dist/types/src/api/react.d.ts +14 -3
  50. package/dist/types/src/api/react.d.ts.map +1 -1
  51. package/dist/types/src/components/builtin/Button/Button.d.ts +3 -39
  52. package/dist/types/src/components/builtin/Button/Button.d.ts.map +1 -1
  53. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +2 -2
  54. package/dist/types/src/components/builtin/Form/components/Field/components/Input/index.d.ts +1 -1
  55. package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +0 -1
  56. package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -1
  57. package/dist/types/src/components/builtin/Form/components/Field/components/RadioButton/index.d.ts +2 -2
  58. package/dist/types/src/components/builtin/Form/components/Field/components/TextArea/index.d.ts +1 -1
  59. package/dist/types/src/components/builtin/Form/components/Field/index.d.ts +0 -1
  60. package/dist/types/src/components/builtin/Form/components/Field/index.d.ts.map +1 -1
  61. package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts +0 -1
  62. package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts.map +1 -1
  63. package/dist/types/src/components/builtin/Navigation/components/DropDownButton/index.d.ts +1 -1
  64. package/dist/types/src/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  65. package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts +0 -1
  66. package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts.map +1 -1
  67. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts +1 -1
  68. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts.map +1 -1
  69. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts +0 -1
  70. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -1
  71. package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts +0 -1
  72. package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts.map +1 -1
  73. package/dist/types/src/components/builtin/SocialLinks/options.d.ts +23 -24
  74. package/dist/types/src/components/builtin/SocialLinks/options.d.ts.map +1 -1
  75. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts +2 -2
  76. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts.map +1 -1
  77. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts +1 -2
  78. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts.map +1 -1
  79. package/dist/types/src/components/builtin/Text/components/Element/element.d.ts +1 -2
  80. package/dist/types/src/components/builtin/Text/components/Element/element.d.ts.map +1 -1
  81. package/dist/types/src/components/builtin/Text/components/Element/inline.d.ts +1 -2
  82. package/dist/types/src/components/builtin/Text/components/Element/inline.d.ts.map +1 -1
  83. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts +1 -2
  84. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts.map +1 -1
  85. package/dist/types/src/components/page/Page.d.ts +0 -1
  86. package/dist/types/src/components/page/Page.d.ts.map +1 -1
  87. package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts +0 -1
  88. package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  89. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts +0 -1
  90. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
  91. package/dist/types/src/components/shared/BackgroundsContainer/index.d.ts +1 -1
  92. package/dist/types/src/components/shared/GutterContainer/index.d.ts +1 -1
  93. package/dist/types/src/components/shared/GutterContainer/index.d.ts.map +1 -1
  94. package/dist/types/src/components/shared/Link/index.d.ts +1 -1
  95. package/dist/types/src/components/shared/Link/index.d.ts.map +1 -1
  96. package/dist/types/src/components/shared/grid-item.d.ts +1 -1
  97. package/dist/types/src/components/shared/grid-item.d.ts.map +1 -1
  98. package/dist/types/src/controls/rich-text/fixtures/v2-data-types.d.ts +3 -0
  99. package/dist/types/src/controls/rich-text/fixtures/v2-data-types.d.ts.map +1 -0
  100. package/dist/types/src/controls/rich-text/translation.d.ts.map +1 -1
  101. package/dist/types/src/controls/rich-text-v2/index.d.ts +1 -0
  102. package/dist/types/src/controls/rich-text-v2/index.d.ts.map +1 -1
  103. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +15 -11
  104. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  105. package/dist/types/src/controls/rich-text-v2/translation.d.ts +5 -0
  106. package/dist/types/src/controls/rich-text-v2/translation.d.ts.map +1 -0
  107. package/dist/types/src/controls/typography.d.ts +2 -2
  108. package/dist/types/src/controls/typography.d.ts.map +1 -1
  109. package/dist/types/src/next/api-handler/index.d.ts.map +1 -1
  110. package/dist/types/src/next/client.d.ts +7 -2
  111. package/dist/types/src/next/client.d.ts.map +1 -1
  112. package/dist/types/src/next/document.d.ts +1 -2
  113. package/dist/types/src/next/document.d.ts.map +1 -1
  114. package/dist/types/src/next/index.d.ts +1 -1
  115. package/dist/types/src/next/index.d.ts.map +1 -1
  116. package/dist/types/src/next/preview-mode.d.ts +1 -2
  117. package/dist/types/src/next/preview-mode.d.ts.map +1 -1
  118. package/dist/types/src/prop-controllers/introspection.d.ts.map +1 -1
  119. package/dist/types/src/runtimes/react/components/render-hook.d.ts +0 -1
  120. package/dist/types/src/runtimes/react/components/render-hook.d.ts.map +1 -1
  121. package/dist/types/src/runtimes/react/controls/control.d.ts +0 -1
  122. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  123. package/dist/types/src/runtimes/react/controls/list.d.ts +0 -1
  124. package/dist/types/src/runtimes/react/controls/list.d.ts.map +1 -1
  125. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts +2 -2
  126. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -1
  127. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts +1 -2
  128. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.d.ts.map +1 -1
  129. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts +1 -2
  130. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.d.ts.map +1 -1
  131. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts +2 -2
  132. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  133. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts +1 -1
  134. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  135. package/dist/types/src/runtimes/react/controls/rich-text.d.ts +1 -1
  136. package/dist/types/src/runtimes/react/controls/rich-text.d.ts.map +1 -1
  137. package/dist/types/src/runtimes/react/controls/shape.d.ts +0 -1
  138. package/dist/types/src/runtimes/react/controls/shape.d.ts.map +1 -1
  139. package/dist/types/src/runtimes/react/controls/slot.d.ts +2 -2
  140. package/dist/types/src/runtimes/react/controls/slot.d.ts.map +1 -1
  141. package/dist/types/src/runtimes/react/controls/style-v2.d.ts +0 -1
  142. package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -1
  143. package/dist/types/src/runtimes/react/controls/typography.d.ts +5 -5
  144. package/dist/types/src/runtimes/react/controls/typography.d.ts.map +1 -1
  145. package/dist/types/src/runtimes/react/controls.d.ts +0 -1
  146. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  147. package/dist/types/src/runtimes/react/find-dom-node.d.ts.map +1 -1
  148. package/dist/types/src/runtimes/react/hooks/makeswift-api.d.ts +2 -1
  149. package/dist/types/src/runtimes/react/hooks/makeswift-api.d.ts.map +1 -1
  150. package/dist/types/src/runtimes/react/index.d.ts +1 -1
  151. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  152. package/dist/types/src/slate/TextAlignPlugin/index.d.ts +3 -3
  153. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -1
  154. package/dist/types/src/slate/TypographyPlugin/getValue.d.ts +1 -1
  155. package/dist/types/src/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  156. package/dist/types/src/slate/TypographyPlugin/index.d.ts.map +1 -1
  157. package/dist/types/src/slate/utils/responsive.d.ts +1 -1
  158. package/dist/types/src/slate/utils/responsive.d.ts.map +1 -1
  159. package/dist/types/src/state/makeswift-api-client.d.ts +1 -1
  160. package/dist/types/src/state/makeswift-api-client.d.ts.map +1 -1
  161. package/dist/types/src/state/modules/api-resources.d.ts.map +1 -1
  162. package/dist/types/src/state/modules/react-components.d.ts +2 -2
  163. package/dist/types/src/state/modules/react-components.d.ts.map +1 -1
  164. package/dist/types.cjs.js +1 -0
  165. package/dist/types.cjs.js.map +1 -1
  166. package/dist/types.cjs2.js +1 -5
  167. package/dist/types.cjs2.js.map +1 -1
  168. package/dist/types.es.js +1 -0
  169. package/dist/types.es.js.map +1 -1
  170. package/dist/types.es2.js +2 -6
  171. package/dist/types.es2.js.map +1 -1
  172. package/dist/typography.cjs.js.map +1 -1
  173. package/dist/typography.es.js.map +1 -1
  174. package/package.json +4 -4
package/dist/index.es.js CHANGED
@@ -157,7 +157,8 @@ function getInitialState(serializedState = {
157
157
  Table: [],
158
158
  Snippet: [],
159
159
  Page: [],
160
- Site: []
160
+ Site: [],
161
+ LocalizedGlobalElement: []
161
162
  }) {
162
163
  return new Map(Object.entries(serializedState).map(([apiResourceType, resources]) => [
163
164
  apiResourceType,
@@ -218,7 +219,7 @@ async function fetchJson(url) {
218
219
  }
219
220
  return response.json();
220
221
  }
221
- function fetchAPIResource(resourceType, resourceId) {
222
+ function fetchAPIResource(resourceType, resourceId, locale) {
222
223
  return async (dispatch, getState) => {
223
224
  const state = getState();
224
225
  if (getHasAPIResource(state, resourceType, resourceId)) {
@@ -238,6 +239,12 @@ function fetchAPIResource(resourceType, resourceId) {
238
239
  case APIResourceType.GlobalElement:
239
240
  resource = await fetchJson(`/api/makeswift/global-elements/${resourceId}`);
240
241
  break;
242
+ case APIResourceType.LocalizedGlobalElement: {
243
+ if (locale == null)
244
+ throw new Error("Locale is required to fetch LocalizedGlobalElement");
245
+ resource = await fetchJson(`/api/makeswift/localized-global-elements/${resourceId}/${locale}`);
246
+ break;
247
+ }
241
248
  case APIResourceType.PagePathnameSlice:
242
249
  resource = await fetchJson(`/api/makeswift/page-pathname-slices/${resourceId}`);
243
250
  break;
@@ -332,6 +339,13 @@ const GlobalElementFragment = `
332
339
  data
333
340
  }
334
341
  `;
342
+ const LocalizedGlobalElementFragment = `
343
+ fragment LocalizedGlobalElement on LocalizedGlobalElement {
344
+ __typename
345
+ id
346
+ data
347
+ }
348
+ `;
335
349
  const TableFragment = `
336
350
  fragment Table on Table {
337
351
  __typename
@@ -431,6 +445,15 @@ const GlobalElementQuery = `
431
445
 
432
446
  ${GlobalElementFragment}
433
447
  `;
448
+ const LocalizedGlobalElementQuery = `
449
+ query LocalizedGlobalElement($globalElementId: ID!, $locale: Locale!) {
450
+ localizedGlobalElement(globalElementId: $globalElementId, locale: $locale) {
451
+ ...LocalizedGlobalElement
452
+ }
453
+ }
454
+
455
+ ${LocalizedGlobalElementFragment}
456
+ `;
434
457
  const CreateTableRecordMutation = `
435
458
  mutation CreateTableRecord($input: CreateTableRecordInput!) {
436
459
  createTableRecord(input: $input) {
@@ -443,16 +466,22 @@ const CreateTableRecordMutation = `
443
466
  class MakeswiftClient {
444
467
  constructor({
445
468
  uri,
446
- cacheData
469
+ cacheData,
470
+ localizedResourcesMap = {},
471
+ locale
447
472
  }) {
448
473
  __publicField(this, "graphqlClient");
449
474
  __publicField(this, "makeswiftApiClient");
450
475
  __publicField(this, "subscribe");
476
+ __publicField(this, "localizedResourcesMap");
477
+ __publicField(this, "locale");
451
478
  this.graphqlClient = new GraphQLClient(uri);
452
479
  this.makeswiftApiClient = configureStore({
453
480
  serializedState: cacheData
454
481
  });
455
482
  this.subscribe = this.makeswiftApiClient.subscribe;
483
+ this.localizedResourcesMap = new Map(Object.entries(localizedResourcesMap));
484
+ this.locale = locale;
456
485
  }
457
486
  readSwatch(swatchId) {
458
487
  return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.Swatch, swatchId);
@@ -478,6 +507,21 @@ class MakeswiftClient {
478
507
  async fetchGlobalElement(globalElementId) {
479
508
  return await this.makeswiftApiClient.dispatch(fetchAPIResource(APIResourceType.GlobalElement, globalElementId));
480
509
  }
510
+ readLocalizedGlobalElement(globalElementId) {
511
+ const localizedGlobalElementId = this.getLocalizedResourceId(globalElementId);
512
+ if (localizedGlobalElementId == null)
513
+ return null;
514
+ return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.LocalizedGlobalElement, localizedGlobalElementId);
515
+ }
516
+ async fetchLocalizedGlobalElement(globalElementId) {
517
+ const locale = this.locale;
518
+ if (locale == null)
519
+ return null;
520
+ const result = await this.makeswiftApiClient.dispatch(fetchAPIResource(APIResourceType.LocalizedGlobalElement, globalElementId, locale));
521
+ if (result != null)
522
+ this.setLocalizedResourceId(globalElementId, result.id);
523
+ return result;
524
+ }
481
525
  readPagePathnameSlice(pageId) {
482
526
  return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.PagePathnameSlice, pageId);
483
527
  }
@@ -509,6 +553,13 @@ class MakeswiftClient {
509
553
  readSnippet(snippetId) {
510
554
  return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.Snippet, snippetId);
511
555
  }
556
+ getLocalizedResourceId(resourceId) {
557
+ var _a, _b;
558
+ return (_b = (_a = this.localizedResourcesMap) == null ? void 0 : _a.get(resourceId)) != null ? _b : null;
559
+ }
560
+ setLocalizedResourceId(resourceId, localizedResourceId) {
561
+ this.localizedResourcesMap.set(resourceId, localizedResourceId);
562
+ }
512
563
  }
513
564
  const Context$1 = createContext(new MakeswiftClient({
514
565
  uri: "https://api.makeswift.com/graphql"
@@ -563,7 +614,7 @@ const filterUsedSnippetProperties = ({
563
614
  function Page$1({
564
615
  document: page
565
616
  }) {
566
- var _a, _b;
617
+ var _a, _b, _c, _d, _e, _f, _g, _h;
567
618
  const isInBuilder = useIsInBuilder();
568
619
  const [snippets, setSnippets] = useState(page.snippets);
569
620
  const cachedPage = useCachedPage(isInBuilder ? page.id : null);
@@ -577,17 +628,16 @@ function Page$1({
577
628
  setSnippets(cachedPage.snippets);
578
629
  }, [cachedPage]);
579
630
  const site = useCachedSite(isInBuilder ? page.site.id : null);
631
+ const baseLocalizedPage = page.localizedPages.find(({
632
+ parentId
633
+ }) => parentId == null);
580
634
  const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
581
- const {
582
- title,
583
- description,
584
- keywords,
585
- socialImage
586
- } = page.meta;
587
- const {
588
- canonicalUrl,
589
- isIndexingBlocked
590
- } = page.seo;
635
+ const title = (_b = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.title) != null ? _b : page.meta.title;
636
+ const description = (_c = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.description) != null ? _c : page.meta.description;
637
+ const keywords = (_d = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.keywords) != null ? _d : page.meta.keywords;
638
+ const socialImage = (_e = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.socialImage) != null ? _e : page.meta.socialImage;
639
+ const canonicalUrl = (_f = baseLocalizedPage == null ? void 0 : baseLocalizedPage.seo.canonicalUrl) != null ? _f : page.seo.canonicalUrl;
640
+ const isIndexingBlocked = (_g = baseLocalizedPage == null ? void 0 : baseLocalizedPage.seo.isIndexingBlocked) != null ? _g : page.seo.isIndexingBlocked;
591
641
  const fontFamilyParamValue = useMemo(() => {
592
642
  if (site == null) {
593
643
  return page.fonts.map(({
@@ -625,10 +675,7 @@ function Page$1({
625
675
  });
626
676
  previousHeadSnippets.current = headSnippets;
627
677
  }, [headSnippets]);
628
- const baseLocalizedPage = page.localizedPages.find(({
629
- parentId
630
- }) => parentId == null);
631
- const documentId = (_b = baseLocalizedPage == null ? void 0 : baseLocalizedPage.elementTreeId) != null ? _b : page.id;
678
+ const documentId = (_h = baseLocalizedPage == null ? void 0 : baseLocalizedPage.elementTreeId) != null ? _h : page.id;
632
679
  return /* @__PURE__ */ jsxs(Fragment, {
633
680
  children: [/* @__PURE__ */ jsxs(Head, {
634
681
  children: [/* @__PURE__ */ jsx("style", {
@@ -869,7 +916,8 @@ Received "${apiKey}" instead.`);
869
916
  return response;
870
917
  }
871
918
  async getPages() {
872
- const response = await this.fetch(`/v2/pages`, {
919
+ const isUsingVersioning = this.siteVersion != null;
920
+ const response = await this.fetch(`/${isUsingVersioning ? "v3" : "v2"}/pages`, {
873
921
  headers: {
874
922
  "Makeswift-Site-Version": MakeswiftSiteVersion.Live
875
923
  }
@@ -887,7 +935,8 @@ Received "${apiKey}" instead.`);
887
935
  }
888
936
  async getSwatches(ids, preview) {
889
937
  var _a;
890
- const url = new URL(`v1/swatches/bulk`, this.apiOrigin);
938
+ const isUsingVersioning = this.siteVersion != null;
939
+ const url = new URL(`${isUsingVersioning ? "v2" : "v1"}/swatches/bulk`, this.apiOrigin);
891
940
  ids.forEach((id) => {
892
941
  url.searchParams.append("ids", id);
893
942
  });
@@ -912,7 +961,7 @@ Received "${apiKey}" instead.`);
912
961
  const swatches = await this.getSwatches(swatchIds, preview);
913
962
  return __spreadProps(__spreadValues({}, result), { swatches });
914
963
  }
915
- async introspect(element, preview) {
964
+ async introspect(element, preview, locale) {
916
965
  const runtime = this.runtime;
917
966
  const descriptors = getPropControllerDescriptors(runtime.store.getState());
918
967
  const swatchIds = /* @__PURE__ */ new Set();
@@ -921,6 +970,8 @@ Received "${apiKey}" instead.`);
921
970
  const tableIds = /* @__PURE__ */ new Set();
922
971
  const pageIds = /* @__PURE__ */ new Set();
923
972
  const globalElements = /* @__PURE__ */ new Map();
973
+ const localizedGlobalElements = /* @__PURE__ */ new Map();
974
+ const localizedResourcesMap = /* @__PURE__ */ new Map();
924
975
  const remaining = [element];
925
976
  const seen = /* @__PURE__ */ new Set();
926
977
  let current;
@@ -944,9 +995,18 @@ Received "${apiKey}" instead.`);
944
995
  };
945
996
  let element2;
946
997
  if (isElementReference(current)) {
947
- const globalElement = await this.getGlobalElement(current.value);
948
- globalElements.set(current.value, globalElement);
949
- const elementData = globalElement == null ? void 0 : globalElement.data;
998
+ const globalElementId = current.value;
999
+ const globalElement = await this.getGlobalElement(globalElementId);
1000
+ let elementData = globalElement == null ? void 0 : globalElement.data;
1001
+ if (locale) {
1002
+ const localizedGlobalElement = await this.getLocalizedGlobalElement(globalElementId, locale);
1003
+ if (localizedGlobalElement) {
1004
+ elementData = localizedGlobalElement.data;
1005
+ localizedResourcesMap.set(globalElementId, localizedGlobalElement.id);
1006
+ localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement);
1007
+ }
1008
+ }
1009
+ globalElements.set(globalElementId, globalElement);
950
1010
  if (elementData == null)
951
1011
  continue;
952
1012
  element2 = elementData;
@@ -976,7 +1036,7 @@ Received "${apiKey}" instead.`);
976
1036
  const pagePathnameSlices = pagePathnamesById.map((pagePathnameSlice) => pagePathnameSlice && __spreadProps(__spreadValues({}, pagePathnameSlice), {
977
1037
  id: Buffer.from(`Page:${pagePathnameSlice.id}`).toString("base64")
978
1038
  }));
979
- return {
1039
+ const cacheData = {
980
1040
  [APIResourceType.Swatch]: [...swatchIds].map((id) => {
981
1041
  var _a;
982
1042
  return {
@@ -1015,19 +1075,25 @@ Received "${apiKey}" instead.`);
1015
1075
  [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({
1016
1076
  id,
1017
1077
  value
1078
+ })),
1079
+ [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(([id, value]) => ({
1080
+ id,
1081
+ value
1018
1082
  }))
1019
1083
  };
1084
+ return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) };
1020
1085
  }
1021
1086
  async getPageSnapshot(pathname, {
1022
1087
  preview: previewOverride = false,
1023
1088
  unstable_locale
1024
1089
  } = {}) {
1025
1090
  var _a;
1091
+ const isUsingVersioning = this.siteVersion != null;
1026
1092
  const siteVersion = (_a = this.siteVersion) != null ? _a : previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live;
1027
1093
  const searchParams = new URLSearchParams();
1028
1094
  if (unstable_locale)
1029
1095
  searchParams.set("locale", unstable_locale);
1030
- const response = await this.fetch(`/v2/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`, {
1096
+ const response = await this.fetch(`/${isUsingVersioning ? "v3" : "v2"}/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`, {
1031
1097
  headers: { "Makeswift-Site-Version": siteVersion }
1032
1098
  });
1033
1099
  if (!response.ok) {
@@ -1037,13 +1103,21 @@ Received "${apiKey}" instead.`);
1037
1103
  throw new Error(`Failed to get page snapshot with error: "${response.statusText}"`);
1038
1104
  }
1039
1105
  const document2 = await response.json();
1040
- const cacheData = await this.introspect(document2.data, previewOverride);
1106
+ const { cacheData, localizedResourcesMap } = await this.introspect(document2.data, previewOverride, unstable_locale);
1041
1107
  const apiOrigin = this.apiOrigin.href;
1042
1108
  const preview = siteVersion === MakeswiftSiteVersion.Working;
1043
- return { document: document2, cacheData, apiOrigin, preview };
1109
+ return {
1110
+ document: document2,
1111
+ cacheData,
1112
+ apiOrigin,
1113
+ preview,
1114
+ localizedResourcesMap,
1115
+ locale: unstable_locale != null ? unstable_locale : null
1116
+ };
1044
1117
  }
1045
1118
  async getSwatch(swatchId) {
1046
- const response = await this.fetch(`v1/swatches/${swatchId}`);
1119
+ const isUsingVersioning = this.siteVersion != null;
1120
+ const response = await this.fetch(`${isUsingVersioning ? "v2" : "v1"}/swatches/${swatchId}`);
1047
1121
  if (!response.ok) {
1048
1122
  if (response.status !== 404)
1049
1123
  console.error("Failed to get swatch", await response.json());
@@ -1064,6 +1138,10 @@ Received "${apiKey}" instead.`);
1064
1138
  const result = await this.graphqlClient.request(GlobalElementQuery, { globalElementId });
1065
1139
  return result.globalElement;
1066
1140
  }
1141
+ async getLocalizedGlobalElement(globalElementId, locale) {
1142
+ const result = await this.graphqlClient.request(LocalizedGlobalElementQuery, { globalElementId, locale });
1143
+ return result.localizedGlobalElement;
1144
+ }
1067
1145
  async getPagePathnameSlice(pageId) {
1068
1146
  var _a;
1069
1147
  const result = await this.graphqlClient.request(PagePathnamesByIdQuery, { pageIds: [pageId] });
@@ -1128,7 +1206,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1128
1206
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1129
1207
  return res.json(fonts2);
1130
1208
  }
1131
- const version = "0.9.9";
1209
+ const version = "0.9.11";
1132
1210
  async function handler(req, res, { apiKey, unstable_siteVersions }) {
1133
1211
  if (req.query.secret !== apiKey) {
1134
1212
  return res.status(401).json({ message: "Unauthorized" });
@@ -1267,6 +1345,9 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
1267
1345
  if (m = matches("/global-elements/:id")) {
1268
1346
  return client.getGlobalElement(m.params.id).then(handleResource);
1269
1347
  }
1348
+ if (m = matches("/localized-global-elements/:globalElementId/:locale")) {
1349
+ return client.getLocalizedGlobalElement(m.params.globalElementId, m.params.locale).then(handleResource);
1350
+ }
1270
1351
  if (m = matches("/page-pathname-slices/:id")) {
1271
1352
  return client.getPagePathnameSlice(m.params.id).then(handleResource);
1272
1353
  }
@@ -1397,7 +1478,8 @@ const Page = memo(({
1397
1478
  }) => {
1398
1479
  const client = useMemo(() => new MakeswiftClient({
1399
1480
  uri: new URL("graphql", snapshot.apiOrigin).href,
1400
- cacheData: snapshot.cacheData
1481
+ cacheData: snapshot.cacheData,
1482
+ localizedResourcesMap: snapshot.localizedResourcesMap
1401
1483
  }), [snapshot]);
1402
1484
  const rootElements = /* @__PURE__ */ new Map([[snapshot.document.id, snapshot.document.data]]);
1403
1485
  snapshot.document.localizedPages.forEach((localizedPage) => {
@@ -2527,6 +2609,17 @@ function useGlobalElement(globalElementId) {
2527
2609
  }, [client, globalElementId]);
2528
2610
  return globalElement;
2529
2611
  }
2612
+ function useLocalizedGlobalElement(globalElementId) {
2613
+ const client = useMakeswiftClient();
2614
+ const readLocalizedGlobalElement = () => globalElementId == null ? null : client.readLocalizedGlobalElement(globalElementId);
2615
+ const localizedGlobalElement = useSyncExternalStore(client.subscribe, readLocalizedGlobalElement, readLocalizedGlobalElement);
2616
+ useEffect(() => {
2617
+ if (globalElementId != null) {
2618
+ client.fetchLocalizedGlobalElement(globalElementId).catch(console.error);
2619
+ }
2620
+ }, [client, globalElementId]);
2621
+ return localizedGlobalElement;
2622
+ }
2530
2623
  function usePagePathnameSlice(pageId) {
2531
2624
  const client = useMakeswiftClient();
2532
2625
  const readPagePathnameSlice = () => pageId == null ? null : client.readPagePathnameSlice(pageId);
@@ -4031,8 +4124,10 @@ const DisableRegisterElement = createContext(false);
4031
4124
  const ElementReference = memo(forwardRef(function ElementReference2({
4032
4125
  elementReference
4033
4126
  }, ref) {
4127
+ var _a;
4034
4128
  const globalElement = useGlobalElement(elementReference.value);
4035
- const globalElementData = globalElement == null ? void 0 : globalElement.data;
4129
+ const localizedGlobalElement = useLocalizedGlobalElement(elementReference.value);
4130
+ const globalElementData = (_a = localizedGlobalElement == null ? void 0 : localizedGlobalElement.data) != null ? _a : globalElement == null ? void 0 : globalElement.data;
4036
4131
  const elementReferenceDocument = useDocument(elementReference.key);
4037
4132
  const documentKey = elementReference.key;
4038
4133
  const documentKeys = useContext(DocumentCyclesContext);
@@ -4132,5 +4227,5 @@ const DocumentReference = memo(forwardRef(function DocumentReference2({
4132
4227
  document: document2
4133
4228
  });
4134
4229
  }));
4135
- export { Makeswift as $, Alignments as A, forwardNextDynamicRef as B, Contrasts as C, DocumentReference as D, Element$1 as E, useIsPreview as F, useFiles as G, useSwatches as H, usePagePathnameSlice as I, useElementId as J, deepEqual as K, shallowEqual as L, ElementImperativeHandle as M, StoreContext as N, MakeswiftProvider as O, PageProvider as P, ControlValue as Q, RuntimeProvider as R, Shapes as S, useBuilderEditMode as T, pollBoxModel as U, useEnhancedTypography as V, useTypographyClassName as W, getStaticPaths as X, getStaticProps as Y, getServerSideProps as Z, Page as _, ReactRuntime as a, PreviewModeScript as a0, Document$1 as a1, MakeswiftApiHandler as a2, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useResponsiveStyle as n, useResponsiveWidth as o, useResponsiveTextStyle as p, colorToString as q, useBreakpoints as r, Sizes as s, useFormContext as t, useIsInBuilder as u, useResponsiveGridItem as v, useTable as w, useMakeswiftClient as x, Provider as y, useFile as z };
4230
+ export { Makeswift as $, Alignments as A, forwardNextDynamicRef as B, Contrasts as C, DocumentReference as D, Element$1 as E, useIsPreview as F, useFiles as G, useSwatches as H, usePagePathnameSlice as I, useElementId as J, shallowEqual as K, deepEqual as L, ElementImperativeHandle as M, StoreContext as N, MakeswiftProvider as O, PageProvider as P, ControlValue as Q, RuntimeProvider as R, Shapes as S, useBuilderEditMode as T, pollBoxModel as U, useEnhancedTypography as V, useTypographyClassName as W, getStaticPaths as X, getStaticProps as Y, getServerSideProps as Z, Page as _, ReactRuntime as a, PreviewModeScript as a0, Document$1 as a1, MakeswiftApiHandler as a2, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useResponsiveStyle as n, useResponsiveWidth as o, useResponsiveTextStyle as p, colorToString as q, useBreakpoints as r, Sizes as s, useFormContext as t, useIsInBuilder as u, useResponsiveGridItem as v, useTable as w, useMakeswiftClient as x, Provider as y, useFile as z };
4136
4231
  //# sourceMappingURL=index.es.js.map