@absolutejs/absolute 0.19.0-beta.431 → 0.19.0-beta.432

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue/index.js CHANGED
@@ -1744,7 +1744,9 @@ var Image_default = "../Image-0pe96k20.vue";
1744
1744
  // src/vue/components/SuspenseSlot.ts
1745
1745
  import {
1746
1746
  defineComponent,
1747
- h
1747
+ h,
1748
+ onMounted,
1749
+ ref
1748
1750
  } from "vue";
1749
1751
  var renderVueNodesToHtml = async (nodes) => {
1750
1752
  const { createSSRApp, h: createVNode } = await import("vue");
@@ -1774,6 +1776,9 @@ var SuspenseSlot = defineComponent({
1774
1776
  timeoutMs: { default: undefined, type: Number }
1775
1777
  },
1776
1778
  setup(props, { slots }) {
1779
+ const isResolved = ref(false);
1780
+ const resolvedValue = ref(undefined);
1781
+ const hasError = ref(false);
1777
1782
  const usesFrameworkSlots = hasFrameworkSlots(slots.default, slots.fallback, slots.error, props.promise);
1778
1783
  if (typeof window === "undefined") {
1779
1784
  if (!usesFrameworkSlots && props.resolve) {
@@ -1790,8 +1795,11 @@ var SuspenseSlot = defineComponent({
1790
1795
  resolve: async () => {
1791
1796
  try {
1792
1797
  const value = props.resolve !== undefined ? await props.resolve() : props.promise !== undefined ? await props.promise : undefined;
1793
- const nodes = slots.default?.({ value }) ?? [];
1794
- return renderVueNodesToHtml(nodes);
1798
+ return {
1799
+ html: "",
1800
+ kind: "vue-suspense",
1801
+ value
1802
+ };
1795
1803
  } catch (error) {
1796
1804
  const errorNodes = slots.error?.({ error });
1797
1805
  if (errorNodes !== undefined) {
@@ -1807,6 +1815,26 @@ var SuspenseSlot = defineComponent({
1807
1815
  });
1808
1816
  }
1809
1817
  }
1818
+ if (typeof window !== "undefined" && usesFrameworkSlots) {
1819
+ const consumers = window.__ABS_SLOT_CONSUMERS__ = window.__ABS_SLOT_CONSUMERS__ ?? {};
1820
+ let runtimeReady = false;
1821
+ consumers[props.id] = (payload) => {
1822
+ if (!runtimeReady)
1823
+ return false;
1824
+ if (!payload || typeof payload !== "object" || payload.kind !== "vue-suspense") {
1825
+ return false;
1826
+ }
1827
+ const candidate = payload;
1828
+ hasError.value = candidate.state === "error";
1829
+ resolvedValue.value = candidate.value;
1830
+ isResolved.value = candidate.state !== "error";
1831
+ return true;
1832
+ };
1833
+ onMounted(() => {
1834
+ runtimeReady = true;
1835
+ window.__ABS_SLOT_FLUSH__?.();
1836
+ });
1837
+ }
1810
1838
  return () => {
1811
1839
  if (!usesFrameworkSlots) {
1812
1840
  return h("div", {
@@ -1820,7 +1848,7 @@ var SuspenseSlot = defineComponent({
1820
1848
  class: props.className,
1821
1849
  "data-absolute-slot": "true",
1822
1850
  id: `slot-${props.id}`
1823
- }, slots.fallback?.() ?? undefined);
1851
+ }, hasError.value ? slots.error?.({ error: undefined }) ?? slots.fallback?.() ?? undefined : isResolved.value ? slots.default?.({ value: resolvedValue.value }) ?? undefined : slots.fallback?.() ?? undefined);
1824
1852
  };
1825
1853
  }
1826
1854
  });
@@ -1873,6 +1901,11 @@ var streamSwapRuntime = () => {
1873
1901
  return false;
1874
1902
  return payload.kind === "angular-defer";
1875
1903
  };
1904
+ const isVueSuspensePayload = (payload) => {
1905
+ if (!payload || typeof payload !== "object")
1906
+ return false;
1907
+ return payload.kind === "vue-suspense";
1908
+ };
1876
1909
  const resolveHtml = (payload) => {
1877
1910
  if (!payload || typeof payload !== "object") {
1878
1911
  return typeof payload === "string" ? payload : "";
@@ -1896,7 +1929,7 @@ var streamSwapRuntime = () => {
1896
1929
  return;
1897
1930
  }
1898
1931
  }
1899
- if (isAngularDeferPayload(payload)) {
1932
+ if (isAngularDeferPayload(payload) || isVueSuspensePayload(payload)) {
1900
1933
  pending[id] = payload;
1901
1934
  return;
1902
1935
  }
@@ -2801,5 +2834,5 @@ export {
2801
2834
  Image_default as Image
2802
2835
  };
2803
2836
 
2804
- //# debugId=3C988E739948010664756E2164756E21
2837
+ //# debugId=5E472DCDD9E5F0DA64756E2164756E21
2805
2838
  //# sourceMappingURL=index.js.map