Explorar o código

Fixes #2155: Adopt latest typedoc themes

Alex Dima %!s(int64=4) %!d(string=hai) anos
pai
achega
7e0afc8f43
Modificáronse 65 ficheiros con 3648 adicións e 1203 borrados
  1. 27 26
      gulpfile.js
  2. 39 0
      website/typedoc-theme/assets/css/_constants.sass
  3. 53 0
      website/typedoc-theme/assets/css/elements/_comment.sass
  4. 65 0
      website/typedoc-theme/assets/css/elements/_filter.sass
  5. 21 0
      website/typedoc-theme/assets/css/elements/_footer.sass
  6. 24 0
      website/typedoc-theme/assets/css/elements/_hierarchy.sass
  7. 3 0
      website/typedoc-theme/assets/css/elements/_images.sass
  8. 79 0
      website/typedoc-theme/assets/css/elements/_index.sass
  9. 21 0
      website/typedoc-theme/assets/css/elements/_member.sass
  10. 148 0
      website/typedoc-theme/assets/css/elements/_navigation.sass
  11. 70 0
      website/typedoc-theme/assets/css/elements/_panel.sass
  12. 89 0
      website/typedoc-theme/assets/css/elements/_search.sass
  13. 152 0
      website/typedoc-theme/assets/css/elements/_signatures.sass
  14. 24 0
      website/typedoc-theme/assets/css/elements/_sources.sass
  15. 175 0
      website/typedoc-theme/assets/css/elements/_toolbar.sass
  16. 113 0
      website/typedoc-theme/assets/css/layouts/_default.sass
  17. 49 0
      website/typedoc-theme/assets/css/layouts/_minimal.sass
  18. 0 873
      website/typedoc-theme/assets/css/main.css
  19. 0 2
      website/typedoc-theme/assets/css/main.css.map
  20. 27 0
      website/typedoc-theme/assets/css/main.sass
  21. 54 0
      website/typedoc-theme/assets/css/setup/_animations.sass
  22. 60 0
      website/typedoc-theme/assets/css/setup/_grid.sass
  23. 166 0
      website/typedoc-theme/assets/css/setup/_icons.scss
  24. 30 0
      website/typedoc-theme/assets/css/setup/_mixins.sass
  25. 45 0
      website/typedoc-theme/assets/css/setup/_typography.sass
  26. 50 0
      website/typedoc-theme/assets/css/vendors/_highlight.js.sass
  27. 424 0
      website/typedoc-theme/assets/css/vendors/_normalize.sass
  28. BIN=BIN
      website/typedoc-theme/assets/images/icons.png
  29. BIN=BIN
      website/typedoc-theme/assets/images/icons.psd
  30. BIN=BIN
      website/typedoc-theme/assets/images/icons@2x.png
  31. BIN=BIN
      website/typedoc-theme/assets/images/widgets.psd
  32. 0 0
      website/typedoc-theme/assets/js/main.js
  33. 24 0
      website/typedoc-theme/assets/js/src/bootstrap.ts
  34. 51 0
      website/typedoc-theme/assets/js/src/typedoc/Application.ts
  35. 14 0
      website/typedoc-theme/assets/js/src/typedoc/Component.ts
  36. 42 0
      website/typedoc-theme/assets/js/src/typedoc/EventTarget.ts
  37. 172 0
      website/typedoc-theme/assets/js/src/typedoc/components/Filter.ts
  38. 135 0
      website/typedoc-theme/assets/js/src/typedoc/components/MenuHighlight.ts
  39. 327 0
      website/typedoc-theme/assets/js/src/typedoc/components/Search.ts
  40. 160 0
      website/typedoc-theme/assets/js/src/typedoc/components/Signature.ts
  41. 65 0
      website/typedoc-theme/assets/js/src/typedoc/components/Toggle.ts
  42. 126 0
      website/typedoc-theme/assets/js/src/typedoc/services/Viewport.ts
  43. 91 0
      website/typedoc-theme/assets/js/src/typedoc/utils/pointer.ts
  44. 9 0
      website/typedoc-theme/assets/js/src/typedoc/utils/trottle.ts
  45. 0 78
      website/typedoc-theme/helpers/sortModelGroups.js
  46. 2 5
      website/typedoc-theme/layouts/default.hbs
  47. 8 53
      website/typedoc-theme/partials/footer.hbs
  48. 2 2
      website/typedoc-theme/partials/header.hbs
  49. 1 1
      website/typedoc-theme/partials/hierarchy.hbs
  50. 49 18
      website/typedoc-theme/partials/index.hbs
  51. 16 2
      website/typedoc-theme/partials/member.declaration.hbs
  52. 1 1
      website/typedoc-theme/partials/member.getterSetter.hbs
  53. 3 1
      website/typedoc-theme/partials/member.hbs
  54. 11 0
      website/typedoc-theme/partials/member.reference.hbs
  55. 2 2
      website/typedoc-theme/partials/member.signature.body.hbs
  56. 28 24
      website/typedoc-theme/partials/member.signature.title.hbs
  57. 2 2
      website/typedoc-theme/partials/member.signatures.hbs
  58. 2 2
      website/typedoc-theme/partials/member.sources.hbs
  59. 20 7
      website/typedoc-theme/partials/members.group.hbs
  60. 20 5
      website/typedoc-theme/partials/members.hbs
  61. 4 2
      website/typedoc-theme/partials/parameter.hbs
  62. 214 62
      website/typedoc-theme/partials/type.hbs
  63. 32 28
      website/typedoc-theme/partials/typeAndParent.hbs
  64. 4 1
      website/typedoc-theme/partials/typeParameters.hbs
  65. 3 6
      website/typedoc-theme/templates/reflection.hbs

+ 27 - 26
gulpfile.js

@@ -531,12 +531,35 @@ function addPluginThirdPartyNotices() {
 
 
 // --- website
-
+function typedocStream() {
+	const initialCWD = process.cwd();
+	// TypeDoc is silly and consumes the `exclude` option.
+	// This option does not make it to typescript compiler, which ends up including /node_modules/ .d.ts files.
+	// We work around this by changing the cwd... :O
+	return gulp.src('monaco.d.ts')
+	.pipe(es.through(undefined, function() {
+		process.chdir(os.tmpdir());
+		this.emit('end');
+	}))
+	.pipe(typedoc({
+		mode: 'file',
+		out: path.join(__dirname, '../monaco-editor-website/api'),
+		includeDeclarations: true,
+		theme: path.join(__dirname, 'website/typedoc-theme'),
+		entryPoint: 'monaco',
+		name: 'Monaco Editor API v' + MONACO_EDITOR_VERSION,
+		readme: 'none',
+		hideGenerator: true
+	}))
+	.pipe(es.through(undefined, function() {
+		process.chdir(initialCWD);
+		this.emit('end');
+	}))
+};
+gulp.task('typedoc', () => typedocStream());
 const cleanWebsiteTask = function(cb) { rimraf('../monaco-editor-website', { maxBusyTries: 1 }, cb); };
 const buildWebsiteTask = taskSeries(cleanWebsiteTask, function() {
 
-	const initialCWD = process.cwd();
-
 	function replaceWithRelativeResource(dataPath, contents, regex, callback) {
 		return contents.replace(regex, function(_, m0) {
 			var filePath = path.join(path.dirname(dataPath), m0);
@@ -630,29 +653,7 @@ const buildWebsiteTask = taskSeries(cleanWebsiteTask, function() {
 			}))
 			.pipe(gulp.dest('../monaco-editor-website')),
 
-			// TypeDoc is silly and consumes the `exclude` option.
-			// This option does not make it to typescript compiler, which ends up including /node_modules/ .d.ts files.
-			// We work around this by changing the cwd... :O
-
-			gulp.src('monaco.d.ts')
-			.pipe(es.through(undefined, function() {
-				process.chdir(os.tmpdir());
-				this.emit('end');
-			}))
-			.pipe(typedoc({
-				mode: 'file',
-				out: path.join(__dirname, '../monaco-editor-website/api'),
-				includeDeclarations: true,
-				theme: path.join(__dirname, 'website/typedoc-theme'),
-				entryPoint: 'monaco',
-				name: 'Monaco Editor API v' + MONACO_EDITOR_VERSION,
-				readme: 'none',
-				hideGenerator: true
-			}))
-			.pipe(es.through(undefined, function() {
-				process.chdir(initialCWD);
-				this.emit('end');
-			}))
+			typedocStream()
 		)
 
 		.pipe(es.through(function(data) {

+ 39 - 0
website/typedoc-theme/assets/css/_constants.sass

@@ -0,0 +1,39 @@
+// Fonts
+//
+$FONT_FAMILY: 'Segoe UI', sans-serif
+$FONT_FAMILY_MONO: Menlo, Monaco, Consolas, 'Courier New', monospace
+
+$FONT_SIZE: 16px
+$FONT_SIZE_MONO: 14px
+
+$LINE_HEIGHT: 1.333em
+
+
+// Colors
+//
+$COLOR_BACKGROUND: #fdfdfd
+$COLOR_TEXT: #222
+$COLOR_TEXT_ASIDE: #707070
+$COLOR_LINK: #4da6ff
+
+$COLOR_MENU_DIVIDER: #eee
+$COLOR_MENU_DIVIDER_FOCUS: #000
+$COLOR_MENU_LABEL: #707070
+
+$COLOR_PANEL: #fff
+$COLOR_PANEL_DIVIDER: #eee
+
+$COLOR_COMMENT_TAG: #707070
+$COLOR_COMMENT_TAG_TEXT: #fff
+
+$COLOR_CODE_BACKGROUND: rgba(#000, 0.04)
+
+$COLOR_TS: #9600ff
+$COLOR_TS_INTERFACE: #647F1B
+$COLOR_TS_ENUM: #937210
+$COLOR_TS_CLASS: #0672DE
+$COLOR_TS_PRIVATE: #707070
+
+$TOOLBAR_COLOR: #fff
+$TOOLBAR_TEXT_COLOR: #333
+$TOOLBAR_HEIGHT: 40px

+ 53 - 0
website/typedoc-theme/assets/css/elements/_comment.sass

@@ -0,0 +1,53 @@
+// Displays all regular comment tags
+//
+// <dl class="tsd-comment-tags">
+//   <dt>see</dt>
+//   <dd><p><a href="#">Dispatcher.EVENT_BEGIN</a></p></dd>
+//   <dt>see</dt>
+//   <dd><p><a href="#">Dispatcher.EVENT_BEGIN_RESOLVE</a></p></dd>
+//   <dt>see</dt>
+//   <dd><p><a href="#">Dispatcher.EVENT_END_RESOLVE</a></p></dd>
+// </dl>
+//
+dl.tsd-comment-tags
+    overflow: hidden
+
+    dt
+        float: left
+        padding: 1px 5px
+        margin: 0 10px 0 0
+        border-radius: 4px
+        border: 1px solid $COLOR_COMMENT_TAG
+        color: $COLOR_COMMENT_TAG
+        font-size: 0.8em
+        font-weight: normal
+
+    dd
+        margin: 0 0 10px 0
+
+        &:before, &:after
+            display: table
+            content: " "
+        pre, &:after
+            clear: both
+
+    p
+        margin: 0
+
+
+// Special formatting for the main reflection on each page.
+//
+// <section class="tsd-panel tsd-comment">
+//   <div class="tsd-comment tsd-typography">
+//     <div class="lead"><p>The default TypeDoc main application class.</p></div>
+//     <p>This class holds the two main components of TypeDoc, the Dispatcher and the Renderer.</p>
+//   </div>
+// </section>
+//
+.tsd-panel.tsd-comment .lead
+    font-size: 1.1em
+    line-height: $LINE_HEIGHT
+    margin-bottom: 2em
+
+    &:last-child
+        margin-bottom: 0

+ 65 - 0
website/typedoc-theme/assets/css/elements/_filter.sass

@@ -0,0 +1,65 @@
+// Classes set on the body to control the visible state of the filtered elements
+//
+.toggle-protected .tsd-is-private
+    display: none
+
+.toggle-public .tsd-is-private,
+.toggle-public .tsd-is-protected,
+.toggle-public .tsd-is-private-protected
+    display: none
+
+.toggle-inherited .tsd-is-inherited
+    display: none
+
+.toggle-only-exported .tsd-is-not-exported
+    display: none
+
+.toggle-externals .tsd-is-external
+    display: none
+
+
+// Filter Buttons in the toolbar
+//
+#tsd-filter
+    position: relative
+    display: inline-block
+    height: $TOOLBAR_HEIGHT
+    vertical-align: bottom
+
+    .no-filter &
+        display: none
+
+    .tsd-filter-group
+        display: inline-block
+        height: $TOOLBAR_HEIGHT
+        vertical-align: bottom
+        white-space: nowrap
+
+    input
+        display: none
+
+    +size-xs-sm
+        .tsd-filter-group
+            display: block
+            position: absolute
+            top: $TOOLBAR_HEIGHT
+            right: 20px
+            height: auto
+            background-color: $COLOR_PANEL
+            visibility: hidden
+            transform: translate(50%,0)
+            box-shadow: 0 0 4px rgba(#000, 0.25)
+
+            .has-options &
+                visibility: visible
+
+            .to-has-options &
+                animation: fade-in 0.2s
+
+            .from-has-options &
+                animation: fade-out 0.2s
+
+        label,
+        .tsd-select
+            display: block
+            padding-right: 20px

+ 21 - 0
website/typedoc-theme/assets/css/elements/_footer.sass

@@ -0,0 +1,21 @@
+footer
+    border-top: 1px solid $COLOR_PANEL_DIVIDER
+    background-color: $COLOR_PANEL
+
+    &.with-border-bottom
+        border-bottom: 1px solid $COLOR_PANEL_DIVIDER
+
+    .tsd-legend-group
+        font-size: 0
+
+    .tsd-legend
+        display: inline-block
+        width: 25%
+        padding: 0
+        font-size: $FONT_SIZE
+        list-style: none
+        line-height: $LINE_HEIGHT
+        vertical-align: top
+
+        +size-xs-sm
+            width: 50%

+ 24 - 0
website/typedoc-theme/assets/css/elements/_hierarchy.sass

@@ -0,0 +1,24 @@
+// Displays the type hierarchy
+//
+// <ul class="tsd-hierarchy">
+//   <li>
+//     <a href="#" class="tsd-signature-type">Event</a>
+//     <ul class="tsd-hierarchy">
+//       <li>
+//         <span class="target">DispatcherEvent</span>
+//         <ul class="tsd-hierarchy">
+//           <li><a href="#" class="tsd-signature-type">BaseState</a></li>
+//           <li><a href="#" class="tsd-signature-type">ReflectionEvent</a></li>
+//         </ul>
+//       </li>
+//     </ul>
+//   </li>
+// </ul>
+//
+.tsd-hierarchy
+    list-style: square
+    padding: 0 0 0 20px
+    margin: 0
+
+    .target
+        font-weight: bold

+ 3 - 0
website/typedoc-theme/assets/css/elements/_images.sass

@@ -0,0 +1,3 @@
+// fixes issue with images in readme
+img
+    max-width: 100%

+ 79 - 0
website/typedoc-theme/assets/css/elements/_index.sass

@@ -0,0 +1,79 @@
+// Displays an index of grouped links.
+//
+// <section class="tsd-panel tsd-index-panel">
+//   <div class="tsd-index-content">
+//     <div class="tsd-index-section">
+//       <h3>Constructor methods</h3>
+//       <ul class="tsd-member-index">
+//         <li class="tsd-kind-constructor-method tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">constructor</a></li>
+//       </ul>
+//     </div>
+//     <div class="tsd-index-section">
+//       <h3>Properties</h3>
+//       <ul class="tsd-member-index">
+//         <li class="tsd-kind-property tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">EVENT_<wbr>BEGIN</a></li>
+//         <li class="tsd-kind-property tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">EVENT_<wbr>BEGIN_<wbr>DECLARATION</a></li>
+//         <li class="tsd-kind-property tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">EVENT_<wbr>BEGIN_<wbr>DOCUMENT</a></li>
+//         <li class="tsd-kind-property tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">EVENT_<wbr>BEGIN_<wbr>RESOLVE</a></li>
+//       </ul>
+//     </div>
+//   </div>
+// </section>
+//
+.tsd-index-panel
+    .tsd-index-content
+        margin-bottom: -30px !important
+
+    .tsd-index-section
+        margin-bottom: 30px !important
+
+    h3
+        @extend h4
+        margin: 0 -20px 10px -20px
+        padding: 0 20px 10px 20px
+        border-bottom: 1px solid $COLOR_PANEL_DIVIDER
+
+    ul.tsd-index-list
+        +vendors(column-count, 3)
+        +vendors(column-gap, 20px)
+        padding: 0
+        list-style: none
+        line-height: $LINE_HEIGHT
+
+        +size-xs-sm
+            +vendors(column-count, 1)
+
+        +size-md
+            +vendors(column-count, 2)
+
+        li
+            +vendors(page-break-inside, avoid)
+
+    a,
+    .tsd-parent-kind-module a
+        color: $COLOR_TS
+
+    .tsd-parent-kind-interface a
+        color: $COLOR_TS_INTERFACE
+
+    .tsd-parent-kind-enum a
+        color: $COLOR_TS_ENUM
+
+    .tsd-parent-kind-class a
+        color: $COLOR_TS_CLASS
+
+
+    .tsd-kind-module a
+        color: $COLOR_TS
+
+    .tsd-kind-interface a
+        color: $COLOR_TS_INTERFACE
+
+    .tsd-kind-enum a
+        color: $COLOR_TS_ENUM
+
+    .tsd-kind-class a
+        color: $COLOR_TS_CLASS
+
+    .tsd-is-private a
+        color: $COLOR_TS_PRIVATE

+ 21 - 0
website/typedoc-theme/assets/css/elements/_member.sass

@@ -0,0 +1,21 @@
+.tsd-flag
+    display: inline-block
+    padding: 1px 5px
+    border-radius: 4px
+    color: $COLOR_COMMENT_TAG_TEXT
+    background-color: $COLOR_COMMENT_TAG
+    text-indent: 0
+    font-size: $FONT_SIZE_MONO
+    font-weight: normal
+
+.tsd-anchor
+    position: absolute
+    top: -100px
+
+.tsd-member
+    position: relative
+
+    .tsd-anchor + h3
+        margin-top: 0
+        margin-bottom: 0
+        border-bottom: none

+ 148 - 0
website/typedoc-theme/assets/css/elements/_navigation.sass

@@ -0,0 +1,148 @@
+// Base format for the navigation parts.
+//
+=INDENT($DEPTH, $BASE, $STEP, $PROGRESS:$DEPTH)
+    @if $PROGRESS > 0
+        & li
+            +INDENT($DEPTH, $BASE, $STEP, $PROGRESS - 1)
+    @else
+        & a
+            padding-left: #{($BASE + $STEP * ($DEPTH - 1))}px
+
+=INDENTS($COUNT, $BASE, $STEP)
+    @for $DEPTH from 1 through $COUNT
+        +INDENT($DEPTH, $BASE, $STEP)
+
+.tsd-navigation
+    margin: 0 0 0 40px
+
+    a
+        display: block
+        padding-top: 2px
+        padding-bottom: 2px
+        border-left: 2px solid transparent
+        color: $COLOR_TEXT
+        text-decoration: none
+        transition: border-left-color 0.1s
+
+        &:hover
+            text-decoration: underline
+
+    ul
+        margin: 0
+        padding: 0
+        list-style: none
+
+    li
+        padding: 0
+
+
+// Primary part of the navigation containing the available modules.
+//
+// <nav class="tsd-navigation primary">
+//   <ul>
+//     <li class="globals"><a href="#"><em>Globals</em></a></li>
+//     <li class="current tsd-kind-container">
+//       <a href="#">TypeDoc</a>
+//       <ul>
+//         <li class="tsd-kind-container tsd-parent-kind-container"><a href="#">Factories</a></li>
+//         <li class="tsd-kind-container tsd-parent-kind-container"><a href="#">Models</a></li>
+//         <li class="current tsd-kind-container tsd-parent-kind-container"><a href="#">Output</a></li>
+//       </ul>
+//     </li>
+//   </ul>
+// </nav>
+//
+.tsd-navigation.primary
+    padding-bottom: 40px
+
+    a
+        display: block
+        padding-top: 6px
+        padding-bottom: 6px
+
+    ul
+        +INDENTS(6, 5, 20)
+
+    > ul
+        border-bottom: 1px solid $COLOR_PANEL_DIVIDER
+
+    li
+        border-top: 1px solid $COLOR_PANEL_DIVIDER
+
+        &.current > a
+            font-weight: bold
+
+        &.label span
+            display: block
+            padding: 20px 0 6px 5px
+            color: $COLOR_MENU_LABEL
+
+        &.globals + li > span,
+        &.globals + li > a
+            padding-top: 20px
+
+
+// Secondary part of the navigation containing the table of contents
+// of the current module.
+// Can be made sticky by `typedoc.MenuSticky` and will highlight current sticky with `typedoc.MenuHighlight`.
+//
+// <nav class="tsd-navigation secondary">
+//   <ul class="before-current">
+//     <li class="tsd-kind-class tsd-parent-kind-container"><a href="#" class="tsd-kind-icon">AssetsPlugin</a></li>
+//     <li class="tsd-kind-class tsd-parent-kind-container"><a href="#" class="tsd-kind-icon">BasePlugin</a></li>
+//     <li class="tsd-kind-class tsd-parent-kind-container"><a href="#" class="tsd-kind-icon">BaseTheme</a></li>
+//   </ul>
+//   <ul class="current">
+//     <li class="current tsd-kind-class tsd-parent-kind-container">
+//       <a href="#" class="tsd-kind-icon">OutputEvent</a>
+//       <ul>
+//         <li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><a href="#" class="tsd-kind-icon">isDefaultPrevented</a></li>
+//         <li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><a href="#" class="tsd-kind-icon">isPropagationStopped</a></li>
+//         <li class="tsd-kind-property tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">outputDirectory</a></li>
+//         <li class="tsd-kind-property tsd-parent-kind-class"><a href="#" class="tsd-kind-icon">project</a></li>
+//       </ul>
+//     </li>
+//   </ul>
+//   <ul class="after-current">
+//     <li class="tsd-kind-class tsd-parent-kind-container"><a href="#" class="tsd-kind-icon">OutputPageEvent</a></li>
+//     <li class="tsd-kind-class tsd-parent-kind-container"><a href="#" class="tsd-kind-icon">PartialsPlugin</a></li>
+//   </ul>
+// </nav>
+//
+.tsd-navigation.secondary
+    max-height: calc(100vh - 1rem - #{$TOOLBAR_HEIGHT})
+    overflow: auto
+    position: -webkit-sticky
+    position: sticky
+    top: calc(.5rem + #{$TOOLBAR_HEIGHT})
+    transition: .3s
+
+    &.tsd-navigation--toolbar-hide
+        max-height: calc(100vh - 1rem)
+        top: .5rem
+
+    ul
+        +INDENTS(6, 25, 20)
+        transition: opacity 0.2s
+
+        &.current a
+            border-left-color: $COLOR_PANEL_DIVIDER
+
+    li.focus > a,
+    ul.current li.focus > a
+        border-left-color: $COLOR_MENU_DIVIDER_FOCUS
+
+    li.current
+        margin-top: 20px
+        margin-bottom: 20px
+        border-left-color: $COLOR_PANEL_DIVIDER
+
+        > a
+            font-weight: bold
+
+
+// Sticky menu setup
+//
+.menu-sticky-wrap
+    +size-md-lg
+        position: static

+ 70 - 0
website/typedoc-theme/assets/css/elements/_panel.sass

@@ -0,0 +1,70 @@
+// Displays a panel, an organisation unit in TypeDoc used to group single entities
+// like a method or a variable.
+//
+// <div class="tsd-panel">
+//   <h3>Eirmod tempor invidunt</h3>
+//   <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.</p>
+// </div>
+//
+.tsd-panel
+    @extend %prevent-children-margin
+    margin: 20px 0
+    padding: 20px
+    background-color: $COLOR_PANEL
+    box-shadow: 0 0 4px rgba(#000, 0.25)
+
+    &:empty
+        display: none
+
+    > h1, > h2, > h3
+        margin: 1.5em -20px 10px -20px
+        padding: 0 20px 10px 20px
+        border-bottom: 1px solid $COLOR_PANEL_DIVIDER
+
+        &.tsd-before-signature
+            margin-bottom: 0
+            border-bottom: 0
+
+    table
+        display: block
+        width: 100%
+        overflow: auto
+        margin-top: 10px
+        word-break: normal
+        word-break: keep-all
+
+        th
+            font-weight: bold
+
+        th, td
+            padding: 6px 13px
+            border: 1px solid #ddd
+
+        tr
+            background-color: #fff
+            border-top: 1px solid #ccc
+
+            &:nth-child(2n)
+                background-color: #f8f8f8
+
+
+// Holds a series of panels with an optional heading.
+//
+// <div class="tsd-panel-group">
+//   <h2>Consetetur sadipscing elitr</h2>
+//   <div class="tsd-panel">
+//     <h3>Eirmod tempor invidunt</h3>
+//     <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.</p>
+//   </div>
+//   <div class="tsd-panel">
+//     <h3>Eirmod tempor invidunt</h3>
+//     <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.</p>
+//   </div>
+// </div>
+//
+.tsd-panel-group
+    margin: 60px 0
+
+    > h1, > h2, > h3
+        padding-left: 20px
+        padding-right: 20px

+ 89 - 0
website/typedoc-theme/assets/css/elements/_search.sass

@@ -0,0 +1,89 @@
+#tsd-search
+    transition: background-color 0.2s
+
+    .title
+        position: relative
+        z-index: 2
+
+    .field
+        position: absolute
+        left: 0
+        top: 0
+        right: 40px
+        height: 40px
+
+        input
+            box-sizing: border-box
+            position: relative
+            top: -50px
+            z-index: 1
+            width: 100%
+            padding: 0 10px
+            opacity: 0
+            outline: 0
+            border: 0
+            background: transparent
+            color: $COLOR_TEXT
+
+        label
+            position: absolute
+            overflow: hidden
+            right: -40px
+
+    .field input,
+    .title
+        transition: opacity 0.2s
+
+    .results
+        position: absolute
+        visibility: hidden
+        top: 40px
+        width: 100%
+        margin: 0
+        padding: 0
+        list-style: none
+        box-shadow: 0 0 4px rgba(#000, 0.25)
+
+        li
+            padding: 0 10px
+            background-color: $COLOR_BACKGROUND
+
+        li:nth-child(even)
+            background-color: $COLOR_PANEL
+
+        li.state
+            display: none
+
+        li.current,
+        li:hover
+            background-color: $COLOR_PANEL_DIVIDER
+
+        a
+            display: block
+
+            &:before
+                top: 10px
+
+        span.parent
+            color: $COLOR_TEXT_ASIDE
+            font-weight: normal
+
+    &.has-focus
+        background-color: $COLOR_PANEL_DIVIDER
+
+        .field input
+            top: 0
+            opacity: 1
+
+        .title
+            z-index: 0
+            opacity: 0
+
+        .results
+            visibility: visible
+
+    &.loading .results li.state.loading
+        display: block
+
+    &.failure .results li.state.failure
+        display: block

+ 152 - 0
website/typedoc-theme/assets/css/elements/_signatures.sass

@@ -0,0 +1,152 @@
+// Wraps a function signature.
+// Changes its appearance when directly placed inside a `tsd-panel`.
+// Can be combined with class `tsd-kind-icon` to display an icon in front of the signature.
+//
+// <div class="tsd-kind-method">
+//   <div class="tsd-signature tsd-kind-icon">
+//     get<wbr>Child<wbr>ByName<span class="tsd-signature-symbol">(</span>
+//       name<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>
+//     <span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span>
+//     <a href="# class="tsd-signature-type">DeclarationReflection</a>
+//   </div>
+// </div>
+//
+.tsd-signature
+    margin: 0 0 1em 0
+    padding: 10px
+    border: 1px solid $COLOR_PANEL_DIVIDER
+    font-family: $FONT_FAMILY_MONO
+    font-size: $FONT_SIZE_MONO
+    overflow-x: auto
+
+    &.tsd-kind-icon
+        padding-left: 30px
+
+        &:before
+            top: 10px
+            left: 10px
+
+    .tsd-panel > &
+        margin-left: -20px
+        margin-right: -20px
+        border-width: 1px 0
+
+        &.tsd-kind-icon
+            padding-left: 40px
+
+            &:before
+                left: 20px
+
+.tsd-signature-symbol
+    color: $COLOR_TEXT_ASIDE
+    font-weight: normal
+
+.tsd-signature-type
+    font-style: italic
+    font-weight: normal
+
+
+// Displays a list of signatures.
+// Changes its appearance when directly placed inside a `tsd-panel`.
+// Made interactive by JavaScript at `typedoc.Signature`.
+//
+// <ul class="tsd-signatures tsd-kind-method">
+//   <li class="tsd-signature tsd-kind-icon current">getChildByName(name: string): DeclarationReflection</li>
+//   <li class="tsd-signature tsd-kind-icon">getChildByName(names: Array&lt;string&gt;): DeclarationReflection</li>
+// </ul>
+//
+.tsd-signatures
+    padding: 0
+    margin: 0 0 1em 0
+    border: 1px solid $COLOR_PANEL_DIVIDER
+
+    .tsd-signature
+        margin: 0
+        border-width: 1px 0 0 0
+        transition: background-color 0.1s
+
+        &:first-child
+            border-top-width: 0
+
+        &.current
+            background-color: $COLOR_PANEL_DIVIDER
+
+    &.active > .tsd-signature
+        cursor: pointer
+
+    .tsd-panel > &
+        margin-left: -20px
+        margin-right: -20px
+        border-width: 1px 0
+
+        .tsd-signature.tsd-kind-icon
+            padding-left: 40px
+
+            &:before
+                left: 20px
+
+    .tsd-panel > a.anchor + &
+        border-top-width: 0
+        margin-top: -20px
+
+
+// Holds the descriptions related to a list of signatures.
+// Made interactive by JavaScript at `typedoc.Signature`.
+//
+// <ul class="tsd-descriptions active">
+//   <li class="tsd-description current">
+//     <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.</p>
+//   </li>
+//   <li class="tsd-description">
+//     <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.</p>
+//   </li>
+// </ul>
+//
+ul.tsd-descriptions
+    position: relative
+    overflow: hidden
+    padding: 0
+    list-style: none
+
+    > li
+        @extend %prevent-children-margin
+
+    &.active > .tsd-description
+        display: none
+
+        &.current
+            display: block
+
+        &.fade-in
+            animation: fade-in-delayed 0.3s
+
+        &.fade-out
+            animation: fade-out-delayed 0.3s
+            position: absolute
+            display: block
+            top: 0
+            left: 0
+            right: 0
+            opacity: 0
+            visibility: hidden
+
+    h4
+        font-size: $FONT_SIZE
+        margin: 1em 0 0.5em 0
+
+ul.tsd-parameters,
+ul.tsd-type-parameters
+    list-style: square
+    margin: 0
+    padding-left: 20px
+
+    > li.tsd-parameter-signature
+        list-style: none
+        margin-left: -20px
+
+    h5
+        font-size: $FONT_SIZE
+        margin: 1em 0 0.5em 0
+
+    .tsd-comment
+        margin-top: -0.5em

+ 24 - 0
website/typedoc-theme/assets/css/elements/_sources.sass

@@ -0,0 +1,24 @@
+// Displays the source and inheritance information
+//
+// <aside class="tsd-sources">
+//   <p>Overrides <a href="#">BaseHandler</a>.<a href="#">constructor</a></p>
+//   <ul>
+//     <li>Defined in src/typedoc/factories/handlers/DynamicModuleHandler.ts:37</li>
+//   </ul>
+// </aside>
+//
+.tsd-sources
+    font-size: $FONT_SIZE_MONO
+    color: $COLOR_TEXT_ASIDE
+    margin: 0 0 1em 0
+
+    a
+        color: $COLOR_TEXT_ASIDE
+        text-decoration: underline
+
+    ul, p
+        margin: 0 !important
+
+    ul
+        list-style: none
+        padding: 0

+ 175 - 0
website/typedoc-theme/assets/css/elements/_toolbar.sass

@@ -0,0 +1,175 @@
+// Displays the toolbar at the top of the page.
+//
+// <div class="tsd-page-toolbar">
+//   <div class="container">
+//     <div class="table-wrap">
+//       <div class="table-cell">
+//         <a href="../index.html" class="title">TypeDoc Documentation</a>
+//       </div>
+//     </div>
+//   </div>
+// </div>
+//
+.tsd-page-toolbar
+    position: fixed
+    z-index: 1
+    top: 0
+    left: 0
+    width: 100%
+    height: $TOOLBAR_HEIGHT
+    color: $TOOLBAR_TEXT_COLOR
+    background: $TOOLBAR_COLOR
+    border-bottom: 1px solid $COLOR_PANEL_DIVIDER
+    transition: transform .3s linear
+
+    a
+        color: $TOOLBAR_TEXT_COLOR
+        text-decoration: none
+
+        &.title
+            font-weight: bold
+
+        &.title:hover
+            text-decoration: underline
+
+    .table-wrap
+        display: table
+        width: 100%
+        height: $TOOLBAR_HEIGHT
+
+    .table-cell
+        display: table-cell
+        position: relative
+        white-space: nowrap
+        line-height: $TOOLBAR_HEIGHT
+
+        &:first-child
+            width: 100%
+
+.tsd-page-toolbar--hide
+    transform: translateY(-100%)
+
+%TSD_WIDGET_ICON
+    &:before
+        content: ''
+        display: inline-block
+        width: 40px
+        height: 40px
+        margin: 0 -8px 0 0
+        background-image: url(../../images/widgets.png)
+        background-repeat: no-repeat
+        text-indent: -1024px
+        vertical-align: bottom
+
+        +retina
+            background-image: url(../../images/widgets@2x.png)
+            background-size: 320px 40px
+
+.tsd-widget
+    @extend %TSD_WIDGET_ICON
+    display: inline-block
+    overflow: hidden
+    opacity: 0.6
+    height: $TOOLBAR_HEIGHT
+    transition: opacity 0.1s, background-color 0.2s
+    vertical-align: bottom
+    cursor: pointer
+
+    &:hover
+        opacity: 0.8
+
+    &.active
+        opacity: 1
+        background-color: $COLOR_PANEL_DIVIDER
+
+    &.no-caption
+        width: 40px
+
+        &:before
+            margin: 0
+
+    &.search:before
+        background-position: 0 0
+
+    &.menu:before
+        background-position: -40px 0
+
+    &.options:before
+        background-position: -80px 0
+
+    &.options,
+    &.menu
+        display: none
+
+        +size-xs-sm
+            display: inline-block
+
+    input[type=checkbox] + &:before
+        background-position: -120px 0
+
+    input[type=checkbox]:checked + &:before
+        background-position: -160px 0
+
+.tsd-select
+    position: relative
+    display: inline-block
+    height: $TOOLBAR_HEIGHT
+    transition: opacity 0.1s, background-color 0.2s
+    vertical-align: bottom
+    cursor: pointer
+
+    .tsd-select-label
+        @extend %TSD_WIDGET_ICON
+        opacity: 0.6
+        transition: opacity 0.2s
+
+        &:before
+            background-position: -240px 0
+
+    &.active
+        .tsd-select-label
+            opacity: 0.8
+
+        .tsd-select-list
+            visibility: visible
+            opacity: 1
+            transition-delay: 0s
+
+    .tsd-select-list
+        position: absolute
+        visibility: hidden
+        top: $TOOLBAR_HEIGHT
+        left: 0
+        margin: 0
+        padding: 0
+        opacity: 0
+        list-style: none
+        box-shadow: 0 0 4px rgba(#000, 0.25)
+        transition: visibility 0s 0.2s, opacity 0.2s
+
+        li
+            @extend %TSD_WIDGET_ICON
+            padding: 0 20px 0 0
+            background-color: $COLOR_BACKGROUND
+
+            &:before
+                background-position: 40px 0
+
+            &:nth-child(even)
+                background-color: $COLOR_PANEL
+
+            &:hover
+                background-color: $COLOR_PANEL_DIVIDER
+
+            &.selected:before
+                background-position: -200px 0
+
+    +size-xs-sm
+        .tsd-select-list
+            top: 0
+            left: auto
+            right: 100%
+            margin-right: -5px
+
+        .tsd-select-label:before
+            background-position: -280px 0

+ 113 - 0
website/typedoc-theme/assets/css/layouts/_default.sass

@@ -0,0 +1,113 @@
+html.default
+    +size-md
+        .col-content
+            width: 72%
+
+        .col-menu
+            width: 28%
+
+        .tsd-navigation
+            padding-left: 10px
+
+    +size-xs-sm
+        .col-content
+            float: none
+            width: 100%
+
+        .col-menu
+            position: fixed !important
+            overflow: auto
+            -webkit-overflow-scrolling: touch
+            z-index: 1024
+            top: 0 !important
+            bottom: 0 !important
+            left: auto !important
+            right: 0 !important
+            width: 100%
+            padding: 20px 20px 0 0
+            max-width: 450px
+            visibility: hidden
+            background-color: $COLOR_PANEL
+            transform: translate(100%,0)
+
+            > *:last-child
+                padding-bottom: 20px
+
+        .overlay
+            content: ''
+            display: block
+            position: fixed
+            z-index: 1023
+            top: 0
+            left: 0
+            right: 0
+            bottom: 0
+            background-color: rgba(#000, 0.75)
+            visibility: hidden
+
+        &.to-has-menu
+            .overlay
+                animation: fade-in 0.4s
+
+            header,
+            footer,
+            .col-content
+                animation: shift-to-left 0.4s
+
+            .col-menu
+                animation: pop-in-from-right 0.4s
+
+        &.from-has-menu
+            .overlay
+                animation: fade-out 0.4s
+
+            header,
+            footer,
+            .col-content
+                animation: unshift-to-left 0.4s
+
+            .col-menu
+                animation: pop-out-to-right 0.4s
+
+        &.has-menu
+            body
+                overflow: hidden
+
+            .overlay
+                visibility: visible
+
+            header,
+            footer,
+            .col-content
+                transform: translate(-25%, 0)
+
+            .col-menu
+                visibility: visible
+                transform: translate(0,0)
+
+.tsd-page-title
+    padding: 70px 0 20px 0
+    margin: 0 0 40px 0
+    background: $COLOR_PANEL
+    box-shadow: 0 0 5px rgba(#000, 0.35)
+
+    h1
+        margin: 0
+
+.tsd-breadcrumb
+    margin: 0
+    padding: 0
+    color: $COLOR_TEXT_ASIDE
+
+    a
+        color: $COLOR_TEXT_ASIDE
+        text-decoration: none
+
+        &:hover
+            text-decoration: underline
+
+    li
+        display: inline
+
+        &:after
+            content: ' / '

+ 49 - 0
website/typedoc-theme/assets/css/layouts/_minimal.sass

@@ -0,0 +1,49 @@
+html.minimal
+    .container
+        margin: 0
+
+    .container-main
+        padding-top: 50px
+        padding-bottom: 0
+
+    .content-wrap
+        padding-left: 300px
+
+    .tsd-navigation
+        position: fixed !important
+        overflow: auto
+        -webkit-overflow-scrolling: touch
+        box-sizing: border-box
+        z-index: 1
+        left: 0
+        top: 40px
+        bottom: 0
+        width: 300px
+        padding: 20px
+        margin: 0
+
+    .tsd-member .tsd-member
+        margin-left: 0
+
+    .tsd-page-toolbar
+        position: fixed
+        z-index: 2
+
+    #tsd-filter .tsd-filter-group
+        right: 0
+        transform: none
+
+    footer
+        background-color: transparent
+
+        .container
+            padding: 0
+
+    .tsd-generator
+        padding: 0
+
+    +size-xs-sm
+        .tsd-navigation
+            display: none
+        .content-wrap
+            padding-left: 0

+ 0 - 873
website/typedoc-theme/assets/css/main.css

@@ -1,873 +0,0 @@
-/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
-/* ========================================================================== HTML5 display definitions ========================================================================== */
-/** Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */
-article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
-
-/** Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */
-audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }
-
-/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
-audio:not([controls]) { display: none; height: 0; }
-
-/** Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. Known issue: no IE 6 support. */
-[hidden] { display: none; }
-
-/* ========================================================================== Base ========================================================================== */
-/** 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using `em` units. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
-html { font-size: 100%; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ font-family: sans-serif; }
-
-/** Address `font-family` inconsistency between `textarea` and other form elements. */
-button, input, select, textarea { font-family: sans-serif; }
-
-/** Address margins handled incorrectly in IE 6/7. */
-body { margin: 0; }
-
-/* ========================================================================== Links ========================================================================== */
-/** Address `outline` inconsistency between Chrome and other browsers. */
-a:focus { outline: thin dotted; }
-a:active, a:hover { outline: 0; }
-
-/** Improve readability when focused and also mouse hovered in all browsers. */
-/* ========================================================================== Typography ========================================================================== */
-/** Address font sizes and margins set differently in IE 6/7. Address font sizes within `section` and `article` in Firefox 4+, Safari 5, and Chrome. */
-h1 { font-size: 2em; margin: 0.67em 0; }
-
-h2 { font-size: 1.5em; margin: 0.83em 0; }
-
-h3 { font-size: 1.17em; margin: 1em 0; }
-
-h4, .tsd-index-panel h3 { font-size: 1em; margin: 1.33em 0; }
-
-h5 { font-size: 0.83em; margin: 1.67em 0; }
-
-h6 { font-size: 0.67em; margin: 2.33em 0; }
-
-/** Address styling not present in IE 7/8/9, Safari 5, and Chrome. */
-abbr[title] { border-bottom: 1px dotted; }
-
-/** Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */
-b, strong { font-weight: bold; }
-
-blockquote { margin: 1em 40px; }
-
-/** Address styling not present in Safari 5 and Chrome. */
-dfn { font-style: italic; }
-
-/** Address differences between Firefox and other browsers. Known issue: no IE 6/7 normalization. */
-hr { box-sizing: content-box; height: 0; }
-
-/** Address styling not present in IE 6/7/8/9. */
-mark { background: #ff0; color: #000; }
-
-/** Address margins set differently in IE 6/7. */
-p, pre { margin: 1em 0; }
-
-/** Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */
-code, kbd, pre, samp { font-family: monospace, serif; _font-family: "courier new", monospace; font-size: 1em; }
-
-/** Improve readability of pre-formatted text in all browsers. */
-pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
-
-/** Address CSS quotes not supported in IE 6/7. */
-q { quotes: none; }
-q:before, q:after { content: ""; content: none; }
-
-/** Address `quotes` property not supported in Safari 4. */
-/** Address inconsistent and variable font size in all browsers. */
-small { font-size: 80%; }
-
-/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
-sub { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
-
-sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; top: -0.5em; }
-
-sub { bottom: -0.25em; }
-
-/* ========================================================================== Lists ========================================================================== */
-/** Address margins set differently in IE 6/7. */
-dl, menu, ol, ul { margin: 1em 0; }
-
-dd { margin: 0 0 0 40px; }
-
-/** Address paddings set differently in IE 6/7. */
-menu, ol, ul { padding: 0 0 0 40px; }
-
-/** Correct list images handled incorrectly in IE 7. */
-nav ul, nav ol { list-style: none; list-style-image: none; }
-
-/* ========================================================================== Embedded content ========================================================================== */
-/** 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. 2. Improve image quality when scaled in IE 7. */
-img { border: 0; /* 1 */ -ms-interpolation-mode: bicubic; }
-
-/* 2 */
-/** Correct overflow displayed oddly in IE 9. */
-svg:not(:root) { overflow: hidden; }
-
-/* ========================================================================== Figures ========================================================================== */
-/** Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */
-figure, form { margin: 0; }
-
-/* ========================================================================== Forms ========================================================================== */
-/** Correct margin displayed oddly in IE 6/7. */
-/** Define consistent border, margin, and padding. */
-fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
-
-/** 1. Correct color not being inherited in IE 6/7/8/9. 2. Correct text not wrapping in Firefox 3. 3. Correct alignment displayed oddly in IE 6/7. */
-legend { border: 0; /* 1 */ padding: 0; white-space: normal; /* 2 */ *margin-left: -7px; }
-
-/* 3 */
-/** 1. Correct font size not being inherited in all browsers. 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, and Chrome. 3. Improve appearance and consistency in all browsers. */
-button, input, select, textarea { font-size: 100%; /* 1 */ margin: 0; /* 2 */ vertical-align: baseline; /* 3 */ *vertical-align: middle; }
-
-/* 3 */
-/** Address Firefox 3+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
-button, input { line-height: normal; }
-
-/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. Correct `select` style inheritance in Firefox 4+ and Opera. */
-button, select { text-transform: none; }
-
-/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. 4. Remove inner spacing in IE 7 without affecting normal text inputs. Known issue: inner spacing remains in IE 6. */
-button, html input[type="button"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ *overflow: visible; }
-
-/* 4 */
-input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ *overflow: visible; }
-
-/* 4 */
-/** Re-set default cursor for disabled elements. */
-button[disabled], html input[disabled] { cursor: default; }
-
-/** 1. Address box sizing set to content-box in IE 8/9. 2. Remove excess padding in IE 8/9. 3. Remove excess padding in IE 7. Known issue: excess padding remains in IE 6. */
-input { /* 3 */ }
-input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ *height: 13px; /* 3 */ *width: 13px; }
-input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; }
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
-
-/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
-/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
-/** Remove inner padding and border in Firefox 3+. */
-button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
-
-/** 1. Remove default vertical scrollbar in IE 6/7/8/9. 2. Improve readability and alignment in all browsers. */
-textarea { overflow: auto; /* 1 */ vertical-align: top; }
-
-/* 2 */
-/* ========================================================================== Tables ========================================================================== */
-/** Remove most spacing between table cells. */
-table { border-collapse: collapse; border-spacing: 0; }
-
-/* Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name> */
-.hljs { display: inline-block; padding: 0.5em; background: white; color: black; }
-
-.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { color: #008000; }
-
-.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { color: #00f; }
-
-.xml .hljs-tag { color: #00f; }
-.xml .hljs-tag .hljs-value { color: #00f; }
-
-.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { color: #a31515; }
-
-.ruby .hljs-symbol { color: #a31515; }
-.ruby .hljs-symbol .hljs-string { color: #a31515; }
-
-.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { color: #a31515; }
-
-.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { color: #2b91af; }
-
-.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { color: #808080; }
-
-.vhdl .hljs-typename { font-weight: bold; }
-.vhdl .hljs-string { color: #666666; }
-.vhdl .hljs-literal { color: #a31515; }
-.vhdl .hljs-attribute { color: #00b0e8; }
-
-.xml .hljs-attribute { color: #f00; }
-
-.col > :first-child, .col-1 > :first-child, .col-2 > :first-child, .col-3 > :first-child, .col-4 > :first-child, .col-5 > :first-child, .col-6 > :first-child, .col-7 > :first-child, .col-8 > :first-child, .col-9 > :first-child, .col-10 > :first-child, .col-11 > :first-child, .tsd-panel > :first-child, ul.tsd-descriptions > li > :first-child, .col > :first-child > :first-child, .col-1 > :first-child > :first-child, .col-2 > :first-child > :first-child, .col-3 > :first-child > :first-child, .col-4 > :first-child > :first-child, .col-5 > :first-child > :first-child, .col-6 > :first-child > :first-child, .col-7 > :first-child > :first-child, .col-8 > :first-child > :first-child, .col-9 > :first-child > :first-child, .col-10 > :first-child > :first-child, .col-11 > :first-child > :first-child, .tsd-panel > :first-child > :first-child, ul.tsd-descriptions > li > :first-child > :first-child, .col > :first-child > :first-child > :first-child, .col-1 > :first-child > :first-child > :first-child, .col-2 > :first-child > :first-child > :first-child, .col-3 > :first-child > :first-child > :first-child, .col-4 > :first-child > :first-child > :first-child, .col-5 > :first-child > :first-child > :first-child, .col-6 > :first-child > :first-child > :first-child, .col-7 > :first-child > :first-child > :first-child, .col-8 > :first-child > :first-child > :first-child, .col-9 > :first-child > :first-child > :first-child, .col-10 > :first-child > :first-child > :first-child, .col-11 > :first-child > :first-child > :first-child, .tsd-panel > :first-child > :first-child > :first-child, ul.tsd-descriptions > li > :first-child > :first-child > :first-child { margin-top: 0; }
-.col > :last-child, .col-1 > :last-child, .col-2 > :last-child, .col-3 > :last-child, .col-4 > :last-child, .col-5 > :last-child, .col-6 > :last-child, .col-7 > :last-child, .col-8 > :last-child, .col-9 > :last-child, .col-10 > :last-child, .col-11 > :last-child, .tsd-panel > :last-child, ul.tsd-descriptions > li > :last-child, .col > :last-child > :last-child, .col-1 > :last-child > :last-child, .col-2 > :last-child > :last-child, .col-3 > :last-child > :last-child, .col-4 > :last-child > :last-child, .col-5 > :last-child > :last-child, .col-6 > :last-child > :last-child, .col-7 > :last-child > :last-child, .col-8 > :last-child > :last-child, .col-9 > :last-child > :last-child, .col-10 > :last-child > :last-child, .col-11 > :last-child > :last-child, .tsd-panel > :last-child > :last-child, ul.tsd-descriptions > li > :last-child > :last-child, .col > :last-child > :last-child > :last-child, .col-1 > :last-child > :last-child > :last-child, .col-2 > :last-child > :last-child > :last-child, .col-3 > :last-child > :last-child > :last-child, .col-4 > :last-child > :last-child > :last-child, .col-5 > :last-child > :last-child > :last-child, .col-6 > :last-child > :last-child > :last-child, .col-7 > :last-child > :last-child > :last-child, .col-8 > :last-child > :last-child > :last-child, .col-9 > :last-child > :last-child > :last-child, .col-10 > :last-child > :last-child > :last-child, .col-11 > :last-child > :last-child > :last-child, .tsd-panel > :last-child > :last-child > :last-child, ul.tsd-descriptions > li > :last-child > :last-child > :last-child { margin-bottom: 0; }
-
-.container { max-width: 1200px; margin: 0 auto; padding: 0 40px; }
-@media (max-width: 640px) { .container { padding: 0 20px; } }
-
-.container-main { padding-bottom: 200px; }
-
-.row { position: relative; margin: 0 -10px; }
-.row:after { visibility: hidden; display: block; content: ""; clear: both; height: 0; }
-
-.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11 { box-sizing: border-box; float: left; padding: 0 10px; }
-
-.col-1 { width: 8.33333%; }
-
-.offset-1 { margin-left: 8.33333%; }
-
-.col-2 { width: 16.66667%; }
-
-.offset-2 { margin-left: 16.66667%; }
-
-.col-3 { width: 25%; }
-
-.offset-3 { margin-left: 25%; }
-
-.col-4 { width: 33.33333%; }
-
-.offset-4 { margin-left: 33.33333%; }
-
-.col-5 { width: 41.66667%; }
-
-.offset-5 { margin-left: 41.66667%; }
-
-.col-6 { width: 50%; }
-
-.offset-6 { margin-left: 50%; }
-
-.col-7 { width: 58.33333%; }
-
-.offset-7 { margin-left: 58.33333%; }
-
-.col-8 { width: 66.66667%; }
-
-.offset-8 { margin-left: 66.66667%; }
-
-.col-9 { width: 75%; }
-
-.offset-9 { margin-left: 75%; }
-
-.col-10 { width: 83.33333%; }
-
-.offset-10 { margin-left: 83.33333%; }
-
-.col-11 { width: 91.66667%; }
-
-.offset-11 { margin-left: 91.66667%; }
-
-.tsd-kind-icon { display: block; position: relative; padding-left: 20px; text-indent: -20px; }
-.tsd-kind-icon:before { content: ''; display: inline-block; vertical-align: middle; width: 17px; height: 17px; margin: 0 3px 2px 0; background-image: url(../images/icons.png); }
-@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { .tsd-kind-icon:before { background-image: url(../images/icons@2x.png); background-size: 238px 204px; } }
-
-.tsd-signature.tsd-kind-icon:before { background-position: 0 -153px; }
-
-.tsd-kind-object-literal > .tsd-kind-icon:before { background-position: 0px -17px; }
-.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -17px; }
-.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -17px; }
-
-.tsd-kind-class > .tsd-kind-icon:before { background-position: 0px -34px; }
-.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -34px; }
-.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -34px; }
-
-.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: 0px -51px; }
-.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -51px; }
-.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -51px; }
-
-.tsd-kind-interface > .tsd-kind-icon:before { background-position: 0px -68px; }
-.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -68px; }
-.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -68px; }
-
-.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: 0px -85px; }
-.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -85px; }
-.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -85px; }
-
-.tsd-kind-module > .tsd-kind-icon:before { background-position: 0px -102px; }
-.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -102px; }
-.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -102px; }
-
-.tsd-kind-external-module > .tsd-kind-icon:before { background-position: 0px -102px; }
-.tsd-kind-external-module.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -102px; }
-.tsd-kind-external-module.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -102px; }
-
-.tsd-kind-enum > .tsd-kind-icon:before { background-position: 0px -119px; }
-.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -119px; }
-.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -119px; }
-
-.tsd-kind-enum-member > .tsd-kind-icon:before { background-position: 0px -136px; }
-.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -136px; }
-.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -136px; }
-
-.tsd-kind-signature > .tsd-kind-icon:before { background-position: 0px -153px; }
-.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -153px; }
-.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -153px; }
-
-.tsd-kind-type-alias > .tsd-kind-icon:before { background-position: 0px -170px; }
-.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -170px; }
-.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -170px; }
-
-.tsd-kind-variable > .tsd-kind-icon:before { background-position: -136px -0px; }
-.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -0px; }
-.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; }
-.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -0px; }
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -0px; }
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -0px; }
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -0px; }
-.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; }
-.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -0px; }
-.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -0px; }
-.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; }
-.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -0px; }
-.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -0px; }
-
-.tsd-kind-property > .tsd-kind-icon:before { background-position: -136px -0px; }
-.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -0px; }
-.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; }
-.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -0px; }
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -0px; }
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -0px; }
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -0px; }
-.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; }
-.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -0px; }
-.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -0px; }
-.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; }
-.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -0px; }
-.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -0px; }
-
-.tsd-kind-get-signature > .tsd-kind-icon:before { background-position: -136px -17px; }
-.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -17px; }
-.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -17px; }
-.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -17px; }
-
-.tsd-kind-set-signature > .tsd-kind-icon:before { background-position: -136px -34px; }
-.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -34px; }
-.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -34px; }
-.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -34px; }
-
-.tsd-kind-accessor > .tsd-kind-icon:before { background-position: -136px -51px; }
-.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -51px; }
-.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -51px; }
-.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -51px; }
-
-.tsd-kind-function > .tsd-kind-icon:before { background-position: -136px -68px; }
-.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -68px; }
-.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -68px; }
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -68px; }
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -68px; }
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -68px; }
-.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -68px; }
-.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -68px; }
-.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -68px; }
-.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -68px; }
-
-.tsd-kind-method > .tsd-kind-icon:before { background-position: -136px -68px; }
-.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -68px; }
-.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -68px; }
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -68px; }
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -68px; }
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -68px; }
-.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -68px; }
-.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -68px; }
-.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -68px; }
-.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -68px; }
-
-.tsd-kind-call-signature > .tsd-kind-icon:before { background-position: -136px -68px; }
-.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -68px; }
-.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -68px; }
-.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -68px; }
-
-.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: -136px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -85px; }
-.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -85px; }
-
-.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: -136px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -85px; }
-.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -85px; }
-
-.tsd-kind-constructor > .tsd-kind-icon:before { background-position: -136px -102px; }
-.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -102px; }
-.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -102px; }
-.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -102px; }
-
-.tsd-kind-constructor-signature > .tsd-kind-icon:before { background-position: -136px -102px; }
-.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -102px; }
-.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -102px; }
-.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -102px; }
-
-.tsd-kind-index-signature > .tsd-kind-icon:before { background-position: -136px -119px; }
-.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -119px; }
-.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -119px; }
-.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -119px; }
-
-.tsd-kind-event > .tsd-kind-icon:before { background-position: -136px -136px; }
-.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -136px; }
-.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -136px; }
-.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -136px; }
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -136px; }
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -136px; }
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -136px; }
-.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -136px; }
-.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -136px; }
-.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -136px; }
-.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -136px; }
-.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -136px; }
-.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -136px; }
-
-.tsd-is-static > .tsd-kind-icon:before { background-position: -136px -153px; }
-.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -153px; }
-.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -153px; }
-.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -153px; }
-.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -153px; }
-.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -153px; }
-.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -153px; }
-.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -153px; }
-.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -153px; }
-.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -153px; }
-.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -153px; }
-.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -153px; }
-.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -153px; }
-
-.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { background-position: -136px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -170px; }
-.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -170px; }
-
-.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { background-position: -136px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -170px; }
-.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -170px; }
-
-.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { background-position: -136px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -170px; }
-.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -170px; }
-
-.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { background-position: -136px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -187px; }
-.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -187px; }
-
-.no-transition { -webkit-transition: none !important; transition: none !important; }
-
-@-webkit-keyframes fade-in { from { opacity: 0; }
-  to { opacity: 1; } }
-
-@keyframes fade-in { from { opacity: 0; }
-  to { opacity: 1; } }
-@-webkit-keyframes fade-out { from { opacity: 1; visibility: visible; }
-  to { opacity: 0; } }
-@keyframes fade-out { from { opacity: 1; visibility: visible; }
-  to { opacity: 0; } }
-@-webkit-keyframes fade-in-delayed { 0% { opacity: 0; }
-  33% { opacity: 0; }
-  100% { opacity: 1; } }
-@keyframes fade-in-delayed { 0% { opacity: 0; }
-  33% { opacity: 0; }
-  100% { opacity: 1; } }
-@-webkit-keyframes fade-out-delayed { 0% { opacity: 1; visibility: visible; }
-  66% { opacity: 0; }
-  100% { opacity: 0; } }
-@keyframes fade-out-delayed { 0% { opacity: 1; visibility: visible; }
-  66% { opacity: 0; }
-  100% { opacity: 0; } }
-@-webkit-keyframes shift-to-left { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); }
-  to { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } }
-@keyframes shift-to-left { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); }
-  to { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } }
-@-webkit-keyframes unshift-to-left { from { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); }
-  to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } }
-@keyframes unshift-to-left { from { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); }
-  to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } }
-@-webkit-keyframes pop-in-from-right { from { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); }
-  to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } }
-@keyframes pop-in-from-right { from { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); }
-  to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } }
-@-webkit-keyframes pop-out-to-right { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; }
-  to { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } }
-@keyframes pop-out-to-right { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; }
-  to { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } }
-body { background: #fdfdfd; font-family: "Segoe UI", sans-serif; font-size: 16px; color: #222; }
-
-a { color: #4da6ff; text-decoration: none; }
-a:hover { text-decoration: underline; }
-
-code, pre { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; padding: 0.2em; margin: 0; font-size: 14px; background-color: rgba(0, 0, 0, 0.04); }
-
-pre { padding: 10px; }
-pre code { padding: 0; font-size: 100%; background-color: transparent; }
-
-.tsd-typography { line-height: 1.333em; }
-.tsd-typography ul { list-style: square; padding: 0 0 0 20px; margin: 0; }
-.tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { font-size: 1em; margin: 0; }
-.tsd-typography h5, .tsd-typography h6 { font-weight: normal; }
-.tsd-typography p, .tsd-typography ul, .tsd-typography ol { margin: 1em 0; }
-
-@media (min-width: 901px) and (max-width: 1024px) { html.default .col-content { width: 72%; }
-  html.default .col-menu { width: 28%; }
-  html.default .tsd-navigation { padding-left: 10px; } }
-@media (max-width: 900px) { html.default .col-content { float: none; width: 100%; }
-  html.default .col-menu { position: fixed !important; overflow: auto; -webkit-overflow-scrolling: touch; overflow-scrolling: touch; z-index: 1024; top: 0 !important; bottom: 0 !important; left: auto !important; right: 0 !important; width: 100%; padding: 20px 20px 0 0; max-width: 450px; visibility: hidden; background-color: #fff; -webkit-transform: translate(100%, 0); transform: translate(100%, 0); }
-  html.default .col-menu > *:last-child { padding-bottom: 20px; }
-  html.default .overlay { content: ""; display: block; position: fixed; z-index: 1023; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.75); visibility: hidden; }
-  html.default.to-has-menu .overlay { -webkit-animation: fade-in 0.4s; animation: fade-in 0.4s; }
-  html.default.to-has-menu header, html.default.to-has-menu footer, html.default.to-has-menu .col-content { -webkit-animation: shift-to-left 0.4s; animation: shift-to-left 0.4s; }
-  html.default.to-has-menu .col-menu { -webkit-animation: pop-in-from-right 0.4s; animation: pop-in-from-right 0.4s; }
-  html.default.from-has-menu .overlay { -webkit-animation: fade-out 0.4s; animation: fade-out 0.4s; }
-  html.default.from-has-menu header, html.default.from-has-menu footer, html.default.from-has-menu .col-content { -webkit-animation: unshift-to-left 0.4s; animation: unshift-to-left 0.4s; }
-  html.default.from-has-menu .col-menu { -webkit-animation: pop-out-to-right 0.4s; animation: pop-out-to-right 0.4s; }
-  html.default.has-menu body { overflow: hidden; }
-  html.default.has-menu .overlay { visibility: visible; }
-  html.default.has-menu header, html.default.has-menu footer, html.default.has-menu .col-content { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); }
-  html.default.has-menu .col-menu { visibility: visible; -webkit-transform: translate(0, 0); transform: translate(0, 0); } }
-
-.tsd-page-title { padding: 70px 0 20px 0; margin: 0 0 40px 0; background: #fff; box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); }
-.tsd-page-title h1 { margin: 0; }
-
-.tsd-breadcrumb { margin: 0; padding: 0; color: #808080; }
-.tsd-breadcrumb a { color: #808080; text-decoration: none; }
-.tsd-breadcrumb a:hover { text-decoration: underline; }
-.tsd-breadcrumb li { display: inline; }
-.tsd-breadcrumb li:after { content: " / "; }
-
-html.minimal .container { margin: 0; }
-html.minimal .container-main { padding-top: 50px; padding-bottom: 0; }
-html.minimal .content-wrap { padding-left: 300px; }
-html.minimal .tsd-navigation { position: fixed !important; overflow: auto; -webkit-overflow-scrolling: touch; overflow-scrolling: touch; box-sizing: border-box; z-index: 1; left: 0; top: 40px; bottom: 0; width: 300px; padding: 20px; margin: 0; }
-html.minimal .tsd-member .tsd-member { margin-left: 0; }
-html.minimal .tsd-page-toolbar { position: fixed; z-index: 2; }
-html.minimal #tsd-filter .tsd-filter-group { right: 0; -webkit-transform: none; transform: none; }
-html.minimal footer { background-color: transparent; }
-html.minimal footer .container { padding: 0; }
-html.minimal .tsd-generator { padding: 0; }
-@media (max-width: 900px) { html.minimal .tsd-navigation { display: none; }
-  html.minimal .content-wrap { padding-left: 0; } }
-
-dl.tsd-comment-tags { overflow: hidden; }
-dl.tsd-comment-tags dt { clear: both; float: left; padding: 1px 5px; margin: 0 10px 0 0; border-radius: 4px; border: 1px solid #808080; color: #808080; font-size: 0.8em; font-weight: normal; }
-dl.tsd-comment-tags dd { margin: 0 0 10px 0; }
-dl.tsd-comment-tags p { margin: 0; }
-
-.tsd-panel.tsd-comment .lead { font-size: 1.1em; line-height: 1.333em; margin-bottom: 2em; }
-.tsd-panel.tsd-comment .lead:last-child { margin-bottom: 0; }
-
-.toggle-protected .tsd-is-private { display: none; }
-
-.toggle-public .tsd-is-private, .toggle-public .tsd-is-protected, .toggle-public .tsd-is-private-protected { display: none; }
-
-.toggle-inherited .tsd-is-inherited { display: none; }
-
-.toggle-only-exported .tsd-is-not-exported { display: none; }
-
-.toggle-externals .tsd-is-external { display: none; }
-
-#tsd-filter { position: relative; display: inline-block; height: 40px; vertical-align: bottom; }
-.no-filter #tsd-filter { display: none; }
-#tsd-filter .tsd-filter-group { display: inline-block; height: 40px; vertical-align: bottom; white-space: nowrap; }
-#tsd-filter input { display: none; }
-@media (max-width: 900px) { #tsd-filter .tsd-filter-group { display: block; position: absolute; top: 40px; right: 20px; height: auto; background-color: #fff; visibility: hidden; -webkit-transform: translate(50%, 0); transform: translate(50%, 0); box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); }
-  .has-options #tsd-filter .tsd-filter-group { visibility: visible; }
-  .to-has-options #tsd-filter .tsd-filter-group { -webkit-animation: fade-in 0.2s; animation: fade-in 0.2s; }
-  .from-has-options #tsd-filter .tsd-filter-group { -webkit-animation: fade-out 0.2s; animation: fade-out 0.2s; }
-  #tsd-filter label, #tsd-filter .tsd-select { display: block; padding-right: 20px; } }
-
-footer { border-top: 1px solid #eee; background-color: #fff; }
-footer.with-border-bottom { border-bottom: 1px solid #eee; }
-footer .tsd-legend-group { font-size: 0; }
-footer .tsd-legend { display: inline-block; width: 25%; padding: 0; font-size: 16px; list-style: none; line-height: 1.333em; vertical-align: top; }
-@media (max-width: 900px) { footer .tsd-legend { width: 50%; } }
-
-.tsd-hierarchy { list-style: square; padding: 0 0 0 20px; margin: 0; }
-.tsd-hierarchy .target { font-weight: bold; }
-
-.tsd-index-panel .tsd-index-content { margin-bottom: -30px !important; }
-.tsd-index-panel .tsd-index-section { margin-bottom: 30px !important; }
-.tsd-index-panel h3 { margin: 0 -20px 10px -20px; padding: 0 20px 10px 20px; border-bottom: 1px solid #eee; }
-.tsd-index-panel ul.tsd-index-list { -webkit-column-count: 3; -moz-column-count: 3; -ms-column-count: 3; -o-column-count: 3; column-count: 3; -webkit-column-gap: 20px; -moz-column-gap: 20px; -ms-column-gap: 20px; -o-column-gap: 20px; column-gap: 20px; padding: 0; list-style: none; line-height: 1.333em; }
-@media (max-width: 900px) { .tsd-index-panel ul.tsd-index-list { -webkit-column-count: 1; -moz-column-count: 1; -ms-column-count: 1; -o-column-count: 1; column-count: 1; } }
-@media (min-width: 901px) and (max-width: 1024px) { .tsd-index-panel ul.tsd-index-list { -webkit-column-count: 2; -moz-column-count: 2; -ms-column-count: 2; -o-column-count: 2; column-count: 2; } }
-.tsd-index-panel ul.tsd-index-list li { -webkit-column-break-inside: avoid; -moz-column-break-inside: avoid; -ms-column-break-inside: avoid; -o-column-break-inside: avoid; column-break-inside: avoid; -webkit-page-break-inside: avoid; -moz-page-break-inside: avoid; -ms-page-break-inside: avoid; -o-page-break-inside: avoid; page-break-inside: avoid; }
-.tsd-index-panel a, .tsd-index-panel .tsd-parent-kind-module a { color: #9600ff; }
-.tsd-index-panel .tsd-parent-kind-interface a { color: #7da01f; }
-.tsd-index-panel .tsd-parent-kind-enum a { color: #cc9900; }
-.tsd-index-panel .tsd-parent-kind-class a { color: #4da6ff; }
-.tsd-index-panel .tsd-kind-module a { color: #9600ff; }
-.tsd-index-panel .tsd-kind-interface a { color: #7da01f; }
-.tsd-index-panel .tsd-kind-enum a { color: #cc9900; }
-.tsd-index-panel .tsd-kind-class a { color: #4da6ff; }
-.tsd-index-panel .tsd-is-private a { color: #808080; }
-
-.tsd-flag { display: inline-block; padding: 1px 5px; border-radius: 4px; color: #fff; background-color: #808080; text-indent: 0; font-size: 14px; font-weight: normal; }
-
-.tsd-anchor { position: absolute; top: -100px; }
-
-.tsd-member { position: relative; }
-.tsd-member .tsd-anchor + h3 { margin-top: 0; margin-bottom: 0; border-bottom: none; }
-
-.tsd-navigation { padding: 0 0 0 40px; }
-.tsd-navigation a { display: block; padding-top: 2px; padding-bottom: 2px; border-left: 2px solid transparent; color: #222; text-decoration: none; -webkit-transition: border-left-color 0.1s; transition: border-left-color 0.1s; }
-.tsd-navigation a:hover { text-decoration: underline; }
-.tsd-navigation ul { margin: 0; padding: 0; list-style: none; }
-.tsd-navigation li { padding: 0; }
-
-.tsd-navigation.primary { padding-bottom: 40px; }
-.tsd-navigation.primary a { display: block; padding-top: 6px; padding-bottom: 6px; }
-.tsd-navigation.primary ul li a { padding-left: 5px; }
-.tsd-navigation.primary ul li li a { padding-left: 25px; }
-.tsd-navigation.primary ul li li li a { padding-left: 45px; }
-.tsd-navigation.primary ul li li li li a { padding-left: 65px; }
-.tsd-navigation.primary ul li li li li li a { padding-left: 85px; }
-.tsd-navigation.primary ul li li li li li li a { padding-left: 105px; }
-.tsd-navigation.primary > ul { border-bottom: 1px solid #eee; }
-.tsd-navigation.primary li { border-top: 1px solid #eee; }
-.tsd-navigation.primary li.current > a { font-weight: bold; }
-.tsd-navigation.primary li.label span { display: block; padding: 20px 0 6px 5px; color: #808080; }
-.tsd-navigation.primary li.globals + li > span, .tsd-navigation.primary li.globals + li > a { padding-top: 20px; }
-
-.tsd-navigation.secondary ul { -webkit-transition: opacity 0.2s; transition: opacity 0.2s; }
-.tsd-navigation.secondary ul li a { padding-left: 25px; }
-.tsd-navigation.secondary ul li li a { padding-left: 45px; }
-.tsd-navigation.secondary ul li li li a { padding-left: 65px; }
-.tsd-navigation.secondary ul li li li li a { padding-left: 85px; }
-.tsd-navigation.secondary ul li li li li li a { padding-left: 105px; }
-.tsd-navigation.secondary ul li li li li li li a { padding-left: 125px; }
-.tsd-navigation.secondary ul.current a { border-left-color: #eee; }
-.tsd-navigation.secondary li.focus > a, .tsd-navigation.secondary ul.current li.focus > a { border-left-color: #000; }
-.tsd-navigation.secondary li.current { margin-top: 20px; margin-bottom: 20px; border-left-color: #eee; }
-.tsd-navigation.secondary li.current > a { font-weight: bold; }
-
-@media (min-width: 901px) { .menu-sticky-wrap { position: static; }
-  .no-csspositionsticky .menu-sticky-wrap.sticky { position: fixed; }
-  .no-csspositionsticky .menu-sticky-wrap.sticky-current { position: fixed; }
-  .no-csspositionsticky .menu-sticky-wrap.sticky-current ul.before-current, .no-csspositionsticky .menu-sticky-wrap.sticky-current ul.after-current { opacity: 0; }
-  .no-csspositionsticky .menu-sticky-wrap.sticky-bottom { position: absolute; top: auto !important; left: auto !important; bottom: 0; right: 0; }
-  .csspositionsticky .menu-sticky-wrap.sticky { position: -webkit-sticky; position: sticky; }
-  .csspositionsticky .menu-sticky-wrap.sticky-current { position: -webkit-sticky; position: sticky; } }
-
-.tsd-panel { margin: 20px 0; padding: 20px; background-color: #fff; box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); }
-.tsd-panel:empty { display: none; }
-.tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { margin: 1.5em -20px 10px -20px; padding: 0 20px 10px 20px; border-bottom: 1px solid #eee; }
-.tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { margin-bottom: 0; border-bottom: 0; }
-.tsd-panel table { display: block; width: 100%; overflow: auto; margin-top: 10px; word-break: normal; word-break: keep-all; }
-.tsd-panel table th { font-weight: bold; }
-.tsd-panel table th, .tsd-panel table td { padding: 6px 13px; border: 1px solid #ddd; }
-.tsd-panel table tr { background-color: #fff; border-top: 1px solid #ccc; }
-.tsd-panel table tr:nth-child(2n) { background-color: #f8f8f8; }
-
-.tsd-panel-group { margin: 60px 0; }
-.tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { padding-left: 20px; padding-right: 20px; }
-
-#tsd-search { -webkit-transition: background-color 0.2s; transition: background-color 0.2s; }
-#tsd-search .title { position: relative; z-index: 2; }
-#tsd-search .field { position: absolute; left: 0; top: 0; right: 40px; height: 40px; }
-#tsd-search .field input { box-sizing: border-box; position: relative; top: -50px; z-index: 1; width: 100%; padding: 0 10px; opacity: 0; outline: 0; border: 0; background: transparent; color: #222; }
-#tsd-search .field label { position: absolute; overflow: hidden; right: -40px; }
-#tsd-search .field input, #tsd-search .title { -webkit-transition: opacity 0.2s; transition: opacity 0.2s; }
-#tsd-search .results { position: absolute; visibility: hidden; top: 40px; width: 100%; margin: 0; padding: 0; list-style: none; box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); }
-#tsd-search .results li { padding: 0 10px; background-color: #fdfdfd; }
-#tsd-search .results li:nth-child(even) { background-color: #fff; }
-#tsd-search .results li.state { display: none; }
-#tsd-search .results li.current, #tsd-search .results li:hover { background-color: #eee; }
-#tsd-search .results a { display: block; }
-#tsd-search .results a:before { top: 10px; }
-#tsd-search .results span.parent { color: #808080; font-weight: normal; }
-#tsd-search.has-focus { background-color: #eee; }
-#tsd-search.has-focus .field input { top: 0; opacity: 1; }
-#tsd-search.has-focus .title { z-index: 0; opacity: 0; }
-#tsd-search.has-focus .results { visibility: visible; }
-#tsd-search.loading .results li.state.loading { display: block; }
-#tsd-search.failure .results li.state.failure { display: block; }
-
-.tsd-signature { margin: 0 0 1em 0; padding: 10px; border: 1px solid #eee; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; }
-.tsd-signature.tsd-kind-icon { padding-left: 30px; }
-.tsd-signature.tsd-kind-icon:before { top: 10px; left: 10px; }
-.tsd-panel > .tsd-signature { margin-left: -20px; margin-right: -20px; border-width: 1px 0; }
-.tsd-panel > .tsd-signature.tsd-kind-icon { padding-left: 40px; }
-.tsd-panel > .tsd-signature.tsd-kind-icon:before { left: 20px; }
-
-.tsd-signature-symbol { color: #808080; font-weight: normal; }
-
-.tsd-signature-type { font-style: italic; font-weight: normal; }
-
-.tsd-signatures { padding: 0; margin: 0 0 1em 0; border: 1px solid #eee; }
-.tsd-signatures .tsd-signature { margin: 0; border-width: 1px 0 0 0; -webkit-transition: background-color 0.1s; transition: background-color 0.1s; }
-.tsd-signatures .tsd-signature:first-child { border-top-width: 0; }
-.tsd-signatures .tsd-signature.current { background-color: #eee; }
-.tsd-signatures.active > .tsd-signature { cursor: pointer; }
-.tsd-panel > .tsd-signatures { margin-left: -20px; margin-right: -20px; border-width: 1px 0; }
-.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { padding-left: 40px; }
-.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { left: 20px; }
-.tsd-panel > a.anchor + .tsd-signatures { border-top-width: 0; margin-top: -20px; }
-
-ul.tsd-descriptions { position: relative; overflow: hidden; -webkit-transition: height 0.3s; transition: height 0.3s; padding: 0; list-style: none; }
-ul.tsd-descriptions.active > .tsd-description { display: none; }
-ul.tsd-descriptions.active > .tsd-description.current { display: block; }
-ul.tsd-descriptions.active > .tsd-description.fade-in { -webkit-animation: fade-in-delayed 0.3s; animation: fade-in-delayed 0.3s; }
-ul.tsd-descriptions.active > .tsd-description.fade-out { -webkit-animation: fade-out-delayed 0.3s; animation: fade-out-delayed 0.3s; position: absolute; display: block; top: 0; left: 0; right: 0; opacity: 0; visibility: hidden; }
-ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { font-size: 16px; margin: 1em 0 0.5em 0; }
-
-ul.tsd-parameters, ul.tsd-type-parameters { list-style: square; margin: 0; padding-left: 20px; }
-ul.tsd-parameters > li.tsd-parameter-siganture, ul.tsd-type-parameters > li.tsd-parameter-siganture { list-style: none; margin-left: -20px; }
-ul.tsd-parameters h5, ul.tsd-type-parameters h5 { font-size: 16px; margin: 1em 0 0.5em 0; }
-ul.tsd-parameters .tsd-comment, ul.tsd-type-parameters .tsd-comment { margin-top: -0.5em; }
-
-.tsd-sources { font-size: 14px; color: #808080; margin: 0 0 1em 0; }
-.tsd-sources a { color: #808080; text-decoration: underline; }
-.tsd-sources ul, .tsd-sources p { margin: 0 !important; }
-.tsd-sources ul { list-style: none; padding: 0; }
-
-.tsd-page-toolbar { position: absolute; z-index: 1; top: 0; left: 0; width: 100%; height: 40px; color: #333; background: #fff; border-bottom: 1px solid #eee; }
-.tsd-page-toolbar a { color: #333; text-decoration: none; }
-.tsd-page-toolbar a.title { font-weight: bold; }
-.tsd-page-toolbar a.title:hover { text-decoration: underline; }
-.tsd-page-toolbar .table-wrap { display: table; width: 100%; height: 40px; }
-.tsd-page-toolbar .table-cell { display: table-cell; position: relative; white-space: nowrap; line-height: 40px; }
-.tsd-page-toolbar .table-cell:first-child { width: 100%; }
-
-.tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { content: ""; display: inline-block; width: 40px; height: 40px; margin: 0 -8px 0 0; background-image: url(../images/widgets.png); background-repeat: no-repeat; text-indent: -1024px; vertical-align: bottom; }
-@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { .tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { background-image: url(../images/widgets@2x.png); background-size: 320px 40px; } }
-
-.tsd-widget { display: inline-block; overflow: hidden; opacity: 0.6; height: 40px; -webkit-transition: opacity 0.1s, background-color 0.2s; transition: opacity 0.1s, background-color 0.2s; vertical-align: bottom; cursor: pointer; }
-.tsd-widget:hover { opacity: 0.8; }
-.tsd-widget.active { opacity: 1; background-color: #eee; }
-.tsd-widget.no-caption { width: 40px; }
-.tsd-widget.no-caption:before { margin: 0; }
-.tsd-widget.search:before { background-position: 0 0; }
-.tsd-widget.menu:before { background-position: -40px 0; }
-.tsd-widget.options:before { background-position: -80px 0; }
-.tsd-widget.options, .tsd-widget.menu { display: none; }
-@media (max-width: 900px) { .tsd-widget.options, .tsd-widget.menu { display: inline-block; } }
-input[type=checkbox] + .tsd-widget:before { background-position: -120px 0; }
-input[type=checkbox]:checked + .tsd-widget:before { background-position: -160px 0; }
-
-.tsd-select { position: relative; display: inline-block; height: 40px; -webkit-transition: opacity 0.1s, background-color 0.2s; transition: opacity 0.1s, background-color 0.2s; vertical-align: bottom; cursor: pointer; }
-.tsd-select .tsd-select-label { opacity: 0.6; -webkit-transition: opacity 0.2s; transition: opacity 0.2s; }
-.tsd-select .tsd-select-label:before { background-position: -240px 0; }
-.tsd-select.active .tsd-select-label { opacity: 0.8; }
-.tsd-select.active .tsd-select-list { visibility: visible; opacity: 1; -webkit-transition-delay: 0s; transition-delay: 0s; }
-.tsd-select .tsd-select-list { position: absolute; visibility: hidden; top: 40px; left: 0; margin: 0; padding: 0; opacity: 0; list-style: none; box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -webkit-transition: visibility 0s 0.2s, opacity 0.2s; transition: visibility 0s 0.2s, opacity 0.2s; }
-.tsd-select .tsd-select-list li { padding: 0 20px 0 0; background-color: #fdfdfd; }
-.tsd-select .tsd-select-list li:before { background-position: 40px 0; }
-.tsd-select .tsd-select-list li:nth-child(even) { background-color: #fff; }
-.tsd-select .tsd-select-list li:hover { background-color: #eee; }
-.tsd-select .tsd-select-list li.selected:before { background-position: -200px 0; }
-@media (max-width: 900px) { .tsd-select .tsd-select-list { top: 0; left: auto; right: 100%; margin-right: -5px; }
-  .tsd-select .tsd-select-label:before { background-position: -280px 0; } }
-
-img { max-width: 100%; }
-
-/* MONACO_CHANGE */
-.tsd-breadcrumb li:after {
-  content: ".";
-}
-.tsd-breadcrumb li:last-of-type:after {
-  content: "";
-}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 2
website/typedoc-theme/assets/css/main.css.map


+ 27 - 0
website/typedoc-theme/assets/css/main.sass

@@ -0,0 +1,27 @@
+@import constants
+
+@import vendors/normalize
+@import vendors/highlight.js
+
+@import setup/mixins
+@import setup/grid
+@import setup/icons
+@import setup/animations
+@import setup/typography
+
+@import layouts/default
+@import layouts/minimal
+
+@import elements/comment
+@import elements/filter
+@import elements/footer
+@import elements/hierarchy
+@import elements/index
+@import elements/member
+@import elements/navigation
+@import elements/panel
+@import elements/search
+@import elements/signatures
+@import elements/sources
+@import elements/toolbar
+@import elements/images

+ 54 - 0
website/typedoc-theme/assets/css/setup/_animations.sass

@@ -0,0 +1,54 @@
+@keyframes fade-in
+    from
+        opacity: 0
+    to
+        opacity: 1
+
+@keyframes fade-out
+    from
+        opacity: 1
+        visibility: visible
+    to
+        opacity: 0
+
+@keyframes fade-in-delayed
+    0%
+        opacity: 0
+    33%
+        opacity: 0
+    100%
+        opacity: 1
+
+@keyframes fade-out-delayed
+    0%
+        opacity: 1
+        visibility: visible
+    66%
+        opacity: 0
+    100%
+        opacity: 0
+
+@keyframes shift-to-left
+    from
+        transform: translate(0,0)
+    to
+        transform: translate(-25%,0)
+
+@keyframes unshift-to-left
+    from
+        transform: translate(-25%,0)
+    to
+        transform: translate(0,0)
+
+@keyframes pop-in-from-right
+    from
+        transform: translate(100%,0)
+    to
+        transform: translate(0,0)
+
+@keyframes pop-out-to-right
+    from
+        transform: translate(0,0)
+        visibility: visible
+    to
+        transform: translate(100%,0)

+ 60 - 0
website/typedoc-theme/assets/css/setup/_grid.sass

@@ -0,0 +1,60 @@
+=size-xs
+    @media (max-width: 640px)
+        &
+            @content
+
+=size-sm
+    @media (min-width: 641px) and (max-width: 900px)
+        &
+            @content
+
+=size-md
+    @media (min-width: 901px) and (max-width: 1024px)
+        &
+            @content
+
+=size-lg
+    @media (min-width: 1025px)
+        &
+            @content
+
+=size-xs-sm
+    @media (max-width: 900px)
+        &
+            @content
+
+=size-md-lg
+    @media (min-width: 901px)
+        &
+            @content
+
+.container
+    max-width: 1200px
+    margin: 0 auto
+    padding: 0 40px
+
+    +size-xs
+        padding: 0 20px
+
+.container-main
+    padding-bottom: 200px
+
+.row
+    +clearfix
+    display: flex
+    position: relative
+    margin: 0 -10px
+
+.col
+    @extend %prevent-children-margin
+    box-sizing: border-box
+    float: left
+    padding: 0 10px
+
+@for $width from 1 to 12
+    .col-#{$width}
+        @extend .col
+        width: $width / 12 * 100%
+
+    .offset-#{$width}
+        margin-left: $width / 12 * 100%

+ 166 - 0
website/typedoc-theme/assets/css/setup/_icons.scss

@@ -0,0 +1,166 @@
+$type-icons:
+    (object-literal),
+    (class),
+    ('class.tsd-has-type-parameter'),
+    (interface),
+    ('interface.tsd-has-type-parameter'),
+    (namespace, module),
+    (enum),
+    (enum-member),
+    (signature),
+    (type-alias),
+    ('type-alias.tsd-has-type-parameter');
+
+$member-icons:
+    (variable, property),
+    (get-signature),
+    (set-signature),
+    (accessor),
+    (function, method, call-signature),
+    ('function.tsd-has-type-parameter', 'method.tsd-has-type-parameter'),
+    (constructor, constructor-signature),
+    (index-signature),
+    (event),
+    (property),
+    (function, method, call-signature),
+    (event);
+
+// parameter
+// type-literal
+// type-parameter
+
+.tsd-kind-icon {
+    display: block;
+    position: relative;
+    padding-left: 20px;
+    text-indent: -20px;
+
+    &:before {
+        content: '';
+        display: inline-block;
+        vertical-align: middle;
+        width: 17px;
+        height: 17px;
+        margin: 0 3px 2px 0;
+        background-image: url(../../images/icons.png);
+
+        @include retina {
+            background-image: url(../../images/icons@2x.png);
+            background-size: 238px 204px;
+        }
+    }
+}
+
+.tsd-signature.tsd-kind-icon:before {
+    background-position: 0 -153px;
+}
+
+$icon-size:                        17px;
+$type:                             -0 * $icon-size;
+$type-protected:                   -1 * $icon-size;
+$type-private:                     -2 * $icon-size;
+$member-class-public:              -3 * $icon-size;
+$member-class-public-inherited:    -4 * $icon-size;
+$member-class-protected:           -5 * $icon-size;
+$member-class-protected-inherited: -6 * $icon-size;
+$member-private:                   -7 * $icon-size;
+$member:                           -8 * $icon-size;
+$member-protected:                 -9 * $icon-size;
+$member-enum:                     -10 * $icon-size;
+$member-enum-protected:           -11 * $icon-size;
+$member-interface:                -12 * $icon-size;
+$member-interface-inherited:      -13 * $icon-size;
+
+
+@for $index from 1 through length($type-icons) {
+    @each $kind in nth($type-icons, $index) {
+        $selector: '.tsd-kind-' + $kind;
+        $offset: -#{17 * ($index)}px;
+
+        #{$selector} {
+            > .tsd-kind-icon:before {
+                background-position: $type $offset;
+            }
+
+            &.tsd-is-protected > .tsd-kind-icon:before {
+                background-position: $type-protected $offset;
+            }
+
+            &.tsd-is-private > .tsd-kind-icon:before {
+                background-position: $type-private $offset;
+            }
+        }
+    }
+}
+
+@for $index from 1 through length($member-icons) {
+    @each $kind in nth($member-icons, $index) {
+        $offset: -#{17 * ($index - 1)}px;
+        $selector: '.tsd-kind-' + $kind;
+        @if $index == 10 {
+            $selector: '.tsd-is-static';
+        } @else if $index > 10 {
+            $selector: '.tsd-is-static.tsd-kind-' + $kind;
+        }
+
+        #{$selector} {
+            > .tsd-kind-icon:before {
+                background-position: $member $offset;
+            }
+
+            &.tsd-is-protected > .tsd-kind-icon:before {
+                background-position: $member-protected $offset;
+            }
+
+            &.tsd-is-private > .tsd-kind-icon:before {
+                background-position: $member-private $offset;
+            }
+
+            &.tsd-parent-kind-class {
+                > .tsd-kind-icon:before {
+                    background-position: $member-class-public $offset;
+                }
+
+                &.tsd-is-inherited > .tsd-kind-icon:before {
+                    background-position: $member-class-public-inherited $offset;
+                }
+
+                &.tsd-is-protected > .tsd-kind-icon:before {
+                    background-position: $member-class-protected $offset;
+                }
+
+                &.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before {
+                    background-position: $member-class-protected-inherited $offset;
+                }
+
+                &.tsd-is-private > .tsd-kind-icon:before {
+                    background-position: $member-private $offset;
+                }
+            }
+
+            &.tsd-parent-kind-enum {
+                > .tsd-kind-icon:before {
+                    background-position: $member-enum $offset;
+                }
+
+                &.tsd-is-protected > .tsd-kind-icon:before {
+                    background-position: $member-enum-protected $offset;
+                }
+
+                &.tsd-is-private > .tsd-kind-icon:before {
+                    background-position: $member-private $offset;
+                }
+            }
+
+            &.tsd-parent-kind-interface {
+                > .tsd-kind-icon:before {
+                    background-position: $member-interface $offset;
+                }
+
+                &.tsd-is-inherited > .tsd-kind-icon:before {
+                    background-position: $member-interface-inherited $offset;
+                }
+            }
+        }
+    }
+}

+ 30 - 0
website/typedoc-theme/assets/css/setup/_mixins.sass

@@ -0,0 +1,30 @@
+@mixin vendors($property, $value...)
+    -webkit-#{$property}: $value
+    -moz-#{$property}: $value
+    -ms-#{$property}: $value
+    -o-#{$property}: $value
+    #{$property}: $value
+
+@mixin clearfix
+    &:after
+        visibility: hidden
+        display: block
+        content: ""
+        clear: both
+        height: 0
+
+@mixin retina
+    @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi)
+        &
+            @content
+
+%prevent-children-margin
+    > :first-child,
+    > :first-child > :first-child,
+    > :first-child > :first-child > :first-child
+        margin-top: 0
+
+    > :last-child,
+    > :last-child > :last-child,
+    > :last-child > :last-child > :last-child
+        margin-bottom: 0

+ 45 - 0
website/typedoc-theme/assets/css/setup/_typography.sass

@@ -0,0 +1,45 @@
+body
+    background: $COLOR_BACKGROUND
+    font-family: $FONT_FAMILY
+    font-size: $FONT_SIZE
+    color: $COLOR_TEXT
+
+a
+    color: $COLOR_LINK
+    text-decoration: none
+
+    &:hover
+        text-decoration: underline
+
+code, pre
+    font-family: $FONT_FAMILY_MONO
+    padding: 0.2em
+    margin: 0
+    font-size: $FONT_SIZE_MONO
+    background-color: $COLOR_CODE_BACKGROUND
+
+pre
+    padding: 10px
+
+    code
+        padding: 0
+        font-size: 100%
+        background-color: transparent
+
+.tsd-typography
+    line-height: $LINE_HEIGHT
+
+    ul
+        list-style: square
+        padding: 0 0 0 20px
+        margin: 0
+
+    h4, h5, h6
+        font-size: 1em
+        margin: 0
+
+    h5, h6
+        font-weight: normal
+
+    p, ul, ol
+        margin: 1em 0

+ 50 - 0
website/typedoc-theme/assets/css/vendors/_highlight.js.sass

@@ -0,0 +1,50 @@
+/*
+ *
+ *Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>
+
+.hljs
+    display: inline-block
+    padding: 0.5em
+    background: white
+    color: black
+
+.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket
+    color: #008000
+
+.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title
+    color: #00f
+
+.xml .hljs-tag
+    color: #00f
+    .hljs-value
+        color: #00f
+
+.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value
+    color: #a31515
+
+.ruby .hljs-symbol
+    color: #a31515
+    .hljs-string
+        color: #a31515
+
+.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute
+    color: #a31515
+
+.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt
+    color: #2b91af
+
+.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag
+    color: #808080
+
+.vhdl
+    .hljs-typename
+        font-weight: bold
+    .hljs-string
+        color: #666666
+    .hljs-literal
+        color: #a31515
+    .hljs-attribute
+        color: #00b0e8
+
+.xml .hljs-attribute
+    color: #f00

+ 424 - 0
website/typedoc-theme/assets/css/vendors/_normalize.sass

@@ -0,0 +1,424 @@
+/*! normalize.css v1.1.3 | MIT License | git.io/normalize
+
+/* ==========================================================================
+ * HTML5 display definitions
+ * ==========================================================================
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+
+article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary
+    display: block
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+
+audio, canvas, video
+    display: inline-block
+    *display: inline
+    *zoom: 1
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+
+audio:not([controls])
+    display: none
+    height: 0
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+
+[hidden]
+    display: none
+
+/* ==========================================================================
+ * Base
+ * ==========================================================================
+
+/**
+ * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+
+html
+    font-size: 100%
+    /* 1
+    -ms-text-size-adjust: 100%
+    /* 2
+    -webkit-text-size-adjust: 100%
+    /* 2
+    font-family: sans-serif
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+
+button, input, select, textarea
+    font-family: sans-serif
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+
+body
+    margin: 0
+
+/* ==========================================================================
+ * Links
+ * ==========================================================================
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+
+a
+    &:focus
+        outline: thin dotted
+    &:active, &:hover
+        outline: 0
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+
+/* ==========================================================================
+ * Typography
+ * ==========================================================================
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+
+h1
+    font-size: 2em
+    margin: 0.67em 0
+
+h2
+    font-size: 1.5em
+    margin: 0.83em 0
+
+h3
+    font-size: 1.17em
+    margin: 1em 0
+
+h4
+    font-size: 1em
+    margin: 1.33em 0
+
+h5
+    font-size: 0.83em
+    margin: 1.67em 0
+
+h6
+    font-size: 0.67em
+    margin: 2.33em 0
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+
+abbr[title]
+    border-bottom: 1px dotted
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+
+b, strong
+    font-weight: bold
+
+blockquote
+    margin: 1em 40px
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+
+dfn
+    font-style: italic
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+
+hr
+    -moz-box-sizing: content-box
+    box-sizing: content-box
+    height: 0
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+
+mark
+    background: #ff0
+    color: #000
+
+/**
+ * Address margins set differently in IE 6/7.
+
+p, pre
+    margin: 1em 0
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+
+code, kbd, pre, samp
+    font-family: monospace, serif
+    _font-family: 'courier new', monospace
+    font-size: 1em
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+
+pre
+    white-space: pre
+    white-space: pre-wrap
+    word-wrap: break-word
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+
+q
+    quotes: none
+    &:before, &:after
+        content: ''
+        content: none
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+
+small
+    font-size: 80%
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+
+sub
+    font-size: 75%
+    line-height: 0
+    position: relative
+    vertical-align: baseline
+
+sup
+    font-size: 75%
+    line-height: 0
+    position: relative
+    vertical-align: baseline
+    top: -0.5em
+
+sub
+    bottom: -0.25em
+
+/* ==========================================================================
+ * Lists
+ * ==========================================================================
+
+/**
+ * Address margins set differently in IE 6/7.
+
+dl, menu, ol, ul
+    margin: 1em 0
+
+dd
+    margin: 0 0 0 40px
+
+/**
+ * Address paddings set differently in IE 6/7.
+
+menu, ol, ul
+    padding: 0 0 0 40px
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+
+nav
+    ul, ol
+        list-style: none
+        list-style-image: none
+
+/* ==========================================================================
+ * Embedded content
+ * ==========================================================================
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+
+img
+    border: 0
+    /* 1
+    -ms-interpolation-mode: bicubic
+/* 2
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+
+svg:not(:root)
+    overflow: hidden
+
+/* ==========================================================================
+ * Figures
+ * ==========================================================================
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+
+figure, form
+    margin: 0
+
+/* ==========================================================================
+ * Forms
+ * ==========================================================================
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+
+/**
+ * Define consistent border, margin, and padding.
+
+fieldset
+    border: 1px solid #c0c0c0
+    margin: 0 2px
+    padding: 0.35em 0.625em 0.75em
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+
+legend
+    border: 0
+    /* 1
+    padding: 0
+    white-space: normal
+    /* 2
+    *margin-left: -7px
+/* 3
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+
+button, input, select, textarea
+    font-size: 100%
+    /* 1
+    margin: 0
+    /* 2
+    vertical-align: baseline
+    /* 3
+    *vertical-align: middle
+/* 3
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+
+button, input
+    line-height: normal
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+
+button, select
+    text-transform: none
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+
+button, html input[type="button"]
+    -webkit-appearance: button
+    /* 2
+    cursor: pointer
+    /* 3
+    *overflow: visible
+/* 4
+
+input
+    &[type="reset"], &[type="submit"]
+        -webkit-appearance: button
+        /* 2
+        cursor: pointer
+        /* 3
+        *overflow: visible
+/* 4
+
+/**
+ * Re-set default cursor for disabled elements.
+
+button[disabled], html input[disabled]
+    cursor: default
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+
+input
+    &[type="checkbox"], &[type="radio"]
+        box-sizing: border-box
+        /* 1
+        padding: 0
+        /* 2
+        *height: 13px
+        /* 3
+        *width: 13px
+    /* 3
+    &[type="search"]
+        -webkit-appearance: textfield
+        /* 1
+        -moz-box-sizing: content-box
+        -webkit-box-sizing: content-box
+        /* 2
+        box-sizing: content-box
+        &::-webkit-search-cancel-button, &::-webkit-search-decoration
+            -webkit-appearance: none
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+
+button::-moz-focus-inner, input::-moz-focus-inner
+    border: 0
+    padding: 0
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+
+textarea
+    overflow: auto
+    /* 1
+    vertical-align: top
+/* 2
+
+/* ==========================================================================
+ * Tables
+ * ==========================================================================
+
+/**
+ * Remove most spacing between table cells.
+
+table
+    border-collapse: collapse
+    border-spacing: 0

BIN=BIN
website/typedoc-theme/assets/images/icons.png


BIN=BIN
website/typedoc-theme/assets/images/icons.psd


BIN=BIN
website/typedoc-theme/assets/images/icons@2x.png


BIN=BIN
website/typedoc-theme/assets/images/widgets.psd


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
website/typedoc-theme/assets/js/main.js


+ 24 - 0
website/typedoc-theme/assets/js/src/bootstrap.ts

@@ -0,0 +1,24 @@
+import {Application, registerComponent} from "./typedoc/Application";
+import {Search} from "./typedoc/components/Search";
+import {MenuHighlight} from "./typedoc/components/MenuHighlight";
+import {Signature} from "./typedoc/components/Signature";
+import {Toggle} from "./typedoc/components/Toggle";
+import {Filter} from "./typedoc/components/Filter";
+
+import '../../css/main.sass'
+
+registerComponent(Search, '#tsd-search');
+
+registerComponent(MenuHighlight, '.menu-highlight');
+registerComponent(Signature, '.tsd-signatures');
+registerComponent(Toggle, 'a[data-toggle]');
+
+if (Filter.isSupported()) {
+    registerComponent(Filter, '#tsd-filter');
+} else {
+    document.documentElement.classList.add('no-filter');
+}
+
+const app: Application = new Application();
+
+Object.defineProperty(window, 'app', {value: app});

+ 51 - 0
website/typedoc-theme/assets/js/src/typedoc/Application.ts

@@ -0,0 +1,51 @@
+import {IComponentOptions} from "./Component";
+
+/**
+ * Component definition.
+ */
+export interface IComponent {
+    constructor: new (options: IComponentOptions) => unknown;
+    selector: string;
+}
+
+/**
+ * List of all known components.
+ */
+const components: IComponent[] = [];
+
+/**
+ * Register a new component.
+ */
+export function registerComponent(constructor: IComponent['constructor'], selector: string) {
+    components.push({
+        selector: selector,
+        constructor: constructor,
+    });
+}
+
+
+/**
+ * TypeDoc application class.
+ */
+export class Application {
+    /**
+     * Create a new Application instance.
+     */
+    constructor() {
+        this.createComponents(document.body);
+    }
+
+    /**
+     * Create all components beneath the given jQuery element.
+     */
+    public createComponents(context: HTMLElement) {
+        components.forEach((c) => {
+            context.querySelectorAll<HTMLElement>(c.selector).forEach((el) => {
+                if (!el.dataset.hasInstance) {
+                    new c.constructor({el: el});
+                    el.dataset.hasInstance = String(true);
+                }
+            });
+        });
+    }
+}

+ 14 - 0
website/typedoc-theme/assets/js/src/typedoc/Component.ts

@@ -0,0 +1,14 @@
+export interface IComponentOptions {
+    el: HTMLElement;
+}
+
+/**
+ * TypeDoc component class.
+ */
+export class Component {
+    protected el: HTMLElement;
+
+    constructor(options: IComponentOptions) {
+        this.el = options.el;
+    }
+}

+ 42 - 0
website/typedoc-theme/assets/js/src/typedoc/EventTarget.ts

@@ -0,0 +1,42 @@
+export interface IEventListener<T> {
+    (evt: CustomEvent<T>): void;
+}
+
+/**
+ * TypeDoc event target class.
+ */
+export class EventTarget {
+    private listeners: Record<string, IEventListener<any>[]> = {};
+
+    public addEventListener<T>(type: string, callback: IEventListener<T>) {
+        if (!(type in this.listeners)) {
+            this.listeners[type] = [];
+        }
+        this.listeners[type].push(callback);
+    };
+
+    public removeEventListener<T>(type: string, callback: IEventListener<T>) {
+        if (!(type in this.listeners)) {
+            return;
+        }
+        const stack = this.listeners[type];
+        for (let i = 0, l = stack.length; i < l; i++) {
+            if (stack[i] === callback) {
+                stack.splice(i, 1);
+                return;
+            }
+        }
+    };
+
+    public dispatchEvent<T>(event: CustomEvent<T>) {
+        if (!(event.type in this.listeners)) {
+            return true;
+        }
+        const stack = this.listeners[event.type].slice();
+
+        for (let i = 0, l = stack.length; i < l; i++) {
+            stack[i].call(this, event);
+        }
+        return !event.defaultPrevented;
+    };
+}

+ 172 - 0
website/typedoc-theme/assets/js/src/typedoc/components/Filter.ts

@@ -0,0 +1,172 @@
+import {Component, IComponentOptions} from "../Component";
+import {pointerDown, pointerUp} from "../utils/pointer";
+
+abstract class FilterItem<T> {
+    protected key: string;
+
+    protected value: T;
+
+    protected defaultValue: T;
+
+
+    constructor(key: string, value: T) {
+        this.key = key;
+        this.value = value;
+        this.defaultValue = value;
+
+        this.initialize();
+
+        if (window.localStorage[this.key]) {
+            this.setValue(this.fromLocalStorage(window.localStorage[this.key]));
+        }
+    }
+
+
+    protected initialize() {
+    }
+
+
+    protected abstract handleValueChange(oldValue: T, newValue: T): void;
+
+    protected abstract fromLocalStorage(value: string): T;
+
+    protected abstract toLocalStorage(value: T): string;
+
+
+    protected setValue(value: T) {
+        if (this.value == value) return;
+
+        const oldValue = this.value;
+        this.value = value;
+        window.localStorage[this.key] = this.toLocalStorage(value);
+
+        this.handleValueChange(oldValue, value);
+    }
+}
+
+
+class FilterItemCheckbox extends FilterItem<boolean> {
+    private checkbox!: HTMLInputElement;
+
+
+    protected initialize() {
+        const checkbox = document.querySelector<HTMLInputElement>('#tsd-filter-' + this.key);
+        if (!checkbox) return;
+
+        this.checkbox = checkbox;
+        this.checkbox.addEventListener('change', () => {
+            this.setValue(this.checkbox.checked);
+        });
+    }
+
+
+    protected handleValueChange(oldValue: boolean, newValue: boolean) {
+        if (!this.checkbox) return;
+        this.checkbox.checked = this.value;
+        document.documentElement.classList.toggle('toggle-' + this.key, this.value != this.defaultValue);
+    }
+
+
+    protected fromLocalStorage(value: string): boolean {
+        return value == 'true';
+    }
+
+
+    protected toLocalStorage(value: boolean): string {
+        return value ? 'true' : 'false';
+    }
+}
+
+
+class FilterItemSelect extends FilterItem<string> {
+    private select!: HTMLElement;
+
+
+    protected initialize() {
+        document.documentElement.classList.add('toggle-' + this.key + this.value);
+
+        const select = document.querySelector<HTMLElement>('#tsd-filter-' + this.key);
+        if (!select) return;
+
+        this.select = select;
+        const onActivate = () => {
+            this.select.classList.add('active');
+        };
+        const onDeactivate = () => {
+            this.select.classList.remove('active');
+        };
+
+        this.select.addEventListener(pointerDown, onActivate);
+        this.select.addEventListener('mouseover', onActivate);
+        this.select.addEventListener('mouseleave', onDeactivate);
+
+        this.select.querySelectorAll('li').forEach(el => {
+            el.addEventListener(pointerUp, (e) => {
+                select.classList.remove('active');
+                this.setValue((e.target as HTMLElement).dataset.value || '');
+            })
+        });
+
+        document.addEventListener(pointerDown, (e) => {
+            if (this.select.contains(e.target as HTMLElement)) return;
+
+            this.select.classList.remove('active');
+        });
+    }
+
+
+    protected handleValueChange(oldValue: string, newValue: string) {
+        this.select.querySelectorAll('li.selected').forEach(el => {
+            el.classList.remove('selected')
+        });
+
+        const selected = this.select.querySelector<HTMLElement>('li[data-value="' + newValue + '"]');
+        const label = this.select.querySelector<HTMLElement>('.tsd-select-label');
+
+        if (selected && label) {
+            selected.classList.add('selected');
+            label.textContent = selected.textContent;
+        }
+
+        document.documentElement.classList.remove('toggle-' + oldValue);
+        document.documentElement.classList.add('toggle-' + newValue);
+    }
+
+    protected fromLocalStorage(value: string): string {
+        return value;
+    }
+
+    protected toLocalStorage(value: string): string {
+        return value;
+    }
+}
+
+
+export class Filter extends Component {
+    private optionVisibility: FilterItemSelect;
+
+    private optionInherited: FilterItemCheckbox;
+
+    private optionOnlyExported: FilterItemCheckbox;
+
+    private optionExternals: FilterItemCheckbox;
+
+
+    constructor(options: IComponentOptions) {
+        super(options);
+
+        this.optionVisibility = new FilterItemSelect('visibility', 'private');
+        this.optionInherited = new FilterItemCheckbox('inherited', true);
+        this.optionExternals = new FilterItemCheckbox('externals', true);
+        this.optionOnlyExported = new FilterItemCheckbox('only-exported', false);
+    }
+
+
+    static isSupported(): boolean {
+        try {
+            return typeof window.localStorage != 'undefined';
+        } catch (e) {
+            return false;
+        }
+    }
+}

+ 135 - 0
website/typedoc-theme/assets/js/src/typedoc/components/MenuHighlight.ts

@@ -0,0 +1,135 @@
+import {Component, IComponentOptions} from "../Component";
+import {Viewport} from "../services/Viewport";
+
+/**
+ * Stored element and position data of a single anchor.
+ */
+interface IAnchorInfo {
+    /**
+     * The anchor element.
+     */
+    anchor: HTMLElement;
+
+    /**
+     * The link element in the navigation representing this anchor.
+     */
+    link: HTMLElement;
+
+    /**
+     * The vertical offset of the anchor on the page.
+     */
+    position: number;
+}
+
+
+/**
+ * Manages the sticky state of the navigation and moves the highlight
+ * to the current navigation item.
+ */
+export class MenuHighlight extends Component {
+    /**
+     * List of all discovered anchors.
+     */
+    private anchors: IAnchorInfo[] = [];
+
+    /**
+     * Index of the currently highlighted anchor.
+     */
+    private index: number = -1;
+
+
+    /**
+     * Create a new MenuHighlight instance.
+     *
+     * @param options  Backbone view constructor options.
+     */
+    constructor(options: IComponentOptions) {
+        super(options);
+
+        Viewport.instance.addEventListener('resize', () => this.onResize());
+        Viewport.instance.addEventListener<{ scrollTop: number }>('scroll', e => this.onScroll(e));
+
+        this.createAnchors();
+    }
+
+
+    /**
+     * Find all anchors on the current page.
+     */
+    private createAnchors() {
+        let base = window.location.href;
+        if (base.indexOf('#') != -1) {
+            base = base.substr(0, base.indexOf('#'));
+        }
+
+        this.el.querySelectorAll('a').forEach(el => {
+            const href = el.href;
+            if (href.indexOf('#') == -1) return;
+            if (href.substr(0, base.length) != base) return;
+
+            const hash = href.substr(href.indexOf('#') + 1);
+            const anchor = document.querySelector<HTMLElement>('a.tsd-anchor[name=' + hash + ']');
+            const link = el.parentNode;
+            if (!anchor || !link) return;
+
+            this.anchors.push({
+                link: link as HTMLElement,
+                anchor: anchor,
+                position: 0
+            });
+        });
+
+        this.onResize();
+    }
+
+
+    /**
+     * Triggered after the viewport was resized.
+     */
+    private onResize() {
+        let anchor: IAnchorInfo;
+        for (let index = 0, count = this.anchors.length; index < count; index++) {
+            anchor = this.anchors[index];
+            const rect = anchor.anchor.getBoundingClientRect();
+            anchor.position = rect.top + document.body.scrollTop;
+        }
+
+        this.anchors.sort((a, b) => {
+            return a.position - b.position;
+        });
+
+        const event = new CustomEvent('scroll', {
+            detail: {
+                scrollTop: Viewport.instance.scrollTop,
+            }
+        });
+        this.onScroll(event);
+    }
+
+
+    /**
+     * Triggered after the viewport was scrolled.
+     *
+     * @param event  The custom event with the current vertical scroll position.
+     */
+    private onScroll(event: CustomEvent<{ scrollTop: number }>) {
+        const scrollTop = event.detail.scrollTop + 5;
+        const anchors = this.anchors;
+        const count = anchors.length - 1;
+        let index = this.index;
+
+        while (index > -1 && anchors[index].position > scrollTop) {
+            index -= 1;
+        }
+
+        while (index < count && anchors[index + 1].position < scrollTop) {
+            index += 1;
+        }
+
+        if (this.index != index) {
+            if (this.index > -1) this.anchors[this.index].link.classList.remove('focus');
+            this.index = index;
+            if (this.index > -1) this.anchors[this.index].link.classList.add('focus');
+        }
+    }
+}

+ 327 - 0
website/typedoc-theme/assets/js/src/typedoc/components/Search.ts

@@ -0,0 +1,327 @@
+import {Component, IComponentOptions} from "../Component";
+import {Index} from 'lunr';
+
+interface IDocument {
+    id: number;
+    kind: number;
+    name: string;
+    url: string;
+    classes: string;
+    parent?: string;
+}
+
+interface IData {
+    kinds: { [kind: number]: string };
+    rows: IDocument[];
+    index: object;
+}
+
+/**
+ * Loading state definitions.
+ */
+enum SearchLoadingState {
+    Idle, Loading, Ready, Failure
+}
+
+/**
+ * Provides an indexed search on generated documentation
+ */
+export class Search extends Component {
+    /**
+     * The input field of the search widget.
+     */
+    private field: HTMLInputElement;
+
+    /**
+     * The result list wrapper.
+     */
+    private results: HTMLElement;
+
+    /**
+     * The base url that must be prepended to the indexed urls.
+     */
+    private base: string;
+
+    /**
+     * The current query string.
+     */
+    private query: string = '';
+
+    /**
+     * The state the search is currently in.
+     */
+    private loadingState: SearchLoadingState = SearchLoadingState.Idle;
+
+    /**
+     * Is the input field focused?
+     */
+    private hasFocus: boolean = false;
+
+    /**
+     * Should the next key press be prevents?
+     */
+    private preventPress: boolean = false;
+
+    /**
+     * The search data
+     */
+    private data: IData | null = null;
+
+    /**
+     * The lunr index used to search the documentation.
+     */
+    private index: Index | null = null;
+
+    /**
+     * Has a search result been clicked?
+     * Used to stop the results hiding before a user can fully click on a result.
+     */
+    private resultClicked: boolean = false;
+
+    constructor(options: IComponentOptions) {
+        super(options);
+
+        const field = document.querySelector<HTMLInputElement>('#tsd-search-field');
+        const results = document.querySelector<HTMLElement>('.results');
+
+        if (!field || !results) {
+            throw new Error('The input field or the result list wrapper are not found');
+        }
+
+        this.field = field;
+        this.results = results;
+
+        this.base = this.el.dataset.base + '/';
+
+        this.bindEvents();
+    }
+
+    /**
+     * Lazy load the search index and parse it.
+     */
+    private loadIndex() {
+        if (this.loadingState != SearchLoadingState.Idle || this.data) return;
+
+        setTimeout(() => {
+            if (this.loadingState == SearchLoadingState.Idle) {
+                this.setLoadingState(SearchLoadingState.Loading);
+            }
+        }, 500);
+
+        const url = this.el.dataset.index;
+        if (!url) {
+            this.setLoadingState(SearchLoadingState.Failure);
+            return;
+        }
+
+        fetch(url)
+            .then(response => {
+                if (!response.ok) {
+                    throw new Error('The search index is missing');
+                }
+
+                return response.json();
+            })
+            .then((source: IData) => {
+                this.data = source;
+                this.index = Index.load(source.index);
+
+                this.setLoadingState(SearchLoadingState.Ready);
+            })
+            .catch((error) => {
+                console.error(error);
+                this.setLoadingState(SearchLoadingState.Failure);
+            });
+    }
+
+
+    /**
+     * Update the visible state of the search control.
+     */
+    private updateResults() {
+        // Don't clear results, if loading state is not ready,
+        // because loading or error message can be removed.
+        if (this.loadingState != SearchLoadingState.Ready) return;
+
+        this.results.textContent = '';
+        if (!this.query || !this.index || !this.data) return;
+
+        // Perform a wildcard search
+        let res = this.index.search(`*${this.query}*`);
+
+        // If still no results, try a fuzzy match search
+        if (res.length === 0) {
+            res = this.index.search(`*${this.query}~1*`);
+        }
+
+        for (let i = 0, c = Math.min(10, res.length); i < c; i++) {
+            const row = this.data.rows[Number(res[i].ref)];
+
+            // Bold the matched part of the query in the search results
+            let name = row.name.replace(new RegExp(this.query, 'i'), (match: string) => `<b>${match}</b>`);
+            let parent = row.parent || '';
+            parent = parent.replace(new RegExp(this.query, 'i'), (match: string) => `<b>${match}</b>`);
+
+            if (parent) name = '<span class="parent">' + parent + '.</span>' + name;
+            const item = document.createElement('li');
+            item.classList.value = row.classes;
+            item.innerHTML = `
+                    <a href="${this.base + row.url}" class="tsd-kind-icon">${name}</a>
+                `;
+            this.results.appendChild(item);
+        }
+    }
+
+
+    /**
+     * Set the loading state and update the visual state accordingly.
+     */
+    private setLoadingState(value: SearchLoadingState) {
+        if (this.loadingState == value) return;
+
+        this.el.classList.remove(SearchLoadingState[this.loadingState].toLowerCase());
+        this.loadingState = value;
+        this.el.classList.add(SearchLoadingState[this.loadingState].toLowerCase());
+
+        this.updateResults();
+    }
+
+
+    /**
+     * Set the focus state and update the visual state accordingly.
+     */
+    private setHasFocus(value: boolean) {
+        if (this.hasFocus == value) return;
+        this.hasFocus = value;
+        this.el.classList.toggle('has-focus');
+
+        if (!value) {
+            this.field.value = this.query;
+        } else {
+            this.setQuery('');
+            this.field.value = '';
+        }
+    }
+
+
+    /**
+     * Set the query string and update the results.
+     */
+    private setQuery(value: string) {
+        this.query = value.trim();
+        this.updateResults();
+    }
+
+
+    /**
+     * Move the highlight within the result set.
+     */
+    private setCurrentResult(dir: number) {
+        let current = this.results.querySelector('.current');
+        if (!current) {
+            current = this.results.querySelector(dir == 1 ? 'li:first-child' : 'li:last-child');
+            if (current) {
+                current.classList.add('current')
+            }
+        } else {
+            const rel = dir == 1 ? current.nextElementSibling : current.previousElementSibling;
+            if (rel) {
+                current.classList.remove('current');
+                rel.classList.add('current');
+            }
+        }
+    }
+
+
+    /**
+     * Navigate to the highlighted result.
+     */
+    private gotoCurrentResult() {
+        let current = this.results.querySelector('.current');
+
+        if (!current) {
+            current = this.results.querySelector('li:first-child');
+        }
+
+        if (current) {
+            const link = current.querySelector('a');
+            if (link) {
+                window.location.href = link.href;
+            }
+            this.field.blur();
+        }
+    }
+
+    /**
+     * Bind events on result list wrapper, input field and document body.
+     */
+    private bindEvents() {
+        /**
+         * Intercept mousedown and mouseup events so we can correctly
+         * handle clicking on search results.
+         */
+        this.results.addEventListener('mousedown', () => {
+            this.resultClicked = true;
+        });
+        this.results.addEventListener('mouseup', () => {
+            this.resultClicked = false;
+            this.setHasFocus(false);
+        });
+
+
+        /**
+         * Bind all required events on the input field.
+         */
+        this.field.addEventListener('focusin', () => {
+            this.setHasFocus(true);
+            this.loadIndex();
+        });
+        this.field.addEventListener('focusout', () => {
+            // If the user just clicked on a search result, then
+            // don't lose the focus straight away, as this prevents
+            // them from clicking the result and following the link
+            if (this.resultClicked) {
+                this.resultClicked = false;
+                return;
+            }
+
+            setTimeout(() => this.setHasFocus(false), 100);
+        });
+        this.field.addEventListener('input', () => {
+            this.setQuery(this.field.value);
+        });
+        this.field.addEventListener('keydown', (e) => {
+            if (e.keyCode == 13 || e.keyCode == 27 || e.keyCode == 38 || e.keyCode == 40) {
+                this.preventPress = true;
+                e.preventDefault();
+
+                if (e.keyCode == 13) {
+                    this.gotoCurrentResult();
+                } else if (e.keyCode == 27) {
+                    this.field.blur();
+                } else if (e.keyCode == 38) {
+                    this.setCurrentResult(-1);
+                } else if (e.keyCode == 40) {
+                    this.setCurrentResult(1);
+                }
+            } else {
+                this.preventPress = false;
+            }
+        });
+        this.field.addEventListener('keypress', (e) => {
+            if (this.preventPress) e.preventDefault();
+        });
+
+
+        /**
+         * Start searching by pressing a key on the body.
+         */
+        document.body.addEventListener('keydown', e => {
+            if (e.altKey || e.ctrlKey || e.metaKey) return;
+            if (!this.hasFocus && e.keyCode > 47 && e.keyCode < 112) {
+                this.field.focus();
+            }
+        });
+    }
+}
+

+ 160 - 0
website/typedoc-theme/assets/js/src/typedoc/components/Signature.ts

@@ -0,0 +1,160 @@
+import {Component, IComponentOptions} from "../Component";
+import {Viewport} from "../services/Viewport";
+
+/**
+ * Holds a signature and its description.
+ */
+class SignatureGroup {
+    /**
+     * The target signature.
+     */
+    signature: Element;
+
+    /**
+     * The description for the signature.
+     */
+    description: Element;
+
+
+    /**
+     * Create a new SignatureGroup instance.
+     *
+     * @param signature    The target signature.
+     * @param description  The description for the signature.
+     */
+    constructor(signature: Element, description: Element) {
+        this.signature = signature;
+        this.description = description;
+    }
+
+
+    /**
+     * Add the given class to all elements of the group.
+     *
+     * @param className  The class name to add.
+     */
+    addClass(className: string): SignatureGroup {
+        this.signature.classList.add(className);
+        this.description.classList.add(className);
+        return this;
+    }
+
+
+    /**
+     * Remove the given class from all elements of the group.
+     *
+     * @param className  The class name to remove.
+     */
+    removeClass(className: string): SignatureGroup {
+        this.signature.classList.remove(className);
+        this.description.classList.remove(className);
+        return this;
+    }
+}
+
+
+/**
+ * Controls the tab like behaviour of methods and functions with multiple signatures.
+ */
+export class Signature extends Component {
+    /**
+     * List of found signature groups.
+     */
+    private groups: SignatureGroup[] = [];
+
+    /**
+     * The container holding all the descriptions.
+     */
+    private container?: HTMLElement;
+
+    /**
+     * The index of the currently displayed signature.
+     */
+    private index: number = -1;
+
+
+    /**
+     * Create a new Signature instance.
+     *
+     * @param options  Backbone view constructor options.
+     */
+    constructor(options: IComponentOptions) {
+        super(options);
+
+        this.createGroups();
+
+        if (this.container) {
+            this.el.classList.add('active');
+            Array.from(this.el.children).forEach(signature => {
+                signature.addEventListener('touchstart', (event) => this.onClick(event));
+                signature.addEventListener('click', (event) => this.onClick(event));
+            });
+            this.container.classList.add('active');
+            this.setIndex(0);
+        }
+    }
+
+
+    /**
+     * Set the index of the active signature.
+     *
+     * @param index  The index of the signature to activate.
+     */
+    private setIndex(index: number) {
+        if (index < 0) index = 0;
+        if (index > this.groups.length - 1) index = this.groups.length - 1;
+        if (this.index == index) return;
+
+        const to = this.groups[index];
+        if (this.index > -1) {
+            const from = this.groups[this.index];
+
+            from.removeClass('current').addClass('fade-out');
+            to.addClass('current');
+            to.addClass('fade-in');
+            Viewport.instance.triggerResize();
+
+            setTimeout(() => {
+                from.removeClass('fade-out');
+                to.removeClass('fade-in');
+            }, 300);
+        } else {
+            to.addClass('current');
+            Viewport.instance.triggerResize();
+        }
+
+        this.index = index;
+    }
+
+
+    /**
+     * Find all signature/description groups.
+     */
+    private createGroups() {
+        const signatures = this.el.children;
+        if (signatures.length < 2) return;
+
+        this.container = this.el.nextElementSibling as HTMLElement;
+        const descriptions = this.container.children;
+
+        this.groups = [];
+        for (let index = 0; index < signatures.length; index++) {
+            this.groups.push(new SignatureGroup(signatures[index], descriptions[index]));
+        }
+    }
+
+
+    /**
+     * Triggered when the user clicks onto a signature header.
+     *
+     * @param e  The related event object.
+     */
+    private onClick(e: Event) {
+        this.groups.forEach((group, index) => {
+            if (group.signature === e.currentTarget) {
+                this.setIndex(index);
+            }
+        });
+    }
+}
+

+ 65 - 0
website/typedoc-theme/assets/js/src/typedoc/components/Toggle.ts

@@ -0,0 +1,65 @@
+import {Component, IComponentOptions} from "../Component";
+import {hasPointerMoved, pointerDown, pointerUp} from "../utils/pointer";
+
+export class Toggle extends Component {
+    active?: boolean;
+
+    className: string;
+
+    constructor(options: IComponentOptions) {
+        super(options);
+
+        this.className = this.el.dataset.toggle || '';
+        this.el.addEventListener(pointerUp, (e) => this.onPointerUp(e));
+        this.el.addEventListener('click', (e) => e.preventDefault());
+        document.addEventListener(pointerDown, (e) => this.onDocumentPointerDown(e));
+        document.addEventListener(pointerUp, (e) => this.onDocumentPointerUp(e));
+    }
+
+    setActive(value: boolean) {
+        if (this.active == value) return;
+        this.active = value;
+
+        document.documentElement.classList.toggle('has-' + this.className, value);
+        this.el.classList.toggle('active', value);
+
+        const transition = (this.active ? 'to-has-' : 'from-has-') + this.className;
+        document.documentElement.classList.add(transition);
+        setTimeout(() => document.documentElement.classList.remove(transition), 500);
+    }
+
+    onPointerUp(event: Event) {
+        if (hasPointerMoved) return;
+        this.setActive(true);
+        event.preventDefault();
+    }
+
+    onDocumentPointerDown(e: Event) {
+        if (this.active) {
+            if ((e.target as HTMLElement).closest('.col-menu, .tsd-filter-group')) {
+                return;
+            }
+
+            this.setActive(false);
+        }
+    }
+
+    onDocumentPointerUp(e: Event) {
+        if (hasPointerMoved) return;
+        if (this.active) {
+            if ((e.target as HTMLElement).closest('.col-menu')) {
+                const link = (e.target as HTMLElement).closest('a');
+                if (link) {
+                    let href = window.location.href;
+                    if (href.indexOf('#') != -1) {
+                        href = href.substr(0, href.indexOf('#'));
+                    }
+                    if (link.href.substr(0, href.length) == href) {
+                        setTimeout(() => this.setActive(false), 250);
+                    }
+                }
+            }
+        }
+    }
+}
+

+ 126 - 0
website/typedoc-theme/assets/js/src/typedoc/services/Viewport.ts

@@ -0,0 +1,126 @@
+import {EventTarget} from "../EventTarget";
+import {throttle} from "../utils/trottle";
+
+/**
+ * A global service that monitors the window size and scroll position.
+ */
+export class Viewport extends EventTarget {
+    public static readonly instance = new Viewport()
+
+    /**
+     * The current scroll position.
+     */
+    scrollTop: number = 0;
+
+    /**
+     * The previous scrollTop.
+     */
+    lastY: number = 0;
+
+    /**
+     * The width of the window.
+     */
+    width: number = 0;
+
+    /**
+     * The height of the window.
+     */
+    height: number = 0;
+
+    /**
+     * The toolbar (contains the search input).
+     */
+    toolbar: HTMLDivElement;
+
+    /**
+     * Boolean indicating whether the toolbar is shown.
+     */
+    showToolbar: boolean = true;
+
+    /**
+     * The sticky side nav that contains members of the current page.
+     */
+    secondaryNav: HTMLElement;
+
+
+    /**
+     * Create new Viewport instance.
+     */
+    constructor() {
+        super();
+
+        this.toolbar = <HTMLDivElement>document.querySelector('.tsd-page-toolbar');
+        this.secondaryNav = <HTMLElement>document.querySelector('.tsd-navigation.secondary');
+
+        window.addEventListener('scroll', throttle(() => this.onScroll(), 10));
+        window.addEventListener('resize', throttle(() => this.onResize(), 10));
+
+        this.onResize();
+        this.onScroll();
+    }
+
+
+    /**
+     * Trigger a resize event.
+     */
+    triggerResize() {
+        const event = new CustomEvent('resize', {
+            detail: {
+                width: this.width,
+                height: this.height,
+            }
+        });
+
+        this.dispatchEvent(event);
+    }
+
+
+    /**
+     * Triggered when the size of the window has changed.
+     */
+    onResize() {
+        this.width = window.innerWidth || 0;
+        this.height = window.innerHeight || 0;
+
+        const event = new CustomEvent('resize', {
+            detail: {
+                width: this.width,
+                height: this.height,
+            }
+        });
+
+        this.dispatchEvent(event);
+    }
+
+
+    /**
+     * Triggered when the user scrolled the viewport.
+     */
+    onScroll() {
+        this.scrollTop = window.scrollY || 0;
+
+        const event = new CustomEvent('scroll', {
+            detail: {
+                scrollTop: this.scrollTop,
+            }
+        });
+
+        this.dispatchEvent(event);
+        this.hideShowToolbar();
+    }
+
+
+    /**
+     * Handle hiding/showing of the toolbar.
+     */
+    hideShowToolbar() {
+        const isShown = this.showToolbar;
+        this.showToolbar = this.lastY >= this.scrollTop || this.scrollTop === 0;
+        if (isShown !== this.showToolbar) {
+            this.toolbar.classList.toggle('tsd-page-toolbar--hide');
+            this.secondaryNav.classList.toggle('tsd-navigation--toolbar-hide');
+        }
+        this.lastY = this.scrollTop;
+    }
+}
+

+ 91 - 0
website/typedoc-theme/assets/js/src/typedoc/utils/pointer.ts

@@ -0,0 +1,91 @@
+/**
+ * Simple point interface.
+ */
+export interface Point {
+    x: number;
+    y: number;
+}
+
+/**
+ * Event name of the pointer down event.
+ */
+export let pointerDown: string = 'mousedown';
+
+/**
+ * Event name of the pointer move event.
+ */
+export let pointerMove: string = 'mousemove';
+
+/**
+ * Event name of the pointer up event.
+ */
+export let pointerUp: string = 'mouseup';
+
+/**
+ * Position the pointer was pressed at.
+ */
+export const pointerDownPosition: Point = {x: 0, y: 0};
+
+/**
+ * Should the next click on the document be supressed?
+ */
+export let preventNextClick: boolean = false;
+
+/**
+ * Is the pointer down?
+ */
+export let isPointerDown: boolean = false;
+
+/**
+ * Is the pointer a touch point?
+ */
+export let isPointerTouch: boolean = false;
+
+/**
+ * Did the pointer move since the last down event?
+ */
+export let hasPointerMoved: boolean = false;
+
+/**
+ * Is the user agent a mobile agent?
+ */
+export const isMobile: boolean = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+document.documentElement.classList.add(isMobile ? 'is-mobile' : 'not-mobile');
+
+
+if (isMobile && 'ontouchstart' in document.documentElement) {
+    isPointerTouch = true;
+    pointerDown = 'touchstart';
+    pointerMove = 'touchmove';
+    pointerUp = 'touchend';
+}
+
+document.addEventListener(pointerDown, (e) => {
+    isPointerDown = true;
+    hasPointerMoved = false;
+    const t = (pointerDown == 'touchstart' ? (e as TouchEvent).targetTouches[0] : (e as MouseEvent));
+    pointerDownPosition.y = t.pageY || 0;
+    pointerDownPosition.x = t.pageX || 0;
+});
+
+document.addEventListener(pointerMove, (e) => {
+    if (!isPointerDown) return;
+    if (!hasPointerMoved) {
+        const t = (pointerDown == 'touchstart' ? (e as TouchEvent).targetTouches[0] : (e as MouseEvent));
+        const x = pointerDownPosition.x - (t.pageX || 0);
+        const y = pointerDownPosition.y - (t.pageY || 0);
+        hasPointerMoved = (Math.sqrt(x * x + y * y) > 10);
+    }
+});
+
+document.addEventListener(pointerUp, () => {
+    isPointerDown = false;
+});
+
+document.addEventListener('click', (e) => {
+    if (preventNextClick) {
+        e.preventDefault();
+        e.stopImmediatePropagation();
+        preventNextClick = false;
+    }
+});

+ 9 - 0
website/typedoc-theme/assets/js/src/typedoc/utils/trottle.ts

@@ -0,0 +1,9 @@
+export const throttle = <A extends any[]>(fn: (...args: A) => void, wait = 100) => {
+    let time = Date.now();
+    return (...args: A) => {
+        if ((time + wait - Date.now()) < 0) {
+            fn(...args);
+            time = Date.now();
+        }
+    }
+}

+ 0 - 78
website/typedoc-theme/helpers/sortModelGroups.js

@@ -1,78 +0,0 @@
-
-// https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/reflections/abstract.ts#L37
-var ReflectionKind = {
-    Global: 0,
-    ExternalModule: 1,
-    Module: 2,
-    Enum: 4,
-    EnumMember: 16,
-    Variable: 32,
-    Function: 64,
-    Class: 128,
-    Interface: 256,
-    Constructor: 512,
-    Property: 1024,
-    Method: 2048,
-    CallSignature: 4096,
-    IndexSignature: 8192,
-    ConstructorSignature: 16384,
-    Parameter: 32768,
-    TypeLiteral: 65536,
-    TypeParameter: 131072,
-    Accessor: 262144,
-    GetSignature: 524288,
-    SetSignature: 1048576,
-    ObjectLiteral: 2097152,
-    TypeAlias: 4194304,
-    Event: 8388608,
-}
-// https://github.com/TypeStrong/typedoc/blob/master/src/lib/converter/plugins/GroupPlugin.ts#L20
-var WEIGHTS = [
-    ReflectionKind.Global,
-    ReflectionKind.ExternalModule,
-    ReflectionKind.Module,
-
-    ReflectionKind.Function,
-    ReflectionKind.Variable,
-
-    ReflectionKind.Enum,
-    ReflectionKind.EnumMember,
-    ReflectionKind.Class,
-    ReflectionKind.Interface,
-    ReflectionKind.TypeAlias,
-
-    ReflectionKind.Constructor,
-    ReflectionKind.Event,
-    ReflectionKind.Property,
-    ReflectionKind.Accessor,
-    ReflectionKind.Method,
-    ReflectionKind.ObjectLiteral,
-
-    ReflectionKind.Parameter,
-    ReflectionKind.TypeParameter,
-    ReflectionKind.TypeLiteral,
-    ReflectionKind.CallSignature,
-    ReflectionKind.ConstructorSignature,
-    ReflectionKind.IndexSignature,
-    ReflectionKind.GetSignature,
-    ReflectionKind.SetSignature,
-];
-
-// https://github.com/TypeStrong/typedoc/blob/master/src/lib/converter/plugins/GroupPlugin.ts#L235
-function sortFunc(a, b) {
-    var aWeight = WEIGHTS.indexOf(a.kind);
-    var bWeight = WEIGHTS.indexOf(b.kind);
-    if (aWeight == bWeight) {
-        if (a.flags.isStatic && !b.flags.isStatic) return 1;
-        if (!a.flags.isStatic && b.flags.isStatic) return -1;
-        if (a.name == b.name) return 0;
-        return a.name > b.name ? 1 : -1;
-    } else return aWeight - bWeight;
-}
-module.exports = {
-  sortModelGroups: function ( model ) {
-    if (model.groups) {
-      model.groups.sort(sortFunc);
-    }
-  }
-}

+ 2 - 5
website/typedoc-theme/layouts/default.hbs

@@ -2,14 +2,12 @@
 <html class="default no-js">
 <head>
     <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <title>{{#ifCond model.name '==' project.name}}{{project.name}}{{else}}{{model.name}} | {{project.name}}{{/ifCond}}</title>
-    <meta name="description" content="">
+    <meta name="description" content="Documentation for {{project.name}}">
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
     <link rel="stylesheet" href="{{relativeURL "assets/css/main.css"}}">
-    {{!--MONACO_CHANGE
-    <script src="{{relativeURL "assets/js/modernizr.js"}}"></script>
-    MONACO_CHANGE--}}
 </head>
 <body>
 
@@ -44,7 +42,6 @@
 
 <div class="overlay"></div>
 <script src="{{relativeURL "assets/js/main.js"}}"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="{{relativeURL "assets/js/search.js"}}"><' + '/script>');</script>
 
 {{> analytics}}
 

+ 8 - 53
website/typedoc-theme/partials/footer.hbs

@@ -3,64 +3,19 @@
     <div class="container">
         <h2>Legend</h2>
         <div class="tsd-legend-group">
-            <ul class="tsd-legend">
-                <li class="tsd-kind-module"><span class="tsd-kind-icon">Module</span></li>
-                <li class="tsd-kind-object-literal"><span class="tsd-kind-icon">Object literal</span></li>
-                <li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li>
-                <li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li>
-                <li class="tsd-kind-function tsd-has-type-parameter"><span class="tsd-kind-icon">Function with type parameter</span></li>
-                <li class="tsd-kind-index-signature"><span class="tsd-kind-icon">Index signature</span></li>
-                <li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-enum"><span class="tsd-kind-icon">Enumeration</span></li>
-                <li class="tsd-kind-enum-member"><span class="tsd-kind-icon">Enumeration member</span></li>
-                <li class="tsd-kind-property tsd-parent-kind-enum"><span class="tsd-kind-icon">Property</span></li>
-                <li class="tsd-kind-method tsd-parent-kind-enum"><span class="tsd-kind-icon">Method</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li>
-                <li class="tsd-kind-interface tsd-has-type-parameter"><span class="tsd-kind-icon">Interface with type parameter</span></li>
-                <li class="tsd-kind-constructor tsd-parent-kind-interface"><span class="tsd-kind-icon">Constructor</span></li>
-                <li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
-                <li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
-                <li class="tsd-kind-index-signature tsd-parent-kind-interface"><span class="tsd-kind-icon">Index signature</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li>
-                <li class="tsd-kind-class tsd-has-type-parameter"><span class="tsd-kind-icon">Class with type parameter</span></li>
-                <li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
-                <li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li>
-                <li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
-                <li class="tsd-kind-accessor tsd-parent-kind-class"><span class="tsd-kind-icon">Accessor</span></li>
-                <li class="tsd-kind-index-signature tsd-parent-kind-class"><span class="tsd-kind-icon">Index signature</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li>
-                <li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li>
-                <li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li>
-                <li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited accessor</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected property</span></li>
-                <li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected method</span></li>
-                <li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected accessor</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li>
-                <li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private method</span></li>
-                <li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private accessor</span></li>
-            </ul>
-            <ul class="tsd-legend">
-                <li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li>
-                <li class="tsd-kind-call-signature tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li>
-            </ul>
+            {{#each legend}}
+                <ul class="tsd-legend">
+                    {{#each .}}
+                        <li class="{{#compact}}{{#each classes}} {{.}}{{/each}}{{/compact}}"><span class="tsd-kind-icon">{{name}}</span></li>
+                    {{/each}}
+                </ul>
+            {{/each}}
         </div>
     </div>
 </footer>
 
 {{#unless settings.hideGenerator}}
     <div class="container tsd-generator">
-        <p>Generated using <a href="http://typedoc.io" target="_blank">TypeDoc</a></p>
+        <p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
     </div>
 {{/unless}}

+ 2 - 2
website/typedoc-theme/partials/header.hbs

@@ -2,7 +2,7 @@
     <div class="tsd-page-toolbar">
         <div class="container">
             <div class="table-wrap">
-                <div class="table-cell" id="tsd-search" data-index="{{relativeURL "assets/js/search.js"}}" data-base="{{relativeURL "./"}}">
+                <div class="table-cell" id="tsd-search" data-index="{{relativeURL "assets/js/search.json"}}" data-base="{{relativeURL "./"}}">
                     <div class="field">
                         <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
                         <input id="tsd-search-field" type="text" />
@@ -75,4 +75,4 @@
             MONACO_CHANGE--}}
         </div>
     </div>
-</header>
+</header>

+ 1 - 1
website/typedoc-theme/partials/hierarchy.hbs

@@ -4,7 +4,7 @@
             {{#if ../isTarget}}
                 <span class="target">{{this}}</span>
             {{else}}
-                {{> type}}
+                {{#compact}}{{> type}}{{/compact}}
             {{/if}}
 
             {{#if @last}}

+ 49 - 18
website/typedoc-theme/partials/index.hbs

@@ -1,19 +1,50 @@
-{{#if groups}}
-<section class="tsd-panel-group tsd-index-group">
-    <h2>Index</h2>
-    <section class="tsd-panel tsd-index-panel">
-        <div class="tsd-index-content">
-            {{#each groups}}
-                <section class="tsd-index-section {{cssClasses}}">
-                    <h3>{{title}}</h3>
-                    <ul class="tsd-index-list">
-                        {{#each children}}
-                        <li class="{{cssClasses}}"><a href="{{relativeURL url}}" class="tsd-kind-icon">{{#if name}}{{{wbr name}}}{{else}}<em>{{{wbr kindString}}}</em>{{/if}}</a></li>
-                        {{/each}}
-                    </ul>
-                </section>
-            {{/each}}
-        </div>
+{{#if categories}}
+    <section class="tsd-panel-group tsd-index-group">
+        <h2>Index</h2>
+        <section class="tsd-panel tsd-index-panel">
+            <div class="tsd-index-content">
+                {{#each categories}}
+                    <section class="tsd-index-section">
+                        <h3>{{title}}</h3>
+                        <ul class="tsd-index-list">
+                            {{#each children}}
+                                <li class="{{cssClasses}}"><a href="{{relativeURL url}}" class="tsd-kind-icon">{{#if name}}{{{wbr name}}}{{else}}<em>{{{wbr kindString}}}</em>{{/if}}</a></li>
+                            {{/each}}
+                        </ul>
+                    </section>
+                {{/each}}
+            </div>
+        </section>
     </section>
-</section>
-{{/if}}
+{{else}}
+    {{#if groups}}
+    <section class="tsd-panel-group tsd-index-group">
+        <h2>Index</h2>
+        <section class="tsd-panel tsd-index-panel">
+            <div class="tsd-index-content">
+                {{#each groups}}
+                    <section class="tsd-index-section {{cssClasses}}">
+                        {{#if categories}}
+                            {{#each categories}}
+                                <h3>{{#if title}}{{title}} {{/if}}{{../title}}</h3>
+                                <ul class="tsd-index-list">
+                                    {{#each children}}
+                                        <li class="{{cssClasses}}"><a href="{{relativeURL url}}" class="tsd-kind-icon">{{#if name}}{{{wbr name}}}{{else}}<em>{{{wbr kindString}}}</em>{{/if}}</a></li>
+                                    {{/each}}
+                                </ul>
+                            {{/each}}
+                        {{else}}
+                            <h3>{{title}}</h3>
+                            <ul class="tsd-index-list">
+                                {{#each children}}
+                                    <li class="{{cssClasses}}"><a href="{{relativeURL url}}" class="tsd-kind-icon">{{#if name}}{{{wbr name}}}{{else}}<em>{{{wbr kindString}}}</em>{{/if}}</a></li>
+                                {{/each}}
+                            </ul>
+                        {{/if}}
+                    </section>
+                {{/each}}
+            </div>
+        </section>
+    </section>
+    {{/if}}
+{{/if}}

+ 16 - 2
website/typedoc-theme/partials/member.declaration.hbs

@@ -1,5 +1,14 @@
 <div class="tsd-signature tsd-kind-icon">{{#compact}}
-    {{{wbr name}}}<span class="tsd-signature-symbol">{{#if isOptional}}?{{/if}}:</span>&nbsp;{{#with type}}{{>type}}{{/with}}
+    {{{wbr name}}}
+    {{#if typeParameters}}
+        &lt;
+        {{#each typeParameters}}
+            {{#if @index}},&nbsp;{{/if}}
+            {{name}}
+        {{/each}}
+        &gt;
+    {{/if}}
+    <span class="tsd-signature-symbol">{{#if isOptional}}?{{/if}}:</span>&nbsp;{{#with type}}{{>type}}{{/with}}
     {{#if defaultValue}}
         <span class="tsd-signature-symbol">
         &nbsp;=&nbsp;
@@ -12,6 +21,11 @@
 
 {{> comment}}
 
+{{#if typeParameters}}
+    <h4 class="tsd-type-parameters-title">Type parameters</h4>
+    {{> typeParameters}}
+{{/if}}
+
 {{#if type.declaration}}
     <div class="tsd-type-declaration">
         <h4>Type declaration</h4>
@@ -19,4 +33,4 @@
             {{> parameter}}
         {{/with}}
     </div>
-{{/if}}
+{{/if}}

+ 1 - 1
website/typedoc-theme/partials/member.getterSetter.hbs

@@ -34,4 +34,4 @@
             </li>
         {{/with}}
     {{/if}}
-</ul>
+</ul>

+ 3 - 1
website/typedoc-theme/partials/member.hbs

@@ -8,9 +8,11 @@
         {{> member.signatures}}
     {{else}}{{#if hasGetterOrSetter}}
         {{> member.getterSetter}}
+    {{else}}{{#if isReference}}
+        {{> member.reference}}
     {{else}}
         {{> member.declaration}}
-    {{/if}}{{/if}}
+    {{/if}}{{/if}}{{/if}}
 
     {{#each groups}}
         {{#each children}}

+ 11 - 0
website/typedoc-theme/partials/member.reference.hbs

@@ -0,0 +1,11 @@
+{{#with tryGetTargetReflectionDeep}}
+    {{#ifCond ../name '===' name}}
+        Re-exports <a href="{{relativeURL url}}">{{name}}</a>
+    {{else if flags.isExported}}
+        Renames and re-exports <a href="{{relativeURL url}}">{{name}}</a>
+    {{else}}
+        Renames and exports <a href="{{relativeURL url}}">{{name}}</a>
+    {{/ifCond}}
+{{else}}
+    Re-exports {{name}}
+{{/with}}

+ 2 - 2
website/typedoc-theme/partials/member.signature.body.hbs

@@ -42,7 +42,7 @@
 {{/if}}
 
 {{#if type}}
-    <h4 class="tsd-returns-title">Returns {{#with type}}{{>type}}{{/with}}</h4>
+    <h4 class="tsd-returns-title">Returns {{#compact}}{{#with type}}{{>type}}{{/with}}{{/compact}}</h4>
 
     {{#if comment.returns}}
         {{#markdown}}{{{comment.returns}}}{{/markdown}}
@@ -53,4 +53,4 @@
             {{> parameter}}
         {{/with}}
     {{/if}}
-{{/if}}
+{{/if}}

+ 28 - 24
website/typedoc-theme/partials/member.signature.title.hbs

@@ -1,28 +1,32 @@
-{{#compact}}
-    {{#unless hideName}}{{{wbr name}}}{{/unless}}
-    {{#if typeParameters}}
-        &lt;
-        {{#each typeParameters}}
-            {{#if @index}},&nbsp;{{/if}}
-            {{name}}
-        {{/each}}
-        &gt;
-    {{/if}}
-    <span class="tsd-signature-symbol">(</span>
-    {{#each parameters}}
+{{#unless hideName}}{{{wbr name}}}{{/unless}}
+{{#if typeParameters}}
+    &lt;
+    {{#each typeParameters}}
         {{#if @index}},&nbsp;{{/if}}
-        {{#if flags.isRest}}<span class="tsd-signature-symbol">...</span>{{/if}}
         {{name}}
-        <span class="tsd-signature-symbol">
-            {{#if flags.isOptional}}?{{/if}}
-            {{#if defaultValue}}?{{/if}}
-            :&nbsp;
-        </span>
-        {{#with type}}{{>type}}{{/with}}
     {{/each}}
-    <span class="tsd-signature-symbol">)</span>
-    {{#if type}}
-        <span class="tsd-signature-symbol">:&nbsp;</span>
-        {{#with type}}{{>type}}{{/with}}
+    &gt;
+{{/if}}
+<span class="tsd-signature-symbol">(</span>
+{{#each parameters}}
+    {{#if @index}},&nbsp;{{/if}}
+    {{#if flags.isRest}}<span class="tsd-signature-symbol">...</span>{{/if}}
+    {{name}}
+    <span class="tsd-signature-symbol">
+        {{#if flags.isOptional}}?{{/if}}
+        {{#if defaultValue}}?{{/if}}
+        :&nbsp;
+    </span>
+    {{#with type}}{{>type}}{{/with}}
+{{/each}}
+<span class="tsd-signature-symbol">)</span>
+{{#if type}}
+    {{#if arrowStyle}}
+        <span class="tsd-signature-symbol"> =&gt; </span>
+    {{else}}
+        <span class="tsd-signature-symbol">: </span>
     {{/if}}
-{{/compact}}
+    {{#with type}}
+        {{>type}}
+    {{/with}}
+{{/if}}

+ 2 - 2
website/typedoc-theme/partials/member.signatures.hbs

@@ -1,6 +1,6 @@
 <ul class="tsd-signatures {{cssClasses}}">
     {{#each signatures}}
-        <li class="tsd-signature tsd-kind-icon">{{> member.signature.title }}</li>
+        <li class="tsd-signature tsd-kind-icon">{{#compact}}{{> member.signature.title }}{{/compact}}</li>
     {{/each}}
 </ul>
 
@@ -10,4 +10,4 @@
             {{> member.signature.body }}
         </li>
     {{/each}}
-</ul>
+</ul>

+ 2 - 2
website/typedoc-theme/partials/member.sources.hbs

@@ -6,7 +6,7 @@
         <p>Inherited from {{#with inheritedFrom}}{{> typeAndParent}}{{/with}}</p>
     {{/if}}
     {{#if overwrites}}
-        <p>Overwrites {{#with overwrites}}{{> typeAndParent}}{{/with}}</p>
+        <p>Overrides {{#with overwrites}}{{> typeAndParent}}{{/with}}</p>
     {{/if}}
     {{#if sources}}
         <ul>
@@ -22,4 +22,4 @@
             {{/each}}
         </ul>
     {{/if}}
-</aside>
+</aside>

+ 20 - 7
website/typedoc-theme/partials/members.group.hbs

@@ -1,8 +1,21 @@
-<section class="tsd-panel-group tsd-member-group {{cssClasses}}">
-    <h2>{{title}}</h2>
-    {{#each children}}
-        {{#unless hasOwnDocument}}
-            {{> member}}
-        {{/unless}}
+{{#if categories}}
+    {{#each categories}}
+        <section class="tsd-panel-group tsd-member-group {{cssClasses}}">
+            <h2>{{#if title}}{{title}} {{/if}}{{../title}}</h2>
+            {{#each children}}
+                {{#unless hasOwnDocument}}
+                    {{> member}}
+                {{/unless}}
+            {{/each}}
+        </section>
     {{/each}}
-</section>
+{{else}}
+    <section class="tsd-panel-group tsd-member-group {{cssClasses}}">
+        <h2>{{title}}</h2>
+        {{#each children}}
+            {{#unless hasOwnDocument}}
+                {{> member}}
+            {{/unless}}
+        {{/each}}
+    </section>
+{{/if}}

+ 20 - 5
website/typedoc-theme/partials/members.hbs

@@ -1,5 +1,20 @@
-{{#each groups}}
-    {{#unless allChildrenHaveOwnDocument}}
-        {{> members.group}}
-    {{/unless}}
-{{/each}}
+{{#if categories}}
+    {{#each categories}}
+        {{#unless allChildrenHaveOwnDocument}}
+            <section class="tsd-panel-group tsd-member-group {{cssClasses}}">
+                <h2>{{title}}</h2>
+                {{#each children}}
+                    {{#unless hasOwnDocument}}
+                        {{> member}}
+                    {{/unless}}
+                {{/each}}
+            </section>
+        {{/unless}}
+    {{/each}}
+{{else}}
+    {{#each groups}}
+        {{#unless allChildrenHaveOwnDocument}}
+            {{> members.group}}
+        {{/unless}}
+    {{/each}}
+{{/if}}

+ 4 - 2
website/typedoc-theme/partials/parameter.hbs

@@ -1,9 +1,11 @@
 <ul class="tsd-parameters">
     {{#if signatures}}
-        <li class="tsd-parameter-siganture">
+        <li class="tsd-parameter-signature">
             <ul class="tsd-signatures {{cssClasses}}">
                 {{#each signatures}}
-                    <li class="tsd-signature tsd-kind-icon">{{> member.signature.title hideName=true }}</li>
+                    <li class="tsd-signature tsd-kind-icon">{{#compact}}
+                        {{> member.signature.title hideName=true }}
+                    {{/compact}}</li>
                 {{/each}}
             </ul>
 

+ 214 - 62
website/typedoc-theme/partials/type.hbs

@@ -1,71 +1,223 @@
-{{#if this}}
+{{! Each type gets its own inline helper to determine how it is rendered. }}
+{{! The name of the helper is the value of the 'type' property on the type.}}
+
+{{!
+The type helper accepts an optional needsParens parameter that is checked
+if an inner type may result in invalid output without them. For example:
+1 | 2[] !== (1 | 2)[]
+() => 1 | 2 !== (() => 1) | 2
+}}
+
+{{#*inline 'array'}}
+    {{#with elementType}}
+        {{> type needsParens=true}}
+        <span class="tsd-signature-symbol">[]</span>
+    {{/with}}
+{{/inline}}
+
+{{#*inline 'conditional'}}
+    {{#if needsParens}}
+        <span class="tsd-signature-symbol">(</span>
+    {{/if}}
+    {{#with checkType}}
+        {{> type needsParens=true}}
+    {{/with}}
+    <span class="tsd-signature-symbol"> extends </span>
+    {{#with extendsType}}
+        {{> type}}
+    {{/with}}
+    <span class="tsd-signature-symbol"> ? </span>
+    {{#with trueType}}
+        {{> type}}
+    {{/with}}
+    <span class="tsd-signature-symbol"> : </span>
+    {{#with falseType}}
+        {{> type}}
+    {{/with}}
+    {{#if needsParens}}
+        <span class="tsd-signature-symbol">)</span>
+    {{/if}}
+{{/inline}}
+
+{{#*inline 'indexedAccess'}}
+    {{#with objectType}}
+        {{> type}}
+    {{/with}}
+    <span class="tsd-signature-symbol">[</span>
+    {{#with indexType}}
+        {{> type}}
+    {{/with}}
+    <span class="tsd-signature-symbol">]</span>
+{{/inline}}
+
+{{#*inline 'inferred'}}
+    <span class="tsd-signature-symbol">infer </span> {{name}}
+{{/inline}}
+
+{{#*inline 'intersection'}}
+    {{#if needsParens}}
+        <span class="tsd-signature-symbol">(</span>
+    {{/if}}
+    {{#each types}}
+        {{#unless @first}}
+            <span class="tsd-signature-symbol"> &amp; </span>
+        {{/unless}}
+        {{> type}}
+    {{/each}}
+    {{#if needsParens}}
+        <span class="tsd-signature-symbol">)</span>
+    {{/if}}
+{{/inline}}
+
+{{#*inline 'intrinsic'}}
+    <span class="tsd-signature-type">{{name}}</span>
+{{/inline}}
+
+{{#*inline 'predicate'}}
+    {{#if asserts}}
+        <span class="tsd-signature-symbol">asserts</span>
+    {{/if}}
+    <span class="tsd-signature-type">{{name}}</span>
+    {{#if targetType}}
+        <span class="tsd-signature-symbol"> is </span>
+        {{#with targetType}}
+            {{>type}}
+        {{/with}}
+    {{/if}}
+{{/inline}}
+
+{{#*inline 'query'}}
+    <span class="tsd-signature-symbol">typeof </span>
+    {{#with queryType}}
+        {{> type}}
+    {{/with}}
+{{/inline}}
+
+{{#*inline 'reference'}}
     {{#if reflection}}
-        {{#compact}}
-            <a href="{{relativeURL reflection.url}}" class="tsd-signature-type">
-                {{reflection.name}}
-            </a>
-            {{#if typeArguments}}
-                <span class="tsd-signature-symbol">&lt;</span>
-
-                {{#each typeArguments}}
-                    {{#if @index}}
-                        <span class="tsd-signature-symbol">, </span>
-                    {{/if}}{{> type}}
-                {{/each}}
-
-                <span class="tsd-signature-symbol">&gt;</span>
-            {{/if}}
-            {{#if isArray}}<span class="tsd-signature-symbol">[]</span>{{/if}}
-        {{/compact}}
+        <a href="{{relativeURL reflection.url}}" class="tsd-signature-type">
+            {{reflection.name}}
+        </a>
     {{else}}
-        {{#if types}}
-            {{#each types}}
-                {{#if @index}}
-                    <span class="tsd-signature-symbol"> | </span>
-                {{/if}}{{> type}}
+        <span class="tsd-signature-type">{{name}}</span>
+    {{/if}}
+    {{#if typeArguments}}
+        <span class="tsd-signature-symbol">&lt;</span>
+        {{#each typeArguments}}
+            {{#unless @first}}
+                <span class="tsd-signature-symbol">, </span>
+            {{/unless}}
+            {{> type}}
+        {{/each}}
+        <span class="tsd-signature-symbol">&gt;</span>
+    {{/if}}
+{{/inline}}
+
+{{#*inline 'reflection'}}
+    {{#if declaration.children}} {{! object literal }}
+        <span class="tsd-signature-symbol">{ </span>
+        {{#each declaration.children}}
+            {{#unless @first}}
+                <span class="tsd-signature-symbol">; </span>
+            {{/unless}}
+            {{name}}
+            {{#if flags.isOptional }}
+                <span class="tsd-signature-symbol">?: </span>
+            {{else}}
+                <span class="tsd-signature-symbol">: </span>
+            {{/if}}
+            {{#with type}}
+                {{> type}}
+            {{else}}
+                <span class="tsd-signature-type">any</span>
+            {{/with}}
+        {{/each}}
+        <span class="tsd-signature-symbol"> }</span>
+    {{else if declaration.signatures}}
+        {{#if (lookup declaration.signatures 1) }} {{! more than one signature}}
+            <span class="tsd-signature-symbol">{ </span>
+            {{#each declaration.signatures}}
+                {{> member.signature.title hideName=true}}
+                {{#unless @last}}
+                    <span class="tsd-signature-symbol">; </span>
+                {{/unless}}
             {{/each}}
+            <span class="tsd-signature-symbol"> }</span>
         {{else}}
-            {{#if elements}}
-                {{#compact}}
-                    <span class="tsd-signature-symbol">[</span>
-
-                    {{#each elements}}
-                        {{#if @index}}
-                            <span class="tsd-signature-symbol">, </span>
-                        {{/if}}{{> type}}
-                    {{/each}}
-
-                    <span class="tsd-signature-symbol">]</span>
-                {{/compact}}
-            {{else}}
-                {{#compact}}
-                    <span class="tsd-signature-type">
-                        {{#if name}}
-                            {{name}}
-                        {{else}}
-                            {{#if value}}
-                                "{{value}}"
-                            {{else}}
-                                {{this}}
-                            {{/if}}
-                        {{/if}}
-                    </span>
-                    {{#if typeArguments}}
-                        <span class="tsd-signature-symbol">&lt;</span>
-
-                        {{#each typeArguments}}
-                            {{#if @index}}
-                                <span class="tsd-signature-symbol">, </span>
-                            {{/if}}{{> type}}
-                        {{/each}}
-
-                        <span class="tsd-signature-symbol">&gt;</span>
-                    {{/if}}
-                    {{#if isArray}}<span class="tsd-signature-symbol">[]</span>{{/if}}
-                {{/compact}}
+            {{#if needsParens}}
+                <span class="tsd-signature-symbol">(</span>
+            {{/if}}
+            {{#with (lookup declaration.signatures '0') }}
+                {{> member.signature.title hideName=true arrowStyle=true}}
+            {{/with}}
+            {{#if needsParens}}
+                <span class="tsd-signature-symbol">)</span>
             {{/if}}
         {{/if}}
+    {{else}}
+        <span class="tsd-signature-symbol">{}</span>
+    {{/if}}
+{{/inline}}
+
+{{#*inline 'stringLiteral'}}
+    <span class="tsd-signature-type">"{{value}}"</span>
+{{/inline}}
+
+{{#*inline 'tuple'}}
+    <span class="tsd-signature-symbol">[</span>
+    {{#each elements}}
+        {{#unless @first}}
+            <span class="tsd-signature-symbol">, </span>
+        {{/unless}}
+        {{> type}}
+    {{/each}}
+    <span class="tsd-signature-symbol">]</span>
+{{/inline}}
+
+{{#*inline 'typeOperator'}}
+    <span class="tsd-signature-symbol">{{operator}} </span>
+    {{#with target}}
+        {{> type}}
+    {{/with}}
+{{/inline}}
+
+{{#*inline 'typeParameter'}}
+    <span class="tsd-signature-type">{{name}}</span>
+{{/inline}}
+
+{{#*inline 'union'}}
+    {{#if needsParens}}
+        <span class="tsd-signature-symbol">(</span>
+    {{/if}}
+    {{#each types}}
+        {{#unless @first}}
+            <span class="tsd-signature-symbol"> | </span>
+        {{/unless}}
+        {{> type needsParens=true}}
+    {{/each}}
+    {{#if needsParens}}
+        <span class="tsd-signature-symbol">)</span>
+    {{/if}}
+{{/inline}}
+
+{{#*inline 'unknown'}}
+    <span class="tsd-signature-type">{{name}}</span>
+{{/inline}}
+
+{{#*inline 'named-tuple-member'}}
+    {{name}}
+    {{#if isOptional}}
+        <span class="tsd-signature-symbol">?: </span>
+    {{else}}
+        <span class="tsd-signature-symbol">: </span>
     {{/if}}
+    {{#with element}}
+        {{> type}}
+    {{/with}}
+{{/inline}}
+
+{{#if this}}
+    {{> (lookup . 'type') }}
 {{else}}
     <span class="tsd-signature-type">void</span>
-{{/if}}
+{{/if}}

+ 32 - 28
website/typedoc-theme/partials/typeAndParent.hbs

@@ -1,36 +1,40 @@
 {{#compact}}
     {{#if this}}
-        {{#if reflection}}
-            {{#ifSignature reflection}}
-                {{#if reflection.parent.parent.url}}
-                    <a href="{{relativeURL reflection.parent.parent.url}}">{{reflection.parent.parent.name}}</a>
-                {{else}}
-                    {{reflection.parent.parent.name}}
-                {{/if}}
-                .
-                {{#if reflection.parent.url}}
-                    <a href="{{relativeURL reflection.parent.url}}">{{reflection.parent.name}}</a>
+        {{#if elementType}}
+            {{#with elementType}}
+                {{> typeAndParent}}
+            {{/with}}
+            []
+        {{else}}
+            {{#if reflection}}
+                {{#ifSignature reflection}}
+                    {{#if reflection.parent.parent.url}}
+                        <a href="{{relativeURL reflection.parent.parent.url}}">{{reflection.parent.parent.name}}</a>
+                    {{else}}
+                        {{reflection.parent.parent.name}}
+                    {{/if}}
+                    .
+                    {{#if reflection.parent.url}}
+                        <a href="{{relativeURL reflection.parent.url}}">{{reflection.parent.name}}</a>
+                    {{else}}
+                        {{reflection.parent.name}}
+                    {{/if}}
                 {{else}}
-                    {{reflection.parent.name}}
-                {{/if}}
+                    {{#if reflection.parent.url}}
+                        <a href="{{relativeURL reflection.parent.url}}">{{reflection.parent.name}}</a>
+                    {{else}}
+                        {{reflection.parent.name}}
+                    {{/if}}
+                    .
+                    {{#if reflection.url}}
+                        <a href="{{relativeURL reflection.url}}">{{reflection.name}}</a>
+                    {{else}}
+                        {{reflection.name}}
+                    {{/if}}
+                {{/ifSignature}}
             {{else}}
-                {{#if reflection.parent.url}}
-                    <a href="{{relativeURL reflection.parent.url}}">{{reflection.parent.name}}</a>
-                {{else}}
-                    {{reflection.parent.name}}
-                {{/if}}
-                .
-                {{#if reflection.url}}
-                    <a href="{{relativeURL reflection.url}}">{{reflection.name}}</a>
-                {{else}}
-                    {{reflection.name}}
-                {{/if}}
-            {{/ifSignature}}
-            {{#if isArray}}
-                []
+                {{this}}
             {{/if}}
-        {{else}}
-            {{this}}
         {{/if}}
     {{else}}
         void

+ 4 - 1
website/typedoc-theme/partials/typeParameters.hbs

@@ -7,8 +7,11 @@
                     <span class="tsd-signature-symbol">:&nbsp;</span>
                     {{#with type}}{{> type}}{{/with}}
                 {{/if}}
+                {{#if default}}
+                    &nbsp;=&nbsp;{{#with default}}{{> type}}{{/with}}
+                {{/if}}
             {{/compact}}</h4>
             {{> comment}}
         </li>
     {{/each}}
-</ul>
+</ul>

+ 3 - 6
website/typedoc-theme/templates/reflection.hbs

@@ -25,7 +25,7 @@
         <h3>Implements</h3>
         <ul class="tsd-hierarchy">
             {{#each model.implementedTypes}}
-                <li>{{> type}}</li>
+                <li>{{#compact}}{{> type}}{{/compact}}</li>
             {{/each}}
         </ul>
     </section>
@@ -36,7 +36,7 @@
         <h3>Implemented by</h3>
         <ul class="tsd-hierarchy">
             {{#each model.implementedBy}}
-                <li>{{> type}}</li>
+                <li>{{#compact}}{{> type}}{{/compact}}</li>
             {{/each}}
         </ul>
     </section>
@@ -73,10 +73,7 @@
     </section>
 {{/if}}
 
-{{!--MONACO_CHANGE--}}
-{{sortModelGroups model}}
-{{!--MONACO_CHANGE--}}
 {{#with model}}
     {{> index}}
     {{> members}}
-{{/with}}
+{{/with}}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio