@alignable/bifrost 1.0.27 → 1.0.28

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.
@@ -153,8 +153,14 @@ async function wrappedOnBeforeRenderClient(pageContext) {
153
153
  (resolve) => document.addEventListener("DOMContentLoaded", () => resolve(null))
154
154
  );
155
155
  }
156
+ const proxiedBody = document.getElementById("proxied-body");
157
+ if (!proxiedBody) {
158
+ throw new Error(
159
+ "proxied-body not found in DOM after SSR. This likely means the Layout threw during SSR (e.g. accessing `window` or `document`). Fix the SSR error in your Layout component."
160
+ );
161
+ }
156
162
  pageContext._turbolinksProxy = {
157
- body: document.getElementById("proxied-body")
163
+ body: proxiedBody
158
164
  };
159
165
  Turbolinks._vpsCachePageContext({
160
166
  proxyLayoutInfo: pageContext.proxyLayoutInfo
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/turbolinks/mergeHead.ts","../../../renderer/wrapped/onBeforeRenderClient.ts"],"sourcesContent":["import { createScriptElement } from \"./util\";\n\ninterface ElementDetails {\n tracked: boolean;\n}\nconst allHeadScriptsEverRun: { [outerHTML: string]: ElementDetails } = {};\nlet firstMerge = true;\nlet lastTrackedScriptSignature: string;\n\nexport function recordExistingHeadScripts(categorizedHead?: CategorizedHead) {\n categorizedHead ||= categorizeHead(document.head);\n // record all existing head scripts as having been run, because they were run by browser, not mergeHead\n for (const element of categorizedHead.scripts) {\n allHeadScriptsEverRun[element.outerHTML] = {\n tracked: elementIsTracked(element),\n };\n }\n lastTrackedScriptSignature =\n lastTrackedScriptSignature || trackedElementSignature(categorizedHead);\n firstMerge = false;\n}\n\n// Returns function which resolves when all new blocking head scripts have loaded\nexport function mergeHead(head: HTMLHeadElement) {\n const newHead = categorizeHead(head);\n const oldHead = categorizeHead(document.head);\n const reload = () => {\n window.Turbolinks.controller.viewInvalidated();\n return {\n waitForReload: () => new Promise<void>(() => {}),\n waitForHeadScripts: () => new Promise<void>(() => {}),\n };\n };\n\n if (\n head\n .querySelector('meta[name=\"turbolinks-visit-control\"]')\n ?.getAttribute(\"content\") === \"reload\"\n ) {\n return reload();\n }\n\n if (!firstMerge) {\n // IMPORTANT: we allow first merge to always proceed without reload\n const newTrackedScriptSignature = trackedElementSignature(newHead);\n if (lastTrackedScriptSignature !== newTrackedScriptSignature) {\n return reload();\n }\n }\n firstMerge = false;\n lastTrackedScriptSignature =\n lastTrackedScriptSignature || trackedElementSignature(newHead);\n\n copyNewHeadStylesheetElements(newHead.stylesheets, oldHead.stylesheets);\n removeCurrentHeadProvisionalElements(oldHead.provisional);\n copyNewHeadProvisionalElements(newHead.provisional);\n\n return {\n waitForReload: () => Promise.resolve(),\n waitForHeadScripts: copyNewHeadScriptElements(newHead.scripts),\n };\n}\n\nfunction trackedElementSignature(head: CategorizedHead) {\n return [...head.scripts, ...head.stylesheets]\n .filter(elementIsTracked)\n .map((s) => s.outerHTML)\n .join();\n}\n\nfunction copyNewHeadStylesheetElements(next: Element[], prev: Element[]) {\n const existing = prev.map((s) => s.outerHTML);\n for (const element of next) {\n if (!existing.includes(element.outerHTML)) {\n document.head.appendChild(element);\n }\n }\n}\n\nfunction copyNewHeadScriptElements(next: Element[]): () => Promise<void> {\n const deferredScripts: Element[] = [];\n let blockingLoaded: boolean[] = [];\n const scriptsLoadedPromise = new Promise<void>((onScriptsLoaded) => {\n for (const element of next as HTMLScriptElement[]) {\n const runBefore = element.outerHTML in allHeadScriptsEverRun;\n if (!runBefore) {\n let cb;\n if (!element.defer && element.src) {\n const idx = blockingLoaded.length;\n cb = () => {\n blockingLoaded[idx] = true;\n if (blockingLoaded.every((v) => v)) {\n onScriptsLoaded();\n }\n };\n blockingLoaded.push(false);\n }\n const newElement = createScriptElement(element, cb);\n if (element.defer) {\n deferredScripts.push(newElement);\n } else {\n document.head.appendChild(newElement);\n }\n allHeadScriptsEverRun[element.outerHTML] = {\n tracked: elementIsTracked(element),\n };\n }\n }\n if (blockingLoaded.length === 0) {\n // raf waits for react to finish\n onScriptsLoaded();\n }\n });\n return () => {\n deferredScripts.forEach((s) => document.head.appendChild(s));\n return scriptsLoadedPromise;\n };\n}\n\nfunction removeCurrentHeadProvisionalElements(prev: Element[]) {\n for (const element of prev) {\n document.head.removeChild(element);\n }\n}\n\nfunction copyNewHeadProvisionalElements(next: Element[]) {\n for (const element of next) {\n document.head.appendChild(element);\n }\n}\n\nfunction elementIsTracked(element: Element) {\n return element.getAttribute(\"data-turbolinks-track\") == \"reload\";\n}\n\nfunction elementIsScript(element: Element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"script\";\n}\n\nfunction elementIsStylesheet(element: Element) {\n const tagName = element.tagName.toLowerCase();\n return (\n tagName == \"style\" ||\n (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n );\n}\n\nfunction elementIsFavicon(element: Element) {\n const tagName = element.tagName.toLowerCase();\n\n return tagName == \"link\" && element.getAttribute(\"rel\") == \"icon\";\n}\n\nfunction categorizeHead(head: ParentNode) {\n const scripts = [];\n const stylesheets = [];\n const provisional = [];\n for (const element of head.children) {\n // we want to keep the same favicon on page transitions\n if (elementIsFavicon(element)) {\n continue;\n }\n\n if (elementIsScript(element)) {\n scripts.push(element);\n } else if (elementIsStylesheet(element)) {\n stylesheets.push(element);\n } else {\n provisional.push(element);\n }\n }\n return { scripts, stylesheets, provisional };\n}\ntype CategorizedHead = ReturnType<typeof categorizeHead>;\n","import \"../../lib/type\";\nimport type { PageContextClient } from \"vike/types\";\nimport { Turbolinks } from \"../../lib/turbolinks\";\nimport {\n mergeHead,\n recordExistingHeadScripts,\n} from \"../../lib/turbolinks/mergeHead\";\nimport {\n setBodyAttributes,\n getElementAttributes,\n} from \"../../lib/elementUtils\";\n\nexport default async function wrappedOnBeforeRenderClient(\n pageContext: PageContextClient\n) {\n if (pageContext.isHydration) {\n // Vike scripts load async so can run before document.body exists. we need to delay rendering.\n // This is only an issue if user sets `injectScriptsAt: \"HTML_BEGIN\"` in +config.ts\n if (document.readyState === \"loading\") {\n await new Promise((resolve) =>\n document.addEventListener(\"DOMContentLoaded\", () => resolve(null))\n );\n }\n pageContext._turbolinksProxy = {\n body: document.getElementById(\"proxied-body\")!,\n };\n Turbolinks._vpsCachePageContext({\n proxyLayoutInfo: pageContext.proxyLayoutInfo,\n });\n recordExistingHeadScripts();\n return;\n }\n\n if (pageContext?._snapshot) {\n if (pageContext.isHydration) {\n throw new Error(\n \"restoration visit should never happen on initial render\"\n );\n }\n const { proxyLayoutInfo } = pageContext._snapshot.pageContext;\n const { bodyEl, headEl } = pageContext._snapshot;\n const proxyBodyEl = bodyEl.querySelector(\"#proxied-body\")!;\n if (!proxyBodyEl || !(proxyBodyEl instanceof HTMLElement)) {\n throw new Error(\"proxied body not found in cached snapshot\");\n }\n pageContext.proxyLayoutInfo = proxyLayoutInfo;\n pageContext._turbolinksProxy = {\n bodyAttrs: getElementAttributes(bodyEl),\n body: proxyBodyEl,\n head: headEl,\n };\n }\n const { head, bodyAttrs } = pageContext._turbolinksProxy!;\n pageContext._shouldEmitBeforeRender = true;\n\n await Turbolinks._vikeBeforeRender(pageContext._turbolinksVisit, {\n proxyLayoutInfo: pageContext.proxyLayoutInfo,\n });\n const { waitForReload, waitForHeadScripts } = mergeHead(head!);\n\n // If a full reload is required, wait for it here\n await waitForReload();\n pageContext._waitForHeadScripts = waitForHeadScripts;\n\n if (bodyAttrs) setBodyAttributes(bodyAttrs);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../lib/turbolinks/mergeHead.ts","../../../renderer/wrapped/onBeforeRenderClient.ts"],"sourcesContent":["import { createScriptElement } from \"./util\";\n\ninterface ElementDetails {\n tracked: boolean;\n}\nconst allHeadScriptsEverRun: { [outerHTML: string]: ElementDetails } = {};\nlet firstMerge = true;\nlet lastTrackedScriptSignature: string;\n\nexport function recordExistingHeadScripts(categorizedHead?: CategorizedHead) {\n categorizedHead ||= categorizeHead(document.head);\n // record all existing head scripts as having been run, because they were run by browser, not mergeHead\n for (const element of categorizedHead.scripts) {\n allHeadScriptsEverRun[element.outerHTML] = {\n tracked: elementIsTracked(element),\n };\n }\n lastTrackedScriptSignature =\n lastTrackedScriptSignature || trackedElementSignature(categorizedHead);\n firstMerge = false;\n}\n\n// Returns function which resolves when all new blocking head scripts have loaded\nexport function mergeHead(head: HTMLHeadElement) {\n const newHead = categorizeHead(head);\n const oldHead = categorizeHead(document.head);\n const reload = () => {\n window.Turbolinks.controller.viewInvalidated();\n return {\n waitForReload: () => new Promise<void>(() => {}),\n waitForHeadScripts: () => new Promise<void>(() => {}),\n };\n };\n\n if (\n head\n .querySelector('meta[name=\"turbolinks-visit-control\"]')\n ?.getAttribute(\"content\") === \"reload\"\n ) {\n return reload();\n }\n\n if (!firstMerge) {\n // IMPORTANT: we allow first merge to always proceed without reload\n const newTrackedScriptSignature = trackedElementSignature(newHead);\n if (lastTrackedScriptSignature !== newTrackedScriptSignature) {\n return reload();\n }\n }\n firstMerge = false;\n lastTrackedScriptSignature =\n lastTrackedScriptSignature || trackedElementSignature(newHead);\n\n copyNewHeadStylesheetElements(newHead.stylesheets, oldHead.stylesheets);\n removeCurrentHeadProvisionalElements(oldHead.provisional);\n copyNewHeadProvisionalElements(newHead.provisional);\n\n return {\n waitForReload: () => Promise.resolve(),\n waitForHeadScripts: copyNewHeadScriptElements(newHead.scripts),\n };\n}\n\nfunction trackedElementSignature(head: CategorizedHead) {\n return [...head.scripts, ...head.stylesheets]\n .filter(elementIsTracked)\n .map((s) => s.outerHTML)\n .join();\n}\n\nfunction copyNewHeadStylesheetElements(next: Element[], prev: Element[]) {\n const existing = prev.map((s) => s.outerHTML);\n for (const element of next) {\n if (!existing.includes(element.outerHTML)) {\n document.head.appendChild(element);\n }\n }\n}\n\nfunction copyNewHeadScriptElements(next: Element[]): () => Promise<void> {\n const deferredScripts: Element[] = [];\n let blockingLoaded: boolean[] = [];\n const scriptsLoadedPromise = new Promise<void>((onScriptsLoaded) => {\n for (const element of next as HTMLScriptElement[]) {\n const runBefore = element.outerHTML in allHeadScriptsEverRun;\n if (!runBefore) {\n let cb;\n if (!element.defer && element.src) {\n const idx = blockingLoaded.length;\n cb = () => {\n blockingLoaded[idx] = true;\n if (blockingLoaded.every((v) => v)) {\n onScriptsLoaded();\n }\n };\n blockingLoaded.push(false);\n }\n const newElement = createScriptElement(element, cb);\n if (element.defer) {\n deferredScripts.push(newElement);\n } else {\n document.head.appendChild(newElement);\n }\n allHeadScriptsEverRun[element.outerHTML] = {\n tracked: elementIsTracked(element),\n };\n }\n }\n if (blockingLoaded.length === 0) {\n // raf waits for react to finish\n onScriptsLoaded();\n }\n });\n return () => {\n deferredScripts.forEach((s) => document.head.appendChild(s));\n return scriptsLoadedPromise;\n };\n}\n\nfunction removeCurrentHeadProvisionalElements(prev: Element[]) {\n for (const element of prev) {\n document.head.removeChild(element);\n }\n}\n\nfunction copyNewHeadProvisionalElements(next: Element[]) {\n for (const element of next) {\n document.head.appendChild(element);\n }\n}\n\nfunction elementIsTracked(element: Element) {\n return element.getAttribute(\"data-turbolinks-track\") == \"reload\";\n}\n\nfunction elementIsScript(element: Element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"script\";\n}\n\nfunction elementIsStylesheet(element: Element) {\n const tagName = element.tagName.toLowerCase();\n return (\n tagName == \"style\" ||\n (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n );\n}\n\nfunction elementIsFavicon(element: Element) {\n const tagName = element.tagName.toLowerCase();\n\n return tagName == \"link\" && element.getAttribute(\"rel\") == \"icon\";\n}\n\nfunction categorizeHead(head: ParentNode) {\n const scripts = [];\n const stylesheets = [];\n const provisional = [];\n for (const element of head.children) {\n // we want to keep the same favicon on page transitions\n if (elementIsFavicon(element)) {\n continue;\n }\n\n if (elementIsScript(element)) {\n scripts.push(element);\n } else if (elementIsStylesheet(element)) {\n stylesheets.push(element);\n } else {\n provisional.push(element);\n }\n }\n return { scripts, stylesheets, provisional };\n}\ntype CategorizedHead = ReturnType<typeof categorizeHead>;\n","import \"../../lib/type\";\nimport type { PageContextClient } from \"vike/types\";\nimport { Turbolinks } from \"../../lib/turbolinks\";\nimport {\n mergeHead,\n recordExistingHeadScripts,\n} from \"../../lib/turbolinks/mergeHead\";\nimport {\n setBodyAttributes,\n getElementAttributes,\n} from \"../../lib/elementUtils\";\n\nexport default async function wrappedOnBeforeRenderClient(\n pageContext: PageContextClient\n) {\n if (pageContext.isHydration) {\n // Vike scripts load async so can run before document.body exists. we need to delay rendering.\n // This is only an issue if user sets `injectScriptsAt: \"HTML_BEGIN\"` in +config.ts\n if (document.readyState === \"loading\") {\n await new Promise((resolve) =>\n document.addEventListener(\"DOMContentLoaded\", () => resolve(null))\n );\n }\n\n const proxiedBody = document.getElementById(\"proxied-body\");\n if (!proxiedBody) {\n throw new Error(\n \"proxied-body not found in DOM after SSR. This likely means the Layout threw during SSR (e.g. accessing `window` or `document`). Fix the SSR error in your Layout component.\"\n );\n }\n pageContext._turbolinksProxy = {\n body: proxiedBody,\n };\n Turbolinks._vpsCachePageContext({\n proxyLayoutInfo: pageContext.proxyLayoutInfo,\n });\n recordExistingHeadScripts();\n return;\n }\n\n if (pageContext?._snapshot) {\n if (pageContext.isHydration) {\n throw new Error(\n \"restoration visit should never happen on initial render\"\n );\n }\n const { proxyLayoutInfo } = pageContext._snapshot.pageContext;\n const { bodyEl, headEl } = pageContext._snapshot;\n const proxyBodyEl = bodyEl.querySelector(\"#proxied-body\")!;\n if (!proxyBodyEl || !(proxyBodyEl instanceof HTMLElement)) {\n throw new Error(\"proxied body not found in cached snapshot\");\n }\n pageContext.proxyLayoutInfo = proxyLayoutInfo;\n pageContext._turbolinksProxy = {\n bodyAttrs: getElementAttributes(bodyEl),\n body: proxyBodyEl,\n head: headEl,\n };\n }\n const { head, bodyAttrs } = pageContext._turbolinksProxy!;\n pageContext._shouldEmitBeforeRender = true;\n\n await Turbolinks._vikeBeforeRender(pageContext._turbolinksVisit, {\n proxyLayoutInfo: pageContext.proxyLayoutInfo,\n });\n const { waitForReload, waitForHeadScripts } = mergeHead(head!);\n\n // If a full reload is required, wait for it here\n await waitForReload();\n pageContext._waitForHeadScripts = waitForHeadScripts;\n\n if (bodyAttrs) setBodyAttributes(bodyAttrs);\n}\n"],"mappings":";;;;;;;;;;AAKA,IAAM,wBAAiE,CAAC;AACxE,IAAI,aAAa;AACjB,IAAI;AAEG,SAAS,0BAA0B,iBAAmC;AAC3E,wCAAoB,eAAe,SAAS,IAAI;AAEhD,aAAW,WAAW,gBAAgB,SAAS;AAC7C,0BAAsB,QAAQ,SAAS,IAAI;AAAA,MACzC,SAAS,iBAAiB,OAAO;AAAA,IACnC;AAAA,EACF;AACA,+BACE,8BAA8B,wBAAwB,eAAe;AACvE,eAAa;AACf;AAGO,SAAS,UAAU,MAAuB;AAC/C,QAAM,UAAU,eAAe,IAAI;AACnC,QAAM,UAAU,eAAe,SAAS,IAAI;AAC5C,QAAM,SAAS,MAAM;AACnB,WAAO,WAAW,WAAW,gBAAgB;AAC7C,WAAO;AAAA,MACL,eAAe,MAAM,IAAI,QAAc,MAAM;AAAA,MAAC,CAAC;AAAA,MAC/C,oBAAoB,MAAM,IAAI,QAAc,MAAM;AAAA,MAAC,CAAC;AAAA,IACtD;AAAA,EACF;AAEA,MACE,KACG,cAAc,uCAAuC,GACpD,aAAa,SAAS,MAAM,UAChC;AACA,WAAO,OAAO;AAAA,EAChB;AAEA,MAAI,CAAC,YAAY;AAEf,UAAM,4BAA4B,wBAAwB,OAAO;AACjE,QAAI,+BAA+B,2BAA2B;AAC5D,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACA,eAAa;AACb,+BACE,8BAA8B,wBAAwB,OAAO;AAE/D,gCAA8B,QAAQ,aAAa,QAAQ,WAAW;AACtE,uCAAqC,QAAQ,WAAW;AACxD,iCAA+B,QAAQ,WAAW;AAElD,SAAO;AAAA,IACL,eAAe,MAAM,QAAQ,QAAQ;AAAA,IACrC,oBAAoB,0BAA0B,QAAQ,OAAO;AAAA,EAC/D;AACF;AAEA,SAAS,wBAAwB,MAAuB;AACtD,SAAO,CAAC,GAAG,KAAK,SAAS,GAAG,KAAK,WAAW,EACzC,OAAO,gBAAgB,EACvB,IAAI,CAAC,MAAM,EAAE,SAAS,EACtB,KAAK;AACV;AAEA,SAAS,8BAA8B,MAAiB,MAAiB;AACvE,QAAM,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS;AAC5C,aAAW,WAAW,MAAM;AAC1B,QAAI,CAAC,SAAS,SAAS,QAAQ,SAAS,GAAG;AACzC,eAAS,KAAK,YAAY,OAAO;AAAA,IACnC;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B,MAAsC;AACvE,QAAM,kBAA6B,CAAC;AACpC,MAAI,iBAA4B,CAAC;AACjC,QAAM,uBAAuB,IAAI,QAAc,CAAC,oBAAoB;AAClE,eAAW,WAAW,MAA6B;AACjD,YAAM,YAAY,QAAQ,aAAa;AACvC,UAAI,CAAC,WAAW;AACd,YAAI;AACJ,YAAI,CAAC,QAAQ,SAAS,QAAQ,KAAK;AACjC,gBAAM,MAAM,eAAe;AAC3B,eAAK,MAAM;AACT,2BAAe,GAAG,IAAI;AACtB,gBAAI,eAAe,MAAM,CAAC,MAAM,CAAC,GAAG;AAClC,8BAAgB;AAAA,YAClB;AAAA,UACF;AACA,yBAAe,KAAK,KAAK;AAAA,QAC3B;AACA,cAAM,aAAa,oBAAoB,SAAS,EAAE;AAClD,YAAI,QAAQ,OAAO;AACjB,0BAAgB,KAAK,UAAU;AAAA,QACjC,OAAO;AACL,mBAAS,KAAK,YAAY,UAAU;AAAA,QACtC;AACA,8BAAsB,QAAQ,SAAS,IAAI;AAAA,UACzC,SAAS,iBAAiB,OAAO;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AACA,QAAI,eAAe,WAAW,GAAG;AAE/B,sBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACD,SAAO,MAAM;AACX,oBAAgB,QAAQ,CAAC,MAAM,SAAS,KAAK,YAAY,CAAC,CAAC;AAC3D,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qCAAqC,MAAiB;AAC7D,aAAW,WAAW,MAAM;AAC1B,aAAS,KAAK,YAAY,OAAO;AAAA,EACnC;AACF;AAEA,SAAS,+BAA+B,MAAiB;AACvD,aAAW,WAAW,MAAM;AAC1B,aAAS,KAAK,YAAY,OAAO;AAAA,EACnC;AACF;AAEA,SAAS,iBAAiB,SAAkB;AAC1C,SAAO,QAAQ,aAAa,uBAAuB,KAAK;AAC1D;AAEA,SAAS,gBAAgB,SAAkB;AACzC,QAAM,UAAU,QAAQ,QAAQ,YAAY;AAC5C,SAAO,WAAW;AACpB;AAEA,SAAS,oBAAoB,SAAkB;AAC7C,QAAM,UAAU,QAAQ,QAAQ,YAAY;AAC5C,SACE,WAAW,WACV,WAAW,UAAU,QAAQ,aAAa,KAAK,KAAK;AAEzD;AAEA,SAAS,iBAAiB,SAAkB;AAC1C,QAAM,UAAU,QAAQ,QAAQ,YAAY;AAE5C,SAAO,WAAW,UAAU,QAAQ,aAAa,KAAK,KAAK;AAC7D;AAEA,SAAS,eAAe,MAAkB;AACxC,QAAM,UAAU,CAAC;AACjB,QAAM,cAAc,CAAC;AACrB,QAAM,cAAc,CAAC;AACrB,aAAW,WAAW,KAAK,UAAU;AAEnC,QAAI,iBAAiB,OAAO,GAAG;AAC7B;AAAA,IACF;AAEA,QAAI,gBAAgB,OAAO,GAAG;AAC5B,cAAQ,KAAK,OAAO;AAAA,IACtB,WAAW,oBAAoB,OAAO,GAAG;AACvC,kBAAY,KAAK,OAAO;AAAA,IAC1B,OAAO;AACL,kBAAY,KAAK,OAAO;AAAA,IAC1B;AAAA,EACF;AACA,SAAO,EAAE,SAAS,aAAa,YAAY;AAC7C;;;ACjKA,eAAO,4BACL,aACA;AACA,MAAI,YAAY,aAAa;AAG3B,QAAI,SAAS,eAAe,WAAW;AACrC,YAAM,IAAI;AAAA,QAAQ,CAAC,YACjB,SAAS,iBAAiB,oBAAoB,MAAM,QAAQ,IAAI,CAAC;AAAA,MACnE;AAAA,IACF;AAEA,UAAM,cAAc,SAAS,eAAe,cAAc;AAC1D,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,gBAAY,mBAAmB;AAAA,MAC7B,MAAM;AAAA,IACR;AACA,eAAW,qBAAqB;AAAA,MAC9B,iBAAiB,YAAY;AAAA,IAC/B,CAAC;AACD,8BAA0B;AAC1B;AAAA,EACF;AAEA,MAAI,aAAa,WAAW;AAC1B,QAAI,YAAY,aAAa;AAC3B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,gBAAgB,IAAI,YAAY,UAAU;AAClD,UAAM,EAAE,QAAQ,OAAO,IAAI,YAAY;AACvC,UAAM,cAAc,OAAO,cAAc,eAAe;AACxD,QAAI,CAAC,eAAe,EAAE,uBAAuB,cAAc;AACzD,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,gBAAY,kBAAkB;AAC9B,gBAAY,mBAAmB;AAAA,MAC7B,WAAW,qBAAqB,MAAM;AAAA,MACtC,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,EAAE,MAAM,UAAU,IAAI,YAAY;AACxC,cAAY,0BAA0B;AAEtC,QAAM,WAAW,kBAAkB,YAAY,kBAAkB;AAAA,IAC/D,iBAAiB,YAAY;AAAA,EAC/B,CAAC;AACD,QAAM,EAAE,eAAe,mBAAmB,IAAI,UAAU,IAAK;AAG7D,QAAM,cAAc;AACpB,cAAY,sBAAsB;AAElC,MAAI;AAAW,sBAAkB,SAAS;AAC5C;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@alignable/bifrost",
3
3
  "repository": "https://github.com/Alignable/bifrost.git",
4
- "version": "1.0.27",
4
+ "version": "1.0.28",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
@@ -45,8 +45,8 @@
45
45
  "peerDependencies": {
46
46
  "react": ">=18",
47
47
  "typescript": ">=4.7",
48
- "vike": ">=0.4.251",
49
- "vike-react": ">=0.6.11"
48
+ "vike": ">=0.4.253",
49
+ "vike-react": ">=0.6.18"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/jsdom": "^21.1.2",
@@ -58,9 +58,9 @@
58
58
  "tsup": "^7.1.0",
59
59
  "turbolinks": "5.3.0-beta.1",
60
60
  "typescript": "^5.0.4",
61
- "vike-react": "0.6.11",
61
+ "vike-react": "0.6.18",
62
62
  "vite": "^6.3.5",
63
- "vike": "0.4.252",
63
+ "vike": "0.4.253",
64
64
  "cross-env": "^7.0.3"
65
65
  }
66
66
  }