@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.cjs.js CHANGED
@@ -191,7 +191,8 @@ function getInitialState(serializedState = {
191
191
  Table: [],
192
192
  Snippet: [],
193
193
  Page: [],
194
- Site: []
194
+ Site: [],
195
+ LocalizedGlobalElement: []
195
196
  }) {
196
197
  return new Map(Object.entries(serializedState).map(([apiResourceType, resources]) => [
197
198
  apiResourceType,
@@ -252,7 +253,7 @@ async function fetchJson(url) {
252
253
  }
253
254
  return response.json();
254
255
  }
255
- function fetchAPIResource(resourceType, resourceId) {
256
+ function fetchAPIResource(resourceType, resourceId, locale) {
256
257
  return async (dispatch, getState) => {
257
258
  const state = getState();
258
259
  if (getHasAPIResource(state, resourceType, resourceId)) {
@@ -272,6 +273,12 @@ function fetchAPIResource(resourceType, resourceId) {
272
273
  case types.APIResourceType.GlobalElement:
273
274
  resource = await fetchJson(`/api/makeswift/global-elements/${resourceId}`);
274
275
  break;
276
+ case types.APIResourceType.LocalizedGlobalElement: {
277
+ if (locale == null)
278
+ throw new Error("Locale is required to fetch LocalizedGlobalElement");
279
+ resource = await fetchJson(`/api/makeswift/localized-global-elements/${resourceId}/${locale}`);
280
+ break;
281
+ }
275
282
  case types.APIResourceType.PagePathnameSlice:
276
283
  resource = await fetchJson(`/api/makeswift/page-pathname-slices/${resourceId}`);
277
284
  break;
@@ -366,6 +373,13 @@ const GlobalElementFragment = `
366
373
  data
367
374
  }
368
375
  `;
376
+ const LocalizedGlobalElementFragment = `
377
+ fragment LocalizedGlobalElement on LocalizedGlobalElement {
378
+ __typename
379
+ id
380
+ data
381
+ }
382
+ `;
369
383
  const TableFragment = `
370
384
  fragment Table on Table {
371
385
  __typename
@@ -465,6 +479,15 @@ const GlobalElementQuery = `
465
479
 
466
480
  ${GlobalElementFragment}
467
481
  `;
482
+ const LocalizedGlobalElementQuery = `
483
+ query LocalizedGlobalElement($globalElementId: ID!, $locale: Locale!) {
484
+ localizedGlobalElement(globalElementId: $globalElementId, locale: $locale) {
485
+ ...LocalizedGlobalElement
486
+ }
487
+ }
488
+
489
+ ${LocalizedGlobalElementFragment}
490
+ `;
468
491
  const CreateTableRecordMutation = `
469
492
  mutation CreateTableRecord($input: CreateTableRecordInput!) {
470
493
  createTableRecord(input: $input) {
@@ -477,16 +500,22 @@ const CreateTableRecordMutation = `
477
500
  class MakeswiftClient {
478
501
  constructor({
479
502
  uri,
480
- cacheData
503
+ cacheData,
504
+ localizedResourcesMap = {},
505
+ locale
481
506
  }) {
482
507
  __publicField(this, "graphqlClient");
483
508
  __publicField(this, "makeswiftApiClient");
484
509
  __publicField(this, "subscribe");
510
+ __publicField(this, "localizedResourcesMap");
511
+ __publicField(this, "locale");
485
512
  this.graphqlClient = new GraphQLClient(uri);
486
513
  this.makeswiftApiClient = configureStore({
487
514
  serializedState: cacheData
488
515
  });
489
516
  this.subscribe = this.makeswiftApiClient.subscribe;
517
+ this.localizedResourcesMap = new Map(Object.entries(localizedResourcesMap));
518
+ this.locale = locale;
490
519
  }
491
520
  readSwatch(swatchId) {
492
521
  return getAPIResource(this.makeswiftApiClient.getState(), types.APIResourceType.Swatch, swatchId);
@@ -512,6 +541,21 @@ class MakeswiftClient {
512
541
  async fetchGlobalElement(globalElementId) {
513
542
  return await this.makeswiftApiClient.dispatch(fetchAPIResource(types.APIResourceType.GlobalElement, globalElementId));
514
543
  }
544
+ readLocalizedGlobalElement(globalElementId) {
545
+ const localizedGlobalElementId = this.getLocalizedResourceId(globalElementId);
546
+ if (localizedGlobalElementId == null)
547
+ return null;
548
+ return getAPIResource(this.makeswiftApiClient.getState(), types.APIResourceType.LocalizedGlobalElement, localizedGlobalElementId);
549
+ }
550
+ async fetchLocalizedGlobalElement(globalElementId) {
551
+ const locale = this.locale;
552
+ if (locale == null)
553
+ return null;
554
+ const result = await this.makeswiftApiClient.dispatch(fetchAPIResource(types.APIResourceType.LocalizedGlobalElement, globalElementId, locale));
555
+ if (result != null)
556
+ this.setLocalizedResourceId(globalElementId, result.id);
557
+ return result;
558
+ }
515
559
  readPagePathnameSlice(pageId) {
516
560
  return getAPIResource(this.makeswiftApiClient.getState(), types.APIResourceType.PagePathnameSlice, pageId);
517
561
  }
@@ -543,6 +587,13 @@ class MakeswiftClient {
543
587
  readSnippet(snippetId) {
544
588
  return getAPIResource(this.makeswiftApiClient.getState(), types.APIResourceType.Snippet, snippetId);
545
589
  }
590
+ getLocalizedResourceId(resourceId) {
591
+ var _a, _b;
592
+ return (_b = (_a = this.localizedResourcesMap) == null ? void 0 : _a.get(resourceId)) != null ? _b : null;
593
+ }
594
+ setLocalizedResourceId(resourceId, localizedResourceId) {
595
+ this.localizedResourcesMap.set(resourceId, localizedResourceId);
596
+ }
546
597
  }
547
598
  const Context$1 = React.createContext(new MakeswiftClient({
548
599
  uri: "https://api.makeswift.com/graphql"
@@ -597,7 +648,7 @@ const filterUsedSnippetProperties = ({
597
648
  function Page$1({
598
649
  document: page
599
650
  }) {
600
- var _a, _b;
651
+ var _a, _b, _c, _d, _e, _f, _g, _h;
601
652
  const isInBuilder = useIsInBuilder();
602
653
  const [snippets, setSnippets] = React.useState(page.snippets);
603
654
  const cachedPage = useCachedPage(isInBuilder ? page.id : null);
@@ -611,17 +662,16 @@ function Page$1({
611
662
  setSnippets(cachedPage.snippets);
612
663
  }, [cachedPage]);
613
664
  const site = useCachedSite(isInBuilder ? page.site.id : null);
665
+ const baseLocalizedPage = page.localizedPages.find(({
666
+ parentId
667
+ }) => parentId == null);
614
668
  const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
615
- const {
616
- title,
617
- description,
618
- keywords,
619
- socialImage
620
- } = page.meta;
621
- const {
622
- canonicalUrl,
623
- isIndexingBlocked
624
- } = page.seo;
669
+ const title = (_b = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.title) != null ? _b : page.meta.title;
670
+ const description = (_c = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.description) != null ? _c : page.meta.description;
671
+ const keywords = (_d = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.keywords) != null ? _d : page.meta.keywords;
672
+ const socialImage = (_e = baseLocalizedPage == null ? void 0 : baseLocalizedPage.meta.socialImage) != null ? _e : page.meta.socialImage;
673
+ const canonicalUrl = (_f = baseLocalizedPage == null ? void 0 : baseLocalizedPage.seo.canonicalUrl) != null ? _f : page.seo.canonicalUrl;
674
+ const isIndexingBlocked = (_g = baseLocalizedPage == null ? void 0 : baseLocalizedPage.seo.isIndexingBlocked) != null ? _g : page.seo.isIndexingBlocked;
625
675
  const fontFamilyParamValue = React.useMemo(() => {
626
676
  if (site == null) {
627
677
  return page.fonts.map(({
@@ -659,10 +709,7 @@ function Page$1({
659
709
  });
660
710
  previousHeadSnippets.current = headSnippets;
661
711
  }, [headSnippets]);
662
- const baseLocalizedPage = page.localizedPages.find(({
663
- parentId
664
- }) => parentId == null);
665
- const documentId = (_b = baseLocalizedPage == null ? void 0 : baseLocalizedPage.elementTreeId) != null ? _b : page.id;
712
+ const documentId = (_h = baseLocalizedPage == null ? void 0 : baseLocalizedPage.elementTreeId) != null ? _h : page.id;
666
713
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
667
714
  children: [/* @__PURE__ */ jsxRuntime.jsxs(Head__default["default"], {
668
715
  children: [/* @__PURE__ */ jsxRuntime.jsx("style", {
@@ -903,7 +950,8 @@ Received "${apiKey}" instead.`);
903
950
  return response;
904
951
  }
905
952
  async getPages() {
906
- const response = await this.fetch(`/v2/pages`, {
953
+ const isUsingVersioning = this.siteVersion != null;
954
+ const response = await this.fetch(`/${isUsingVersioning ? "v3" : "v2"}/pages`, {
907
955
  headers: {
908
956
  "Makeswift-Site-Version": MakeswiftSiteVersion.Live
909
957
  }
@@ -921,7 +969,8 @@ Received "${apiKey}" instead.`);
921
969
  }
922
970
  async getSwatches(ids, preview) {
923
971
  var _a;
924
- const url = new URL(`v1/swatches/bulk`, this.apiOrigin);
972
+ const isUsingVersioning = this.siteVersion != null;
973
+ const url = new URL(`${isUsingVersioning ? "v2" : "v1"}/swatches/bulk`, this.apiOrigin);
925
974
  ids.forEach((id) => {
926
975
  url.searchParams.append("ids", id);
927
976
  });
@@ -946,7 +995,7 @@ Received "${apiKey}" instead.`);
946
995
  const swatches = await this.getSwatches(swatchIds, preview);
947
996
  return __spreadProps(__spreadValues({}, result), { swatches });
948
997
  }
949
- async introspect(element, preview) {
998
+ async introspect(element, preview, locale) {
950
999
  const runtime = this.runtime;
951
1000
  const descriptors = reactPage.getPropControllerDescriptors(runtime.store.getState());
952
1001
  const swatchIds = /* @__PURE__ */ new Set();
@@ -955,6 +1004,8 @@ Received "${apiKey}" instead.`);
955
1004
  const tableIds = /* @__PURE__ */ new Set();
956
1005
  const pageIds = /* @__PURE__ */ new Set();
957
1006
  const globalElements = /* @__PURE__ */ new Map();
1007
+ const localizedGlobalElements = /* @__PURE__ */ new Map();
1008
+ const localizedResourcesMap = /* @__PURE__ */ new Map();
958
1009
  const remaining = [element];
959
1010
  const seen = /* @__PURE__ */ new Set();
960
1011
  let current;
@@ -978,9 +1029,18 @@ Received "${apiKey}" instead.`);
978
1029
  };
979
1030
  let element2;
980
1031
  if (reactPage.isElementReference(current)) {
981
- const globalElement = await this.getGlobalElement(current.value);
982
- globalElements.set(current.value, globalElement);
983
- const elementData = globalElement == null ? void 0 : globalElement.data;
1032
+ const globalElementId = current.value;
1033
+ const globalElement = await this.getGlobalElement(globalElementId);
1034
+ let elementData = globalElement == null ? void 0 : globalElement.data;
1035
+ if (locale) {
1036
+ const localizedGlobalElement = await this.getLocalizedGlobalElement(globalElementId, locale);
1037
+ if (localizedGlobalElement) {
1038
+ elementData = localizedGlobalElement.data;
1039
+ localizedResourcesMap.set(globalElementId, localizedGlobalElement.id);
1040
+ localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement);
1041
+ }
1042
+ }
1043
+ globalElements.set(globalElementId, globalElement);
984
1044
  if (elementData == null)
985
1045
  continue;
986
1046
  element2 = elementData;
@@ -1010,7 +1070,7 @@ Received "${apiKey}" instead.`);
1010
1070
  const pagePathnameSlices = pagePathnamesById.map((pagePathnameSlice) => pagePathnameSlice && __spreadProps(__spreadValues({}, pagePathnameSlice), {
1011
1071
  id: Buffer.from(`Page:${pagePathnameSlice.id}`).toString("base64")
1012
1072
  }));
1013
- return {
1073
+ const cacheData = {
1014
1074
  [types.APIResourceType.Swatch]: [...swatchIds].map((id) => {
1015
1075
  var _a;
1016
1076
  return {
@@ -1049,19 +1109,25 @@ Received "${apiKey}" instead.`);
1049
1109
  [types.APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({
1050
1110
  id,
1051
1111
  value
1112
+ })),
1113
+ [types.APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(([id, value]) => ({
1114
+ id,
1115
+ value
1052
1116
  }))
1053
1117
  };
1118
+ return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) };
1054
1119
  }
1055
1120
  async getPageSnapshot(pathname, {
1056
1121
  preview: previewOverride = false,
1057
1122
  unstable_locale
1058
1123
  } = {}) {
1059
1124
  var _a;
1125
+ const isUsingVersioning = this.siteVersion != null;
1060
1126
  const siteVersion = (_a = this.siteVersion) != null ? _a : previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live;
1061
1127
  const searchParams = new URLSearchParams();
1062
1128
  if (unstable_locale)
1063
1129
  searchParams.set("locale", unstable_locale);
1064
- const response = await this.fetch(`/v2/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`, {
1130
+ const response = await this.fetch(`/${isUsingVersioning ? "v3" : "v2"}/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`, {
1065
1131
  headers: { "Makeswift-Site-Version": siteVersion }
1066
1132
  });
1067
1133
  if (!response.ok) {
@@ -1071,13 +1137,21 @@ Received "${apiKey}" instead.`);
1071
1137
  throw new Error(`Failed to get page snapshot with error: "${response.statusText}"`);
1072
1138
  }
1073
1139
  const document2 = await response.json();
1074
- const cacheData = await this.introspect(document2.data, previewOverride);
1140
+ const { cacheData, localizedResourcesMap } = await this.introspect(document2.data, previewOverride, unstable_locale);
1075
1141
  const apiOrigin = this.apiOrigin.href;
1076
1142
  const preview = siteVersion === MakeswiftSiteVersion.Working;
1077
- return { document: document2, cacheData, apiOrigin, preview };
1143
+ return {
1144
+ document: document2,
1145
+ cacheData,
1146
+ apiOrigin,
1147
+ preview,
1148
+ localizedResourcesMap,
1149
+ locale: unstable_locale != null ? unstable_locale : null
1150
+ };
1078
1151
  }
1079
1152
  async getSwatch(swatchId) {
1080
- const response = await this.fetch(`v1/swatches/${swatchId}`);
1153
+ const isUsingVersioning = this.siteVersion != null;
1154
+ const response = await this.fetch(`${isUsingVersioning ? "v2" : "v1"}/swatches/${swatchId}`);
1081
1155
  if (!response.ok) {
1082
1156
  if (response.status !== 404)
1083
1157
  console.error("Failed to get swatch", await response.json());
@@ -1098,6 +1172,10 @@ Received "${apiKey}" instead.`);
1098
1172
  const result = await this.graphqlClient.request(GlobalElementQuery, { globalElementId });
1099
1173
  return result.globalElement;
1100
1174
  }
1175
+ async getLocalizedGlobalElement(globalElementId, locale) {
1176
+ const result = await this.graphqlClient.request(LocalizedGlobalElementQuery, { globalElementId, locale });
1177
+ return result.localizedGlobalElement;
1178
+ }
1101
1179
  async getPagePathnameSlice(pageId) {
1102
1180
  var _a;
1103
1181
  const result = await this.graphqlClient.request(PagePathnamesByIdQuery, { pageIds: [pageId] });
@@ -1162,7 +1240,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1162
1240
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1163
1241
  return res.json(fonts2);
1164
1242
  }
1165
- const version = "0.9.9";
1243
+ const version = "0.9.11";
1166
1244
  async function handler(req, res, { apiKey, unstable_siteVersions }) {
1167
1245
  if (req.query.secret !== apiKey) {
1168
1246
  return res.status(401).json({ message: "Unauthorized" });
@@ -1301,6 +1379,9 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
1301
1379
  if (m = matches("/global-elements/:id")) {
1302
1380
  return client.getGlobalElement(m.params.id).then(handleResource);
1303
1381
  }
1382
+ if (m = matches("/localized-global-elements/:globalElementId/:locale")) {
1383
+ return client.getLocalizedGlobalElement(m.params.globalElementId, m.params.locale).then(handleResource);
1384
+ }
1304
1385
  if (m = matches("/page-pathname-slices/:id")) {
1305
1386
  return client.getPagePathnameSlice(m.params.id).then(handleResource);
1306
1387
  }
@@ -1431,7 +1512,8 @@ const Page = React.memo(({
1431
1512
  }) => {
1432
1513
  const client = React.useMemo(() => new MakeswiftClient({
1433
1514
  uri: new URL("graphql", snapshot.apiOrigin).href,
1434
- cacheData: snapshot.cacheData
1515
+ cacheData: snapshot.cacheData,
1516
+ localizedResourcesMap: snapshot.localizedResourcesMap
1435
1517
  }), [snapshot]);
1436
1518
  const rootElements = /* @__PURE__ */ new Map([[snapshot.document.id, snapshot.document.data]]);
1437
1519
  snapshot.document.localizedPages.forEach((localizedPage) => {
@@ -2587,6 +2669,17 @@ function useGlobalElement(globalElementId) {
2587
2669
  }, [client, globalElementId]);
2588
2670
  return globalElement;
2589
2671
  }
2672
+ function useLocalizedGlobalElement(globalElementId) {
2673
+ const client = useMakeswiftClient();
2674
+ const readLocalizedGlobalElement = () => globalElementId == null ? null : client.readLocalizedGlobalElement(globalElementId);
2675
+ const localizedGlobalElement = shim.useSyncExternalStore(client.subscribe, readLocalizedGlobalElement, readLocalizedGlobalElement);
2676
+ React.useEffect(() => {
2677
+ if (globalElementId != null) {
2678
+ client.fetchLocalizedGlobalElement(globalElementId).catch(console.error);
2679
+ }
2680
+ }, [client, globalElementId]);
2681
+ return localizedGlobalElement;
2682
+ }
2590
2683
  function usePagePathnameSlice(pageId) {
2591
2684
  const client = useMakeswiftClient();
2592
2685
  const readPagePathnameSlice = () => pageId == null ? null : client.readPagePathnameSlice(pageId);
@@ -4103,8 +4196,10 @@ const DisableRegisterElement = React.createContext(false);
4103
4196
  const ElementReference = React.memo(React.forwardRef(function ElementReference2({
4104
4197
  elementReference
4105
4198
  }, ref) {
4199
+ var _a;
4106
4200
  const globalElement = useGlobalElement(elementReference.value);
4107
- const globalElementData = globalElement == null ? void 0 : globalElement.data;
4201
+ const localizedGlobalElement = useLocalizedGlobalElement(elementReference.value);
4202
+ const globalElementData = (_a = localizedGlobalElement == null ? void 0 : localizedGlobalElement.data) != null ? _a : globalElement == null ? void 0 : globalElement.data;
4108
4203
  const elementReferenceDocument = useDocument(elementReference.key);
4109
4204
  const documentKey = elementReference.key;
4110
4205
  const documentKeys = React.useContext(DocumentCyclesContext);