You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
828 B
TypeScript
27 lines
828 B
TypeScript
/// <reference no-default-lib="true" />
|
|
/// <reference lib="dom" />
|
|
/// <reference lib="dom.asynciterable" />
|
|
/// <reference lib="deno.ns" />
|
|
/// <reference lib="deno.unstable" />
|
|
|
|
import { InnerRenderFunction, RenderContext, start } from "$fresh/server.ts";
|
|
import manifest from "./fresh.gen.ts";
|
|
|
|
import { config, setup } from "@twind";
|
|
import { virtualSheet } from "twind/sheets";
|
|
|
|
const sheet = virtualSheet();
|
|
sheet.reset();
|
|
setup({ ...config, sheet });
|
|
|
|
function render(ctx: RenderContext, render: InnerRenderFunction) {
|
|
const snapshot = ctx.state.get("twind") as unknown[] | null;
|
|
sheet.reset(snapshot || undefined);
|
|
render();
|
|
ctx.styles.splice(0, ctx.styles.length, ...(sheet).target);
|
|
const newSnapshot = sheet.reset();
|
|
ctx.state.set("twind", newSnapshot);
|
|
}
|
|
|
|
await start(manifest, { render, port: 5000 });
|