summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/nuldoc-src/pages/slide.ts
diff options
context:
space:
mode:
Diffstat (limited to 'vhosts/blog/nuldoc-src/pages/slide.ts')
-rw-r--r--vhosts/blog/nuldoc-src/pages/slide.ts137
1 files changed, 0 insertions, 137 deletions
diff --git a/vhosts/blog/nuldoc-src/pages/slide.ts b/vhosts/blog/nuldoc-src/pages/slide.ts
deleted file mode 100644
index 15a18bb1..00000000
--- a/vhosts/blog/nuldoc-src/pages/slide.ts
+++ /dev/null
@@ -1,137 +0,0 @@
-import { join } from "std/path/mod.ts";
-import { globalFooter } from "../components/global_footer.ts";
-import { globalHeader } from "../components/global_header.ts";
-import { pageLayout } from "../components/page_layout.ts";
-import { staticScriptElement } from "../components/utils.ts";
-import { Config, getTagLabel } from "../config.ts";
-import { el } from "../dom.ts";
-import { Page } from "../page.ts";
-import { Date, dateToString, Revision } from "../revision.ts";
-import { Slide } from "../slide/slide.ts";
-import { getPostPublishedDate, getPostUpdatedDate } from "./post.ts";
-
-export interface SlidePage extends Page {
- title: string;
- description: string;
- event: string;
- talkType: string;
- slideLink: string;
- tags: string[];
- revisions: Revision[];
- published: Date;
- updated: Date;
- uuid: string;
-}
-
-export async function generateSlidePage(
- slide: Slide,
- config: Config,
-): Promise<SlidePage> {
- const body = el(
- "body",
- { className: "single" },
- globalHeader(config),
- el(
- "main",
- { className: "main" },
- el(
- "article",
- { className: "post-single" },
- el(
- "header",
- { className: "post-header" },
- el("h1", { className: "post-title" }, slide.title),
- ...(slide.tags.length === 0 ? [] : [
- el(
- "ul",
- { className: "post-tags" },
- ...slide.tags.map((slug) =>
- el(
- "li",
- { className: "tag" },
- el(
- "a",
- { href: `/tags/${slug}/` },
- getTagLabel(config, slug),
- ),
- )
- ),
- ),
- ]),
- ),
- el(
- "div",
- { className: "post-content" },
- el(
- "section",
- {},
- el("h2", { id: "changelog" }, "更新履歴"),
- el(
- "ol",
- {},
- ...slide.revisions.map((rev) =>
- el(
- "li",
- { className: "revision" },
- el(
- "time",
- { datetime: dateToString(rev.date) },
- dateToString(rev.date),
- ),
- `: ${rev.remark}`,
- )
- ),
- ),
- ),
- el(
- "canvas",
- { id: "slide", "data-slide-link": slide.slideLink },
- ),
- el(
- "div",
- {},
- el("button", { id: "prev" }, "Prev"),
- el("button", { id: "next" }, "Next"),
- ),
- await staticScriptElement("/slide.js", { type: "module" }, config),
- ),
- ),
- ),
- globalFooter(config),
- );
-
- const html = await pageLayout(
- {
- metaCopyrightYear: getPostPublishedDate(slide).year,
- metaDescription: slide.title,
- metaKeywords: slide.tags.map((slug) => getTagLabel(config, slug)),
- metaTitle: `${slide.event} (${slide.talkType})|${config.blog.siteName}`,
- requiresSyntaxHighlight: true,
- },
- body,
- config,
- );
-
- const cwd = Deno.cwd();
- const contentDir = join(cwd, config.locations.contentDir);
- const destFilePath = join(
- slide.sourceFilePath.replace(contentDir, "").replace(".toml", ""),
- "index.html",
- );
- return {
- root: el("__root__", {}, html),
- renderer: "html",
- destFilePath: destFilePath,
- href: destFilePath.replace("index.html", ""),
- title: slide.title,
- description: `登壇: ${slide.event} (${slide.talkType})`,
- event: slide.event,
- talkType: slide.talkType,
- slideLink: slide.slideLink,
- tags: slide.tags,
- revisions: slide.revisions,
- published: getPostPublishedDate(slide),
- updated: getPostUpdatedDate(slide),
- uuid: slide.uuid,
- };
-}