UNPKG

6.01 kBSource Map (JSON)View Raw
1{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/lib/output/theme.ts"],"names":[],"mappings":";;;;;;;;AAIA,6CAAiD;AACjD,kDAA+C;AAC/C,iDAA8C;AA8C9C,IAAsB,KAAK,GAA3B,MAAsB,KAAM,SAAQ,8BAAiB;IAcjD,YAAY,QAAkB,EAAE,QAAgB;QAC5C,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,IAAI,CAAC,QAAQ,GAAI,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CA+CJ,CAAA;AAlEqB,KAAK;IAD1B,qBAAS,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;GACrB,KAAK,CAkE1B;AAlEqB,sBAAK","sourcesContent":["import { Renderer } from './renderer';\nimport { ProjectReflection } from '../models/reflections/project';\nimport { UrlMapping } from './models/UrlMapping';\nimport { NavigationItem } from './models/NavigationItem';\nimport { RendererComponent } from './components';\nimport { Component } from '../utils/component';\nimport { Resources } from './utils/resources';\n\n/**\n * Base class of all themes.\n *\n * A theme defines the logical and graphical output of a documentation. Themes are\n * directories containing a ```theme.js``` file defining a [[BaseTheme]] subclass and a\n * series of subdirectories containing templates and assets. You can select a theme\n * through the ```--theme <path/to/theme>``` commandline argument.\n *\n * The theme class controls which files will be created through the [[BaseTheme.getUrls]]\n * function. It returns an array of [[UrlMapping]] instances defining the target files, models\n * and templates to use. Additionally themes can subscribe to the events emitted by\n * [[Renderer]] to control and manipulate the output process.\n *\n * The default file structure of a theme looks like this:\n *\n * - ```/assets/```<br>\n * Contains static assets like stylesheets, images or javascript files used by the theme.\n * The [[AssetsPlugin]] will deep copy this directory to the output directory.\n *\n * - ```/layouts/```<br>\n * Contains layout templates that the [[LayoutPlugin]] wraps around the output of the\n * page template. Currently only one ```default.hbs``` layout is supported. Layout templates\n * receive the current [[PageEvent]] instance as their handlebars context. Place the\n * ```{{{contents}}}``` variable to render the actual body of the document within this template.\n *\n * - ```/partials/```<br>\n * Contains partial templates that can be used by other templates using handlebars partial\n * syntax ```{{> partial-name}}```. The [[PartialsPlugin]] loads all files in this directory\n * and combines them with the partials of the default theme.\n *\n * - ```/templates/```<br>\n * Contains the main templates of the theme. The theme maps models to these templates through\n * the [[BaseTheme.getUrls]] function. If the [[Renderer.getTemplate]] function cannot find a\n * given template within this directory, it will try to find it in the default theme\n * ```/templates/``` directory. Templates receive the current [[PageEvent]] instance as\n * their handlebars context. You can access the target model through the ```{{model}}``` variable.\n *\n * - ```/theme.js```<br>\n * A javascript file that returns the definition of a [[BaseTheme]] subclass. This file will\n * be executed within the context of TypeDoc, one may directly access all classes and functions\n * of TypeDoc. If this file is not present, an instance of [[DefaultTheme]] will be used to render\n * this theme.\n */\n@Component({name: 'theme', internal: true})\nexport abstract class Theme extends RendererComponent {\n /**\n * The base path of this theme.\n */\n basePath: string;\n\n resources: Resources;\n\n /**\n * Create a new BaseTheme instance.\n *\n * @param renderer The renderer this theme is attached to.\n * @param basePath The base path of this theme.\n */\n constructor(renderer: Renderer, basePath: string) {\n super(renderer);\n\n this.basePath = basePath;\n this.resources = new Resources(this);\n }\n\n /**\n * Test whether the given path contains a documentation generated by this theme.\n *\n * TypeDoc empties the output directory before rendering a project. This function\n * is used to ensure that only previously generated documentations are deleted.\n * When this function returns FALSE, the documentation will not be created and an\n * error message will be displayed.\n *\n * Every theme must have an own implementation of this function, the default\n * implementation always returns FALSE.\n *\n * @param path The path of the directory that should be tested.\n * @returns TRUE if the given path seems to be a previous output directory,\n * otherwise FALSE.\n *\n * @see [[Renderer.prepareOutputDirectory]]\n */\n abstract isOutputDirectory(path: string): boolean;\n\n /**\n * Map the models of the given project to the desired output files.\n *\n * Every theme must have an own implementation of this function, the default\n * implementation always returns an empty array.\n *\n * @param project The project whose urls should be generated.\n * @returns A list of [[UrlMapping]] instances defining which models\n * should be rendered to which files.\n */\n abstract getUrls(project: ProjectReflection): UrlMapping[];\n\n /**\n * Create a navigation structure for the given project.\n *\n * A navigation is a tree structure consisting of [[NavigationItem]] nodes. This\n * function should return the root node of the desired navigation tree.\n *\n * The [[NavigationPlugin]] will call this hook before a project will be rendered.\n * The plugin will update the state of the navigation tree and pass it to the\n * templates.\n *\n * @param project The project whose navigation should be generated.\n * @returns The root navigation item.\n */\n abstract getNavigation(project: ProjectReflection): NavigationItem;\n}\n"]}
\No newline at end of file