ig-typedoc-theme
Version:
infragistics theme for typedoc API documentation with versioning and localization
100 lines (99 loc) • 9.03 kB
JavaScript
import { ReflectionKind, JSX } from "typedoc";
import { analytics } from "../partials/analytics.js";
import { footer } from "../partials/footer.js";
import { header } from "../partials/header.js";
import { navigation } from "../partials/navigation.js";
import { getConfigData, hasTypeParameters, join } from "../utils/lib.js";
import { localize } from 'typedoc-plugin-localization';
export const defaultLayout = (context, template, props) => {
const defaultEnUrl = getConfigData(context, 'typedoc_default_url', 'en');
const defaultJpUrl = getConfigData(context, 'typedoc_default_url', 'jp');
const baseUrl = getConfigData(context, 'url');
const apiJsonFile = getConfigData(context, 'versions');
const searchPath = getConfigData(context, 'assets/js/search.json');
const defaultUrl = getConfigData(context, 'typedoc_default_url');
const gaID = getConfigData(context, 'gaID');
return (JSX.createElement("html", { class: "default no-js", lang: "en" },
JSX.createElement("head", null,
JSX.createElement("meta", { charset: "utf-8" }),
context.hook("head.begin", context),
JSX.createElement("meta", { "http-equiv": "x-ua-compatible", content: "IE=edge" }),
JSX.createElement("title", null, props.model.name === props.project.name ?
props.project.name :
`${props.model.name} | ${props.project.name}`),
JSX.createElement("meta", { name: "description" }),
JSX.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
context.options.getValue('localize') === 'en' ?
JSX.createElement("link", { rel: "canonical", href: defaultEnUrl }) :
JSX.createElement("link", { rel: "canonical", href: defaultJpUrl }),
JSX.createElement("link", { rel: "alternate", href: defaultEnUrl, hreflang: "en" }),
JSX.createElement("link", { rel: "alternate", href: defaultEnUrl, hreflang: "en-us" }),
JSX.createElement("link", { rel: "alternate", href: defaultJpUrl, hreflang: "ja" }),
JSX.createElement("link", { rel: "alternate", href: defaultJpUrl, hreflang: "ja-jp" }),
JSX.createElement("link", { rel: "alternate", href: defaultEnUrl, hreflang: "x-default" }),
JSX.createElement("link", { rel: "stylesheet", href: "https://infragistics.com/assets/modern/css/layout.css" }),
JSX.createElement("link", { rel: "stylesheet", href: "https://infragistics.com/assets/modern/css/animate-custom.css" }),
JSX.createElement("link", { rel: "stylesheet", href: "https://infragistics.com/assets/modern/css/fontello.css" }),
JSX.createElement("link", { rel: "stylesheet", href: "https://infragistics.com/css/navigation.css" }),
JSX.createElement("link", { rel: "stylesheet", href: "https://infragistics.com/css/footer.css" }),
JSX.createElement("link", { href: "https://fonts.googleapis.com/icon?family=Material+Icons", rel: "stylesheet" }),
JSX.createElement("link", { rel: "stylesheet", href: "https://use.typekit.net/zhy2hpz.css" }),
JSX.createElement("link", { rel: "stylesheet", href: context.relativeURL("assets/css/main.css") }),
JSX.createElement("script", { async: true, src: context.relativeURL("assets/search.js"), id: "search-script" }),
analytics(context),
context.hook("head.end", context)),
JSX.createElement("body", { id: "body", "data-base-url": baseUrl, "data-api-versions-json": apiJsonFile, "default-url": defaultUrl },
context.hook('body.begin', context),
JSX.createElement("noscript", null,
JSX.createElement("iframe", { src: `https://www.googletagmanager.com/ns.html?id=${gaID}`, height: 0, width: 0, style: "display:none;visibility:hidden" })),
header(context, props),
JSX.createElement("div", { class: "container container-main" },
JSX.createElement("div", { class: "row" },
JSX.createElement("div", { class: "col-2 col-menu menu-sticky-wrap menu-highlight" },
JSX.createElement("div", { class: "table-cell", id: "tsd-search", "data-index": searchPath, "data-base": context.relativeURL("./") },
JSX.createElement("div", { class: "field" },
JSX.createElement("label", { for: "tsd-search-field", class: "material-icons" }, "search"),
JSX.createElement("input", { id: "tsd-search-field", type: "text", placeholder: localize('Search API') })),
JSX.createElement("ul", { class: "results" },
JSX.createElement("li", { class: "state loading" }, "Preparing search index..."),
JSX.createElement("li", { class: "state failure" }, "The search index is not available"))),
JSX.createElement("div", { id: "tsd-filter" },
JSX.createElement("div", { class: "tsd-filter-group" },
JSX.createElement("div", { class: "tsd-select", id: "tsd-filter-visibility" },
JSX.createElement("span", { class: "tsd-select-label" }, localize('All')),
JSX.createElement("ul", { class: "tsd-select-list" },
JSX.createElement("li", { "data-value": "public" }, localize('Public')),
JSX.createElement("li", { "data-value": "protected" }, localize('Public/Protected')),
JSX.createElement("li", { "data-value": "private", class: "selected" }, localize('All')))),
JSX.createElement("input", { type: "checkbox", id: "tsd-filter-inherited", checked: true }),
JSX.createElement("label", { class: "tsd-widget", for: "tsd-filter-inherited" }, localize('Inherited')),
!context.options.getValue("excludeExternals") && (JSX.createElement(JSX.Fragment, null,
JSX.createElement("input", { type: "checkbox", id: "tsd-filter-externals", checked: true }),
JSX.createElement("label", { class: "tsd-widget", for: "tsd-filter-externals" }, localize('Externals')))),
!context.options.getValue("excludeExternals") && (JSX.createElement(JSX.Fragment, null,
JSX.createElement("input", { type: "checkbox", id: "tsd-filter-externals" }),
JSX.createElement("label", { class: "tsd-widget", for: "tsd-filter-only-exported" }, localize('Only exported')))))),
navigation(context, props)),
JSX.createElement("div", { class: "col-10 col-content" },
JSX.createElement("div", { class: "tsd-page-title" },
JSX.createElement("div", { class: "container" },
!!props.model.parent && JSX.createElement("ul", { class: "tsd-breadcrumb" }, context.breadcrumb(props.model)),
JSX.createElement("h1", null,
ReflectionKind.singularString(props.model.kind) !== "Project" && `${ReflectionKind.singularString(props.model.kind) ?? ""} `,
props.model.name,
hasTypeParameters(props.model) && (JSX.createElement(JSX.Fragment, null,
"<",
join(", ", props.model.typeParameters, (item) => item.name),
">"))))),
template(props)))),
footer(context, props),
JSX.createElement("div", { class: "overlay" }),
JSX.createElement("script", { type: "text/javascript", src: "https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js" }),
JSX.createElement("script", { type: "text/javascript", src: "https://code.jquery.com/jquery-2.1.4.min.js", integrity: "sha256-8WqyJLuWKRBVhxXIL1jBDD7SDxU936oZkCnxQbWwJVw=", crossOrigin: "anonymous" }),
JSX.createElement("script", { type: "text/javascript", src: "https://infragistics.com/assets/modern/scripts/jquery-migrate.min.js" }),
JSX.createElement("script", { type: "text/javascript", src: "https://www.infragistics.com/assets/modern/scripts/plugins.nav.js" }),
JSX.createElement("script", { type: "text/javascript", src: "https://www.infragistics.com/assets/modern/scripts/navigation.js" }),
JSX.createElement("script", { src: "https://unpkg.com/lunr/lunr.js" }),
JSX.createElement("script", { src: context.relativeURL("assets/main.js") }),
context.hook("body.end", context))));
};