aboutsummaryrefslogtreecommitdiff
path: root/packages/bun-framework-next/fallback.development.tsx
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-05 21:44:43 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-05 21:44:43 -0700
commit2fc89a69e35525acbd3613779c31ad6b37ea885f (patch)
tree4d06b02306435cc823fb532ccf84cd93b01a4663 /packages/bun-framework-next/fallback.development.tsx
parentcb70d08573e72a0c470f1aaf2aa3eed755912014 (diff)
downloadbun-2fc89a69e35525acbd3613779c31ad6b37ea885f.tar.gz
bun-2fc89a69e35525acbd3613779c31ad6b37ea885f.tar.zst
bun-2fc89a69e35525acbd3613779c31ad6b37ea885f.zip
Move
Former-commit-id: b795168d774fa0b3dcde7955e30baa0eefbc88ab
Diffstat (limited to 'packages/bun-framework-next/fallback.development.tsx')
-rw-r--r--packages/bun-framework-next/fallback.development.tsx43
1 files changed, 43 insertions, 0 deletions
diff --git a/packages/bun-framework-next/fallback.development.tsx b/packages/bun-framework-next/fallback.development.tsx
new file mode 100644
index 000000000..34e6cb349
--- /dev/null
+++ b/packages/bun-framework-next/fallback.development.tsx
@@ -0,0 +1,43 @@
+import { insertStyleSheet } from "./page-loader";
+
+const globalCSSQueue = [];
+function insertGlobalStyleSheet({ detail }) {
+ globalCSSQueue.push(insertStyleSheet(detail));
+}
+
+document.addEventListener("onimportcss", insertGlobalStyleSheet, {
+ passive: true,
+});
+
+import { renderError, _boot, pageLoader } from "./client.development";
+
+export default function render({ router, reason, problems }) {
+ const route = router.routes[router.route];
+ if (!document.getElementById("__next")) {
+ const next = document.createElement("div");
+ next.id = "__next";
+ document.body.prepend(next);
+ document.head.insertAdjacentHTML(
+ "beforeend",
+ `<meta name="next-head-count" content="2">`
+ );
+ }
+
+ document.removeEventListener("onimportcss", insertGlobalStyleSheet);
+ document.addEventListener("onimportcss", pageLoader.onImportCSS, {
+ passive: true,
+ });
+ import(route)
+ .then((Namespace) => {
+ return _boot(Namespace, true);
+ })
+ .then(() => {
+ const cssQueue = pageLoader.cssQueue;
+ pageLoader.cssQueue = [];
+ return Promise.all([...cssQueue, ...globalCSSQueue]);
+ })
+ .finally(() => {
+ document.body.style.visibility = "visible";
+ document.removeEventListener("onimportcss", pageLoader.onImportCSS);
+ });
+}