diff options
author | 2021-09-05 21:44:43 -0700 | |
---|---|---|
committer | 2021-09-05 21:44:43 -0700 | |
commit | 2fc89a69e35525acbd3613779c31ad6b37ea885f (patch) | |
tree | 4d06b02306435cc823fb532ccf84cd93b01a4663 /packages/bun-framework-next/fallback.development.tsx | |
parent | cb70d08573e72a0c470f1aaf2aa3eed755912014 (diff) | |
download | bun-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.tsx | 43 |
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); + }); +} |