├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── ---bug-report.md
│ ├── ---feature-request.md
│ └── ---question.md
├── demo.gif
├── issuehunt-logo.svg
├── logo.png
├── pull_request_template.md
└── stale.yml
├── .gitignore
├── .npmignore
├── LICENSE
├── README.md
├── gruntfile.js
├── logo.psd
├── package.json
└── src
├── default
├── assets
│ ├── css
│ │ ├── _constants.sass
│ │ ├── elements
│ │ │ ├── _comment.sass
│ │ │ ├── _filter.sass
│ │ │ ├── _footer.sass
│ │ │ ├── _hierarchy.sass
│ │ │ ├── _images.sass
│ │ │ ├── _index.sass
│ │ │ ├── _member.sass
│ │ │ ├── _navigation.sass
│ │ │ ├── _panel.sass
│ │ │ ├── _search.sass
│ │ │ ├── _signatures.sass
│ │ │ ├── _sources.sass
│ │ │ └── _toolbar.sass
│ │ ├── layouts
│ │ │ ├── _default.sass
│ │ │ └── _minimal.sass
│ │ ├── main.sass
│ │ ├── setup
│ │ │ ├── _animations.sass
│ │ │ ├── _grid.sass
│ │ │ ├── _icons.scss
│ │ │ ├── _mixins.sass
│ │ │ └── _typography.sass
│ │ └── vendors
│ │ │ ├── _highlight.js.sass
│ │ │ └── _normalize.sass
│ ├── images
│ │ ├── icons.png
│ │ ├── icons.psd
│ │ ├── icons@2x.png
│ │ ├── icons@2x.png0
│ │ ├── widgets.png
│ │ ├── widgets.psd
│ │ └── widgets@2x.png
│ └── js
│ │ ├── lib
│ │ ├── backbone-1.1.2.min.js
│ │ ├── jquery-2.1.1.min.js
│ │ ├── lunr.min.js
│ │ └── underscore-1.6.0.min.js
│ │ ├── main.js
│ │ └── src
│ │ ├── lib
│ │ ├── backbone
│ │ │ └── backbone.d.ts
│ │ ├── jquery
│ │ │ └── jquery.d.ts
│ │ ├── lunr
│ │ │ └── lunr.d.ts
│ │ ├── tsd.d.ts
│ │ ├── tsd.json
│ │ └── underscore
│ │ │ └── underscore.d.ts
│ │ ├── typedoc
│ │ ├── Application.ts
│ │ ├── components
│ │ │ ├── Filter.ts
│ │ │ ├── MenuHighlight.ts
│ │ │ ├── MenuSticky.ts
│ │ │ ├── Search.ts
│ │ │ ├── Signature.ts
│ │ │ └── Toggle.ts
│ │ ├── services
│ │ │ └── Viewport.ts
│ │ └── utils
│ │ │ ├── pointer.ts
│ │ │ └── transitions.ts
│ │ └── ~bootstrap.ts
├── layouts
│ └── default.hbs
├── partials
│ ├── analytics.hbs
│ ├── breadcrumb.hbs
│ ├── comment-tags.hbs
│ ├── comment.hbs
│ ├── description.hbs
│ ├── footer.hbs
│ ├── header.hbs
│ ├── hierarchy.hbs
│ ├── index.children.hbs
│ ├── index.children.rec.hbs
│ ├── index.hbs
│ ├── member.declaration.hbs
│ ├── member.getterSetter.hbs
│ ├── member.hbs
│ ├── member.signature.body.hbs
│ ├── member.signature.title.hbs
│ ├── member.signatures.hbs
│ ├── member.sources.hbs
│ ├── members.group.hbs
│ ├── members.hbs
│ ├── navglobals.hbs
│ ├── navigation.hbs
│ ├── parameter.hbs
│ ├── toc.hbs
│ ├── toc.root.hbs
│ ├── type.hbs
│ ├── typeAndParent.hbs
│ └── typeParameters.hbs
└── templates
│ ├── index.hbs
│ └── reflection.hbs
├── minimal
├── layouts
│ └── default.hbs
├── partials
│ ├── header.hbs
│ └── member.hbs
└── templates
│ └── index.hbs
└── plugin.js
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @pirix-gh
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/---bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "🐞 Bug Report"
3 | about: "Something isn't working well 💔"
4 |
5 | ---
6 |
7 | ## 🐞 Bug Report
8 |
9 | #### Describe the bug
10 |
11 |
12 | #### Reproduce the bug
13 | ```ts
14 | // REPL or a link to your repository if applicable.
15 | // A *self-contained* demonstration of the problem.
16 | ```
17 |
18 | #### Expected behavior
19 |
20 |
21 | #### Possible Solution
22 |
23 |
24 | #### Screenshots
25 |
26 |
27 | #### Additional context
28 |
29 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/---feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "🍩 Feature Request"
3 | about: "Suggest an idea for this project 💡"
4 |
5 | ---
6 |
7 | ## 🍩 Feature Request
8 |
9 | #### Is your feature request related to a problem?
10 |
11 |
12 | #### Describe the solution you'd like
13 |
14 |
15 | #### Describe alternatives you've considered
16 |
17 |
18 | #### Teachability, Documentation, Adoption, Migration Strategy
19 |
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/---question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "🤔 Question"
3 | about: "There's something unclear 🤯"
4 |
5 | ---
6 |
7 | ## 🤔 Question
8 |
9 | #### Describe your question
10 |
11 |
12 |
13 | #### Search tags, topics
14 |
15 |
16 |
--------------------------------------------------------------------------------
/.github/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/.github/demo.gif
--------------------------------------------------------------------------------
/.github/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/.github/logo.png
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## 🎁 Pull Request
2 |
3 |
4 | * [ ] Used a clear / meaningful title for this pull request
5 | * [ ] Tested the changes in your own code (on your projects)
6 | * [ ] Added / Edited tests to reflect changes (`tst` folder)
7 | * [ ] Have read the **Contributing** part of the **Readme**
8 | * [ ] Passed `npm test`
9 |
10 |
11 |
12 | #### Fixes
13 |
14 |
15 | #### Why have you made changes?
16 |
17 |
18 | #### What changes have you made?
19 | * changed this to achieve this
20 | * changed that to achieve this
21 | * ...
22 |
23 | #### Anything else worth mentioning?
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # Number of days of inactivity before an issue becomes stale
2 | daysUntilStale: 60
3 | # Number of days of inactivity before a stale issue is closed
4 | daysUntilClose: 7
5 | # Issues with these labels will never be considered stale
6 | exemptLabels:
7 | - pinned #todo
8 | - security
9 | # Label to use when marking an issue as stale
10 | staleLabel: wontfix
11 | # Comment to post when marking an issue as stale. Set to `false` to disable
12 | markComment: >
13 | This issue has been automatically marked as stale because it has not had
14 | recent activity. It will be closed if no further activity occurs. Thank you
15 | for your contributions.
16 | # Comment to post when closing a stale issue. Set to `false` to disable
17 | closeComment: false
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .history
3 | .vscode
4 | package-lock.json
5 | **/package-lock.json
6 | .tscache
7 | bin
8 | minimal
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | package-lock.json
2 | node_modules
3 | src
4 | tst
5 | .babelrc.js
6 | webpack.config.js
7 | .eslintrc.json
8 | .ignore
9 | .github
10 | *.tgz
11 | gruntfile.js
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
eledoc
7 |
8 |
9 | 🌒 A material dark theme for TypeDoc
10 |
11 |
12 | 🎮 View Demo
13 | ·
14 | 🐞 Report Bug
15 | ·
16 | 🍩 Request Feature
17 | ·
18 | 🤔 Ask Questions
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | ## Table of Contents
41 |
42 | * [📜 About](#-about)
43 | * [🍩 Features](#-features)
44 | * [🏁 Getting started](#-getting-started)
45 | * [🧠 Good to know](#-good-to-know-)
46 | * [🎁 Contributing](#-contributing)
47 | * [👏 Sponsoring issues](#-sponsoring-issues)
48 | * [🔮 What's next](#-whats-next)
49 | * [🙏 Acknowledgements](#-acknowledgements)
50 |
51 | ## 📜 About
52 |
53 | **eledoc** is a delightful dark theme for TypeDoc
54 |
55 | #### Goals
56 |
57 | * Provide a nice user experience
58 | * Proper layout with visual cues
59 | * Fix problems from usual themes
60 |
61 | ## 🍩 Features
62 |
63 | * All the features from the default typedoc themes
64 | * Create sections with `@[tag-name]` in doc comments
65 |
66 |
67 |
68 |
69 |
70 | ## 🏁 Getting Started
71 |
72 | #### Prerequisites
73 |
74 | ```sh
75 | npm install typedoc --save-dev
76 | ```
77 |
78 | #### Installation
79 |
80 | ```sh
81 | npm install eledoc --save-dev
82 | ```
83 |
84 | #### Hello World
85 |
86 | With the command line
87 |
88 | ```sh
89 | npx typedoc --out docs src --theme node_modules/eledoc/bin/default/
90 | ```
91 |
92 | Or in your `package.json`
93 |
94 | ```ts
95 | "scripts": {
96 | "build:docs": "typedoc --out docs src --theme node_modules/eledoc/bin/default/",
97 | }
98 | ```
99 |
100 | ## [🧠 Good to Know ⤢](https://github.com/pirix-gh/eledoc/issues?q=label%3Aquestion+sort%3Areactions-%2B1-desc)
101 |
102 | In this wiki, you'll find some extra resources for your learning & understanding.
103 |
104 | It is incremental and it will be completed on demand, you can ask for this below.
105 |
106 | #### [Questions ⤢](https://github.com/pirix-gh/eledoc/issues?q=label%3Aquestion+sort%3Areactions-%2B1-desc)
107 |
108 | Are you missing something? Participate to the open-wiki by posting your
109 | questions [right here](https://github.com/pirix-gh/eledoc/issues/new?template=---question.md).
110 |
111 | ## 🎁 Contributing
112 |
113 | Contributions are what make the open source community such an amazing place to
114 | learn, inspire, and create. Any contributions you make are **greatly appreciated**.
115 | There are many ways to contribute to the project:
116 |
117 | #### Community
118 | * [Help the community with answers on Gitter](https://gitter.im/eledoc-/community?utm_source=share-link&utm_medium=link&utm_campaign=share-link)
119 | * [Reporting bugs or requesting new features](https://github.com/pirix-gh/eledoc/issues/new/choose)
120 |
121 | #### Pull Requests
122 | 1. [Read the tutorial](https://medium.com/free-code-camp/typescript-curry-ramda-types-f747e99744ab)
123 | 2. Fork the project
124 | 3. Clone your fork
125 | 4. Create a pr/**feature** branch
126 | ```sh
127 | git checkout -b pr/CoolFeature
128 | ```
129 | 5. Commit your changes
130 | ```sh
131 | git commit -m 'Added this CoolFeature'
132 | ```
133 | 6. [Run the tests](#-running-tests)
134 | 7. Commit your changes
135 | ```sh
136 | git push origin pr/CoolFeature
137 | ```
138 | 8. Open a pull request
139 |
140 | ## 👏 Sponsoring issues
141 |
142 | **Sponsored issues have higher priority over non-critical issues**.
143 |
144 | You can either request a new feature or a bug fix then fund it.
145 |
146 |
147 |
149 |
150 |
151 |
152 |
153 | **The money will be transparently split with an issue's assignees.**
154 |
155 | ## 🔮 What's next
156 |
157 | * Re-write with React
158 |
159 | ## 🙏 Acknowledgements
160 |
161 | Many, many thanks to all the
162 | [contributors](https://github.com/pirix-gh/eledoc/graphs/contributors)
163 |
164 | ## 💟 Friendly Projects
165 | * [`ts-toolbelt`](https://github.com/pirix-gh/ts-toolbelt) - 👷 Higher type safety for TypeScript
166 |
--------------------------------------------------------------------------------
/gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function(grunt)
2 | {
3 | grunt.initConfig({
4 | pkg: grunt.file.readJSON('package.json'),
5 | ts: {
6 | themeDefault: {
7 | options: {
8 | sourceMap: false,
9 | module: 'amd',
10 | basePath: 'themes',
11 | declaration: false
12 | },
13 | src: [
14 | 'src/default/assets/js/src/lib/**/*.ts',
15 | 'src/default/assets/js/src/typedoc/Application.ts',
16 | 'src/default/assets/js/src/typedoc/components/**/*.ts',
17 | 'src/default/assets/js/src/typedoc/services/**/*.ts',
18 | 'src/default/assets/js/src/typedoc/utils/**/*.ts',
19 | 'src/default/assets/js/src/~bootstrap.ts'
20 | ],
21 | out: 'src/default/assets/js/main.js'
22 | }
23 | },
24 | uglify: {
25 | themeDefault: {
26 | options: {
27 | mangle: false
28 | },
29 | files: {
30 | 'bin/default/assets/js/main.js': [
31 | 'src/default/assets/js/lib/jquery-2.1.1.min.js',
32 | 'src/default/assets/js/lib/underscore-1.6.0.min.js',
33 | 'src/default/assets/js/lib/backbone-1.1.2.min.js',
34 | 'src/default/assets/js/lib/lunr.min.js',
35 | 'src/default/assets/js/main.js'
36 | ]
37 | }
38 | }
39 | },
40 | 'string-replace': {
41 | themeMinimal: {
42 | files: {
43 | 'bin/minimal/layouts/default.hbs': ['src/minimal/layouts/default.hbs']
44 | },
45 | options: {
46 | replacements: [{
47 | pattern: /{{ CSS }}/g,
48 | replacement: function() {
49 | var css = grunt.file.read('bin/default/assets/css/main.css');
50 | return css.replace(/url\(([^\)]*)\)/g, function(match, file) {
51 | if (match.indexOf(':') != -1) return match;
52 | var path = require('path'), fs = require('fs');
53 | var file = path.resolve('bin/default/assets/css', file);
54 | var data = fs.readFileSync(file, 'base64');
55 | return 'url(data:image/png;base64,' + data + ')';
56 | });
57 | }
58 | }, {
59 | pattern: /{{ JS }}/g,
60 | replacement: function() {
61 | return grunt.file.read('bin/default/assets/js/main.js').replace('{{', '{/**/{');
62 | }
63 | }]
64 | }
65 | }
66 | },
67 | sass: {
68 | options: {
69 | style: 'compact',
70 | unixNewlines: true
71 | },
72 | themeDefault: {
73 | files: [{
74 | expand: true,
75 | cwd: 'src/default/assets/css',
76 | src: '**/*.sass',
77 | dest: 'bin/default/assets/css',
78 | ext: '.css'
79 | }]
80 | }
81 | },
82 | autoprefixer: {
83 | options: {
84 | cascade: false
85 | },
86 | themeDefault: {
87 | expand: true,
88 | src: 'bin/**/*.css',
89 | dest: './'
90 | }
91 | },
92 | copy: {
93 | plugin: {
94 | files: [{
95 | expand: true,
96 | cwd: 'src',
97 | src: ['*.js'],
98 | dest: 'bin'
99 | }]
100 | },
101 | themeDefault: {
102 | files: [{
103 | expand: true,
104 | cwd: 'src/default',
105 | src: ['**/*.hbs', '**/*.png'],
106 | dest: 'bin/default'
107 | }]
108 | },
109 | themeDefault2Minimal: {
110 | files: [{
111 | expand: true,
112 | cwd: 'src/default/partials',
113 | src: ['**/*.hbs'],
114 | dest: 'bin/minimal/partials'
115 | }]
116 | },
117 | themeMinimal: {
118 | files: [{
119 | expand: true,
120 | cwd: 'src/minimal',
121 | src: ['**/*.hbs'],
122 | dest: 'bin/minimal'
123 | }]
124 | }
125 | },
126 | watch: {
127 | js: {
128 | files: ['src/default/assets/js/src/**/*.ts'],
129 | tasks: ['js']
130 | },
131 | css: {
132 | files: ['src/default/assets/css/**/*'],
133 | tasks: ['css']
134 | },
135 | default: {
136 | files: ['src/default/**/*.hbs'],
137 | tasks: ['copy', 'string-replace']
138 | },
139 | minimal: {
140 | files: ['src/minimal/partials/**/*.hbs', 'src/minimal/templates/**/*.hbs'],
141 | tasks: ['copy:themeMinimal']
142 | },
143 | minimalLayout: {
144 | files: ['src/minimal/layouts/default.hbs'],
145 | tasks: ['string-replace:themeMinimal']
146 | }
147 | }
148 | });
149 |
150 |
151 | grunt.loadNpmTasks('grunt-contrib-watch');
152 | grunt.loadNpmTasks('grunt-sass');
153 | grunt.loadNpmTasks('grunt-contrib-uglify');
154 | grunt.loadNpmTasks('grunt-contrib-copy');
155 | grunt.loadNpmTasks('grunt-string-replace');
156 | grunt.loadNpmTasks('grunt-autoprefixer');
157 | grunt.loadNpmTasks('grunt-ts');
158 |
159 | grunt.registerTask('css', ['sass', 'autoprefixer']);
160 | grunt.registerTask('js', ['ts:themeDefault', 'uglify']);
161 | grunt.registerTask('default', ['copy', 'css', 'js', 'string-replace']);
162 | };
163 |
--------------------------------------------------------------------------------
/logo.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/logo.psd
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "eledoc",
3 | "version": "0.2.1",
4 | "license": "Apache-2.0",
5 | "author": {
6 | "name": "Pierre-Antoine Mills",
7 | "url": "https://github.com/pirix-gh"
8 | },
9 | "description": "A material dark theme for TypeDoc",
10 | "keywords": [
11 | "typescript",
12 | "documentation",
13 | "generator"
14 | ],
15 | "homepage": "https://github.com/pirix-gh/eledoc",
16 | "repository": {
17 | "type": "git",
18 | "url": "https://github.com/pirix-gh/eledoc"
19 | },
20 | "main": "bin/plugin.js",
21 | "scripts": {
22 | "clean": "rimraf bin",
23 | "grunt": "grunt",
24 | "build": "npm run clean && npm run grunt",
25 | "prepublish": "npm run build"
26 | },
27 | "engines": {
28 | "node": ">= 4"
29 | },
30 | "devDependencies": {
31 | "grunt": "^1.0.1",
32 | "grunt-autoprefixer": "^3.0.4",
33 | "grunt-cli": "^1.2.0",
34 | "grunt-contrib-copy": "^1.0.0",
35 | "grunt-contrib-uglify": "^2.3.0",
36 | "grunt-contrib-watch": "~1.0.0",
37 | "grunt-sass": "^2.1.0",
38 | "grunt-string-replace": "^1.0.0",
39 | "grunt-ts": "^5.5.1",
40 | "rimraf": "^2.6.1",
41 | "typescript": "2.3.2"
42 | },
43 | "files": [
44 | "bin",
45 | "LICENSE"
46 | ]
47 | }
48 |
--------------------------------------------------------------------------------
/src/default/assets/css/_constants.sass:
--------------------------------------------------------------------------------
1 | // Fonts
2 | //
3 | $FONT_FAMILY: 'Noto sans', sans-serif
4 | $FONT_FAMILY_MONO: monospace
5 |
6 | $FONT_SIZE: 20px
7 | $FONT_SIZE_MONO: 20px
8 |
9 | $LINE_HEIGHT: 1.2em
10 |
11 | $THEME_COLOR: #1898e2
12 | $THEME_COLOR_VISUAL: #dddddd
13 | $THEME_COLOR_VISUAL_FADED: #363636
14 |
15 | // Colors
16 | $COLOR_BACKGROUND: #141414
17 | $COLOR_TEXT: $THEME_COLOR_VISUAL
18 | $COLOR_TEXT_ASIDE: $THEME_COLOR_VISUAL
19 | $COLOR_LINK: $THEME_COLOR
20 |
21 | $COLOR_MENU_DIVIDER: #141414
22 | $COLOR_MENU_DIVIDER_FOCUS: $THEME_COLOR_VISUAL
23 | $COLOR_MENU_LABEL: #212121
24 |
25 | $COLOR_PANEL: #191919
26 | $COLOR_PANEL_DIVIDER: $THEME_COLOR_VISUAL_FADED
27 |
28 | $COLOR_COMMENT_TAG: #343434
29 | $COLOR_COMMENT_TAG_TEXT: $THEME_COLOR_VISUAL
30 |
31 | $COLOR_CODE_BACKGROUND: #111111
32 | $COLOR_CODE: #ffe4b5
33 |
34 | $COLOR_TS: $THEME_COLOR_VISUAL
35 | $COLOR_TS_INTERFACE: $THEME_COLOR_VISUAL
36 | $COLOR_TS_ENUM: $THEME_COLOR_VISUAL
37 | $COLOR_TS_CLASS: $THEME_COLOR_VISUAL
38 | $COLOR_TS_PRIVATE: $THEME_COLOR_VISUAL
39 |
40 | $TOOLBAR_COLOR: #151515
41 | $TOOLBAR_TEXT_COLOR: $THEME_COLOR
42 | $TOOLBAR_HEIGHT: 40px
43 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_comment.sass:
--------------------------------------------------------------------------------
1 | dl.tsd-comment-tags
2 | overflow: hidden
3 |
4 | dt
5 | float: left
6 | padding: 1px 5px
7 | margin: 0 10px 0 0
8 | border-radius: 4px
9 | border: 1px solid $COLOR_TEXT
10 | color: $COLOR_TEXT
11 | font-size: 0.8em
12 | font-weight: normal
13 |
14 | dd
15 | margin: 0 0 10px 0
16 |
17 | &:before, &:after
18 | display: table
19 | content: " "
20 | pre, &:after
21 | clear: both
22 |
23 | p
24 | margin: 0
25 |
26 | .tsd-panel.tsd-comment .lead
27 | font-size: 1.1em
28 | line-height: $LINE_HEIGHT
29 | margin-bottom: 2em
30 |
31 | &:last-child
32 | margin-bottom: 0
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_filter.sass:
--------------------------------------------------------------------------------
1 | // Classes set on the body to control the visible state of the filtered elements
2 | //
3 | .toggle-protected .tsd-is-private
4 | display: none
5 |
6 | .toggle-public .tsd-is-private,
7 | .toggle-public .tsd-is-protected,
8 | .toggle-public .tsd-is-private-protected
9 | display: none
10 |
11 | .toggle-inherited .tsd-is-inherited
12 | display: none
13 |
14 | .toggle-only-exported .tsd-is-not-exported
15 | display: none
16 |
17 | .toggle-externals .tsd-is-external
18 | display: none
19 |
20 |
21 | // Filter Buttons in the toolbar
22 | //
23 | #tsd-filter
24 | position: relative
25 | display: inline-block
26 | height: $TOOLBAR_HEIGHT
27 | vertical-align: bottom
28 |
29 | .no-filter &
30 | display: none
31 |
32 | .tsd-filter-group
33 | color: $COLOR_TEXT
34 | display: inline-block
35 | vertical-align: bottom
36 | white-space: nowrap
37 | padding: 0 20px 0 0
38 |
39 | input
40 | display: none
41 |
42 | +size-xs-sm
43 | .tsd-filter-group
44 | display: block
45 | position: absolute
46 | top: $TOOLBAR_HEIGHT
47 | right: 20px
48 | height: auto
49 | background-color: $COLOR_PANEL
50 | visibility: hidden
51 | transform: translate(50%,0)
52 | box-shadow: 0 0 4px rgba(#000, 0.25)
53 |
54 | .has-options &
55 | visibility: visible
56 |
57 | .to-has-options &
58 | animation: fade-in 0.2s
59 |
60 | .from-has-options &
61 | animation: fade-out 0.2s
62 |
63 | label,
64 | .tsd-select
65 | display: block
66 | padding-right: 20px
67 |
68 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_footer.sass:
--------------------------------------------------------------------------------
1 | footer
2 | &.with-border-bottom
3 | border-bottom: 1px solid $COLOR_PANEL_DIVIDER
4 |
5 | .tsd-legend-group
6 | margin: 20px 0
7 | padding: 20px
8 | background-color: $COLOR_BACKGROUND
9 | border: 4px solid $THEME_COLOR_VISUAL_FADED
10 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0, 0, 0, 0.2)
11 | border-radius: 4px
12 | font-weight: 300
13 |
14 | .tsd-legend
15 | display: inline-block
16 | min-width: 19%
17 | padding: 0
18 | margin: 0
19 | font-size: $FONT_SIZE
20 | list-style: none
21 | line-height: $LINE_HEIGHT
22 | vertical-align: top
23 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_hierarchy.sass:
--------------------------------------------------------------------------------
1 | // Displays the type hierarchy
2 | //
3 | //
4 | //
5 | // Event
6 | //
7 | //
8 | // DispatcherEvent
9 | //
13 | //
14 | //
15 | //
16 | //
17 | //
18 | .tsd-hierarchy
19 | list-style: initial
20 | padding: 0 0 0 20px
21 | margin: 0
22 |
23 | li
24 | margin-top: 10px
25 |
26 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_images.sass:
--------------------------------------------------------------------------------
1 | // fixes issue with images in readme
2 | img
3 | max-width: 100%
4 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_index.sass:
--------------------------------------------------------------------------------
1 | // Displays an index of grouped links.
2 | //
3 | //
4 | //
5 | //
6 | //
Constructor methods
7 | //
10 | //
11 | //
12 | //
Properties
13 | //
19 | //
20 | //
21 | //
22 | //
23 | .tsd-index-panel
24 | .tsd-index-content
25 | margin-bottom: -30px !important
26 |
27 | .tsd-index-section
28 | margin-bottom: 30px !important
29 |
30 | ul.tsd-index-list
31 | display: inline
32 | +vendors(column-count, 3)
33 | +vendors(column-gap, 20px)
34 | padding: 0
35 | list-style: none
36 | line-height: $LINE_HEIGHT
37 |
38 | +size-xs-sm
39 | +vendors(column-count, 1)
40 |
41 | +size-md
42 | +vendors(column-count, 2)
43 |
44 | li
45 | padding: 2px
46 | +vendors(column-break-inside, avoid)
47 | +vendors(page-break-inside, avoid)
48 |
49 | a,
50 | .tsd-parent-kind-module a
51 | color: $COLOR_TS
52 |
53 | .tsd-parent-kind-interface a
54 | color: $COLOR_TS_INTERFACE
55 |
56 | .tsd-parent-kind-enum a
57 | color: $COLOR_TS_ENUM
58 |
59 | .tsd-parent-kind-class a
60 | color: $COLOR_TS_CLASS
61 |
62 |
63 | .tsd-kind-module a
64 | color: $COLOR_TS
65 |
66 | .tsd-kind-interface a
67 | color: $COLOR_TS_INTERFACE
68 |
69 | .tsd-kind-enum a
70 | color: $COLOR_TS_ENUM
71 |
72 | .tsd-kind-class a
73 | color: $COLOR_TS_CLASS
74 |
75 | .tsd-is-private a
76 | color: $COLOR_TS_PRIVATE
77 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_member.sass:
--------------------------------------------------------------------------------
1 | .tsd-flag
2 | display: inline-block
3 | padding: 0 8px 4px
4 | border-radius: 4px
5 | color: $COLOR_COMMENT_TAG_TEXT
6 | background-color: $COLOR_COMMENT_TAG
7 | text-indent: 0
8 | font-size: $FONT_SIZE_MONO
9 | font-weight: normal
10 | text-transform: lowercase
11 |
12 | .tsd-anchor
13 | position: absolute
14 | top: -100px
15 |
16 | .tsd-member
17 | position: relative
18 |
19 | .tsd-anchor + h3
20 | margin-top: 0
21 | margin-bottom: 0
22 | border-bottom: none
23 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_navigation.sass:
--------------------------------------------------------------------------------
1 | // Base format for the navigation parts.
2 | //
3 | =INDENT($DEPTH, $BASE, $STEP, $PROGRESS:$DEPTH)
4 | @if $PROGRESS >= 0
5 | & li
6 | +INDENT($DEPTH, $BASE, $STEP, $PROGRESS - 1)
7 | @else
8 | & a
9 | margin-left: #{($BASE + $STEP * ($DEPTH - 1))}px
10 |
11 | =INDENTS($COUNT, $BASE, $STEP)
12 | @for $DEPTH from 1 through $COUNT
13 | +INDENT($DEPTH, $BASE, $STEP)
14 |
15 | .tsd-navigation
16 | a
17 | display: block
18 | color: $COLOR_TEXT
19 | text-decoration: none
20 | transition: border-left-color 0.1s
21 |
22 | &:hover
23 | text-decoration: underline
24 |
25 | ul
26 | margin: 0
27 | padding: 0
28 | list-style: none
29 |
30 | > ul
31 | margin: 20px 0
32 | padding: 20px
33 | background-color: $COLOR_BACKGROUND
34 | border: 4px solid $THEME_COLOR_VISUAL_FADED
35 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0, 0, 0, 0.2)
36 | border-radius: 4px
37 | font-weight: 300
38 |
39 | li
40 | padding: 0
41 |
42 |
43 | // Primary part of the navigation containing the available modules.
44 | //
45 | //
46 | //
57 | //
58 | //
59 | .tsd-navigation.primary
60 | padding-bottom: 40px
61 |
62 | a
63 | display: block
64 | padding-top: 0px
65 | padding-bottom: 0px
66 |
67 | ul
68 | +INDENTS(6, 5, 20)
69 |
70 |
71 | &.current > a
72 | font-weight: bold
73 |
74 | &.label span
75 | display: block
76 | padding: 20px 0 6px 5px
77 | color: $COLOR_MENU_LABEL
78 |
79 | &.globals + li > span,
80 | &.globals + li > a
81 | padding-top: 20px
82 |
83 |
84 | /* The side navigation menu */
85 | .sidenav
86 | height: 100% /* 100% Full-height */
87 | width: 0 /* 0 width - change this with JavaScript */
88 | position: fixed /* Stay in place */
89 | z-index: 9000 /* Stay on top */
90 | top: 0 /* Stay at the top */
91 | right: 0
92 | background-color: #111 /* Black*/
93 | overflow-x: hidden /* Disable horizontal scroll */
94 | transition: 0.5s /* 0.5 second transition effect to slide in the sidenav */
95 | padding: 0
96 | box-shadow: 0 0 4px rgba(#000, 0.25)
97 |
98 | /* Style page content - use this if you want to push the page content to the right when you open the side navigation */
99 | /* On smaller screens, where height is less than 450px, change the style of the sidenav (less padding and a smaller font size) */
100 | @media screen and (max-height: 450px)
101 | .sidenav
102 | padding-top: 15px
103 | .sidenav a
104 | font-size: 18px
105 |
106 | // Secondary part of the navigation containing the table of contents
107 | // of the current module.
108 | // Can be made sticky by `typedoc.MenuSticky` and will highlight current sticky with `typedoc.MenuHighlight`.
109 | //
110 | //
111 | //
116 | //
117 | //
118 | // OutputEvent
119 | //
125 | //
126 | //
127 | //
131 | //
132 | //
133 | .tsd-navigation.secondary
134 | ul
135 | +INDENTS(6, 0, 30)
136 | transition: opacity 0.2s
137 |
138 | li.focus > a,
139 | ul.current li.focus > a
140 | border-left-color: $COLOR_MENU_DIVIDER_FOCUS
141 |
142 | // Sticky menu setup
143 | //
144 | .menu-sticky-wrap
145 | +size-md-lg
146 | position: static
147 |
148 | .no-csspositionsticky &
149 | &.sticky
150 | position: fixed
151 |
152 | &.sticky-current
153 | position: fixed
154 |
155 | ul.before-current,
156 | ul.after-current
157 | opacity: 0
158 |
159 | &.sticky-bottom
160 | position: absolute
161 | top: auto !important
162 | left: auto !important
163 | bottom: 0
164 | right: 0
165 |
166 | .csspositionsticky &
167 | &.sticky
168 | position: sticky
169 |
170 | &.sticky-current
171 | position: sticky
172 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_panel.sass:
--------------------------------------------------------------------------------
1 | // Displays a panel, an organisation unit in TypeDoc used to group single entities
2 | // like a method or a variable.
3 |
4 | .tsd-panel
5 | @extend %prevent-children-margin
6 | margin: 20px 0
7 | padding: 20px
8 | background-color: $COLOR_PANEL
9 | border: 4px solid darken($THEME_COLOR, 20%)
10 | box-shadow: 0 2px 6px rgba(0,0,0,0.20), 0 2px 6px rgba(0,0,0,0.20);
11 | -webkit-border-radius: 4px
12 | -moz-border-radius: 4px
13 | border-radius: 4px
14 | font-weight: 300
15 |
16 | &:empty
17 | display: none
18 |
19 | h1, h2, h3, h4
20 | margin-top: 40px
21 | margin-bottom: 20px
22 | margin-left: -20px
23 | margin-right: -20px
24 | padding-left: 20px
25 | border-bottom: 2px solid $COLOR_PANEL_DIVIDER
26 | padding-bottom: 10px
27 | font-weight: 400
28 | > .name
29 | border: 2px solid $COLOR_PANEL_DIVIDER
30 | border-radius: 4px 4px 0 0
31 | padding: 10px 15px 10px 15px
32 | border-bottom: 2px solid $COLOR_PANEL
33 |
34 | &.tsd-before-signature
35 | margin-bottom: 0
36 | border-bottom: 0
37 |
38 | table
39 | display: block
40 | width: 100%
41 | overflow: auto
42 | margin-top: 10px
43 | word-break: normal
44 | word-break: keep-all
45 |
46 | th, td
47 | padding: 6px 13px
48 | border: 1px solid #ddd
49 | font-weight: 300
50 |
51 | tr
52 | background-color: #1e1e1e
53 | border-top: 1px solid #ccc
54 | font-weight: 300
55 |
56 | &:nth-child(2n)
57 | background-color: #2a2a2a
58 | font-weight: 300
59 |
60 |
61 | // Holds a series of panels with an optional heading.
62 | //
63 | //
64 | //
Consetetur sadipscing elitr
65 | //
66 | //
Eirmod tempor invidunt
67 | //
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.
68 | //
69 | //
70 | //
Eirmod tempor invidunt
71 | //
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.
72 | //
73 | //
74 | //
75 | .tsd-panel-group
76 | margin: 60px 0
77 |
78 | > h1, > h2, > h3
79 | padding-left: 20px
80 | font-weight: 300
81 | padding-right: 20px
82 | color: $COLOR_LINK
83 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_search.sass:
--------------------------------------------------------------------------------
1 | #tsd-search
2 | transition: background-color 0.2s
3 |
4 | .title
5 | position: relative
6 | z-index: 2
7 | font-weight: 400
8 |
9 | .field
10 | position: absolute
11 | left: 0
12 | top: 0
13 | right: 40px
14 | height: 40px
15 |
16 | input
17 | box-sizing: border-box
18 | position: relative
19 | top: -50px
20 | z-index: 1
21 | width: 100%
22 | padding: 0 10px
23 | opacity: 0
24 | outline: 0
25 | border: 0
26 | background: transparent
27 | color: $THEME_COLOR
28 |
29 | label
30 | position: absolute
31 | overflow: hidden
32 | right: -40px
33 |
34 | .field input,
35 | .title
36 | transition: opacity 0.2s
37 |
38 | .results
39 | position: absolute
40 | visibility: hidden
41 | top: 40px
42 | width: 100%
43 | margin: 0
44 | padding: 0
45 | list-style: none
46 | box-shadow: 0 0 4px rgba(#000, 0.25)
47 |
48 | li
49 | padding: 0 10px
50 | background-color: $COLOR_BACKGROUND
51 |
52 | li:nth-child(even)
53 | background-color: $COLOR_PANEL
54 |
55 | li.state
56 | display: none
57 |
58 | li.current,
59 | li:hover
60 | background-color: $COLOR_PANEL_DIVIDER
61 |
62 | a
63 | display: block
64 |
65 | &:before
66 | top: 10px
67 |
68 | span.parent
69 | color: $COLOR_TEXT_ASIDE
70 | font-weight: normal
71 |
72 | &.has-focus
73 | background-color: $COLOR_PANEL_DIVIDER
74 |
75 | .field input
76 | top: 0
77 | opacity: 1
78 |
79 | .title
80 | z-index: 0
81 | opacity: 0
82 |
83 | .results
84 | visibility: visible
85 | z-index: 1
86 |
87 | &.loading .results li.state.loading
88 | display: block
89 |
90 | &.failure .results li.state.failure
91 | display: block
92 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_signatures.sass:
--------------------------------------------------------------------------------
1 | // Wraps a function signature.
2 | // Changes its appearance when directly placed inside a `tsd-panel`.
3 | // Can be combined with class `tsd-kind-icon` to display an icon in front of the signature.
4 | //
5 | //
13 | //
14 |
15 | .tsd-signature
16 | white-space: nowrap
17 | overflow: hidden
18 | text-overflow: ellipsis
19 | margin: 0 0 1em 0
20 | padding: 10px
21 | border: 1px solid $COLOR_PANEL_DIVIDER
22 | font-family: $FONT_FAMILY_MONO
23 | font-size: $FONT_SIZE_MONO
24 | width: inherit
25 |
26 | &.tsd-kind-icon
27 | padding-left: 30px
28 |
29 | &:before
30 | top: 10px
31 | left: 10px
32 |
33 | .tsd-panel > &
34 | margin-left: -20px
35 | margin-right: -20px
36 | border-width: 1px 0
37 |
38 | &.tsd-kind-icon
39 | padding-left: 40px
40 |
41 | &:before
42 | left: 20px
43 |
44 | .tsd-signature:hover
45 | white-space: normal !important
46 | text-overflow: ellipsis !important
47 |
48 | .tsd-signature-symbol
49 | color: $COLOR_TEXT_ASIDE
50 | font-weight: normal
51 |
52 | .tsd-signature-type
53 | text-transform: none
54 | font-weight: normal
55 | color: $THEME_COLOR
56 |
57 |
58 | // Displays a list of signatures.
59 | // Changes its appearance when directly placed inside a `tsd-panel`.
60 | // Made interactive by JavaScript at `typedoc.Signature`.
61 | //
62 | //
63 | // getChildByName(name: string): DeclarationReflection
64 | // getChildByName(names: Array<string>): DeclarationReflection
65 | //
66 | //
67 | .tsd-signatures
68 | padding: 0
69 | margin: 0 0 1em 0
70 | border: 1px solid $COLOR_PANEL_DIVIDER
71 |
72 | .tsd-signature
73 | margin: 0
74 | border-width: 1px 0 0 0
75 | transition: background-color 0.1s
76 |
77 | &:first-child
78 | border-top-width: 0
79 |
80 | &.current
81 | background-color: $COLOR_PANEL_DIVIDER
82 |
83 | &.active > .tsd-signature
84 | cursor: pointer
85 |
86 | .tsd-panel > &
87 | margin-left: -20px
88 | margin-right: -20px
89 | border-width: 1px 0
90 |
91 | .tsd-signature.tsd-kind-icon
92 | padding-left: 40px
93 |
94 | &:before
95 | left: 20px
96 |
97 | .tsd-panel > a.anchor + &
98 | border-top-width: 0
99 | margin-top: -20px
100 |
101 |
102 | // Holds the descriptions related to a list of signatures.
103 | // Made interactive by JavaScript at `typedoc.Signature`.
104 | .tsd-descriptions
105 | position: relative
106 | overflow: hidden
107 | transition: height 0.3s
108 | list-style: initial
109 |
110 | h4
111 | text-transform: capitalize
112 |
113 | > li
114 | @extend %prevent-children-margin
115 |
116 | &.active > .tsd-description
117 | display: none
118 |
119 | &.current
120 | display: block
121 |
122 | &.fade-in
123 | animation: fade-in-delayed 0.3s
124 |
125 | &.fade-out
126 | animation: fade-out-delayed 0.3s
127 | position: absolute
128 | display: block
129 | top: 0
130 | left: 0
131 | right: 0
132 | opacity: 0
133 | visibility: hidden
134 |
135 | ul.tsd-parameters,
136 | ul.tsd-type-parameters
137 | list-style: initial
138 | margin: 0
139 | padding-left: 20px
140 |
141 | .name
142 | @extend code
143 |
144 | .tsd-comment
145 | text-align: justify
146 | margin-top: -0.5em
147 |
148 | li
149 | margin-top: 10px
150 |
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_sources.sass:
--------------------------------------------------------------------------------
1 | .tsd-sources
2 | font-size: 0.8em
3 | color: lighten($COLOR_PANEL, 50%)
4 | margin: 20px 0 0 0
5 | text-align: right
6 |
7 | a
8 | font-weight: bold
9 | color: lighten($COLOR_PANEL, 60%)
10 |
11 | ul, p
12 | margin: 0 !important
13 |
14 | ul
15 | list-style: none
16 | padding: 0
--------------------------------------------------------------------------------
/src/default/assets/css/elements/_toolbar.sass:
--------------------------------------------------------------------------------
1 | // Displays the toolbar at the top of the page.
2 | //
3 | //
12 | //
13 | .tsd-page-toolbar
14 | width: 100%
15 | height: $TOOLBAR_HEIGHT
16 | color: $TOOLBAR_TEXT_COLOR
17 | background: $TOOLBAR_COLOR
18 |
19 | a
20 | color: $THEME_COLOR
21 | text-decoration: none
22 |
23 | &.title
24 | font-weight: bold
25 |
26 | &.title:hover
27 | text-decoration: underline
28 |
29 | .table-wrap
30 | display: table
31 | width: 100%
32 | height: $TOOLBAR_HEIGHT
33 |
34 | .table-cell
35 | display: table-cell
36 | position: relative
37 | white-space: nowrap
38 | line-height: $TOOLBAR_HEIGHT
39 |
40 | &:first-child
41 | width: 100%
42 |
43 | %TSD_WIDGET_ICON
44 | &:before
45 | content: ''
46 | display: inline-block
47 | width: 40px
48 | height: 40px
49 | margin: 0 -8px 0 0
50 | background-image: url(../images/widgets@2x.png)
51 | background-repeat: no-repeat
52 | text-indent: -1024px
53 | vertical-align: bottom
54 | background-size: 320px 40px
55 |
56 | .tsd-widget
57 | @extend %TSD_WIDGET_ICON
58 | display: inline-block
59 | overflow: hidden
60 | height: $TOOLBAR_HEIGHT
61 | transition: opacity 0.1s, background-color 0.2s
62 | vertical-align: bottom
63 | cursor: pointer
64 |
65 | &:hover
66 | opacity: 0.8
67 |
68 | &.active
69 | opacity: 1
70 | background-color: $COLOR_PANEL_DIVIDER
71 |
72 | &.no-caption
73 | width: 40px
74 |
75 | &:before
76 | margin: 0
77 |
78 | &.search:before
79 | background-position: 0 0
80 |
81 | &.menu:before
82 | background-position: -40px 0
83 |
84 | &.options:before
85 | background-position: -80px 0
86 |
87 | &.options,
88 | &.menu
89 | display: none
90 |
91 | +size-xs-sm
92 | display: inline-block
93 |
94 | input[type=checkbox] + &:before
95 | background-position: -120px 0
96 |
97 | input[type=checkbox]:checked + &:before
98 | background-position: -160px 0
99 |
100 | .tsd-select
101 | position: relative
102 | display: inline-block
103 | height: $TOOLBAR_HEIGHT
104 | transition: opacity 0.1s, background-color 0.2s
105 | vertical-align: bottom
106 | cursor: pointer
107 |
108 | .tsd-select-label
109 | @extend %TSD_WIDGET_ICON
110 | transition: opacity 0.2s
111 |
112 | &:before
113 | background-position: -240px 0
114 |
115 | &.active
116 | .tsd-select-label
117 | opacity: 0.8
118 |
119 | .tsd-select-list
120 | visibility: visible
121 | opacity: 1
122 | transition-delay: 0s
123 | z-index: 1
124 |
125 | .tsd-select-list
126 | color: $COLOR_TEXT
127 | position: absolute
128 | visibility: hidden
129 | top: $TOOLBAR_HEIGHT
130 | left: 0
131 | margin: 0
132 | padding: 0
133 | opacity: 0
134 | list-style: none
135 | box-shadow: 0 0 4px rgba(#000, 0.25)
136 | transition: visibility 0s 0.2s, opacity 0.2s
137 |
138 | li
139 | @extend %TSD_WIDGET_ICON
140 | padding: 0 20px 0 0
141 | background-color: $COLOR_BACKGROUND
142 |
143 | &:before
144 | background-position: 40px 0
145 |
146 | &:nth-child(even)
147 | background-color: $COLOR_PANEL
148 |
149 | &:hover
150 | background-color: $COLOR_PANEL_DIVIDER
151 | // color: black
152 |
153 | &.selected:before
154 | background-position: -200px 0
155 |
156 | +size-xs-sm
157 | .tsd-select-list
158 | top: 0
159 | left: auto
160 | right: 100%
161 | margin-right: -5px
162 |
163 | .tsd-select-label:before
164 | background-position: -280px 0
165 |
--------------------------------------------------------------------------------
/src/default/assets/css/layouts/_default.sass:
--------------------------------------------------------------------------------
1 | .col-menu
2 | height: 100%
3 | height: -moz-available
4 | height: -webkit-fill-available
5 | height: fill-available
6 | overflow: auto
7 |
8 | .col-content
9 | height: 100%
10 | height: -moz-available
11 | height: -webkit-fill-available
12 | height: fill-available
13 | overflow: auto
14 | padding-left: 20px
15 |
16 | html.default
17 | +size-md
18 | .col-content
19 | width: 72%
20 |
21 | .col-menu
22 | width: 28%
23 |
24 | +size-xs-sm
25 | .col-content
26 | float: none
27 | width: 100%
28 |
29 | .col-menu
30 | position: fixed !important
31 | overflow: auto
32 | -webkit-overflow-scrolling: touch
33 | overflow-scrolling: touch
34 | z-index: 1024
35 | top: 0 !important
36 | bottom: 0 !important
37 | left: auto !important
38 | right: 0 !important
39 | width: 100%
40 | padding: 20px 20px 0 0
41 | max-width: 450px
42 | visibility: hidden
43 | background-color: $COLOR_PANEL
44 | transform: translate(100%,0)
45 |
46 | > *:last-child
47 | padding-bottom: 20px
48 |
49 | .overlay
50 | content: ''
51 | display: block
52 | position: fixed
53 | z-index: 1023
54 | top: 0
55 | left: 0
56 | right: 0
57 | bottom: 0
58 | background-color: rgba(#000, 0.75)
59 | visibility: hidden
60 |
61 | &.to-has-menu
62 | .overlay
63 | animation: fade-in 0.4s
64 |
65 | header,
66 | footer,
67 | .col-content
68 | animation: shift-to-left 0.4s
69 |
70 | .col-menu
71 | animation: pop-in-from-right 0.4s
72 |
73 | &.from-has-menu
74 | .overlay
75 | animation: fade-out 0.4s
76 |
77 | header,
78 | footer,
79 | .col-content
80 | animation: unshift-to-left 0.4s
81 |
82 | .col-menu
83 | animation: pop-out-to-right 0.4s
84 |
85 | &.has-menu
86 | body
87 | overflow: hidden
88 |
89 | .overlay
90 | visibility: visible
91 |
92 | header,
93 | footer,
94 | .col-content
95 | transform: translate(-25%, 0)
96 |
97 | .col-menu
98 | visibility: visible
99 | transform: translate(0,0)
100 | padding-left: 20px
101 |
102 | .tsd-page-title
103 | padding: 10px 0 10px 0
104 | margin: 0 0 0 0
105 | background: $COLOR_PANEL
106 | box-shadow: 0 2px 2px rgba(0, 0, 0, 0.125)
107 |
108 | h1
109 | margin: 0
110 | font-weight: 400
111 |
112 | .tsd-breadcrumb
113 | margin: 0
114 | padding: 0
115 | color: $COLOR_TEXT_ASIDE
116 | font-weight: 300
117 |
118 | a
119 | color: $COLOR_TEXT_ASIDE
120 | text-decoration: none
121 |
122 | &:hover
123 | text-decoration: underline
124 |
125 | li
126 | display: inline
127 |
128 | &:after
129 | content: ' / '
130 |
--------------------------------------------------------------------------------
/src/default/assets/css/layouts/_minimal.sass:
--------------------------------------------------------------------------------
1 | html.minimal
2 | .container
3 | margin: 0
4 |
5 | .container-main
6 | padding-top: 50px
7 | padding-bottom: 0
8 |
9 | .content-wrap
10 | padding-left: 300px
11 |
12 | .tsd-navigation
13 | position: fixed !important
14 | overflow: auto
15 | -webkit-overflow-scrolling: touch
16 | overflow-scrolling: touch
17 | box-sizing: border-box
18 | z-index: 1
19 | left: 0
20 | top: 40px
21 | bottom: 0
22 | width: 300px
23 | padding: 20px
24 | margin: 0
25 |
26 | .tsd-member .tsd-member
27 | margin-left: 0
28 |
29 | .tsd-page-toolbar
30 | position: fixed
31 | z-index: 2
32 |
33 | #tsd-filter .tsd-filter-group
34 | right: 0
35 | transform: none
36 |
37 | footer
38 | background-color: transparent
39 |
40 | .container
41 | padding: 0
42 |
43 | .tsd-generator
44 | padding: 0
45 |
46 | +size-xs-sm
47 | .tsd-navigation
48 | display: none
49 | .content-wrap
50 | padding-left: 0
51 |
--------------------------------------------------------------------------------
/src/default/assets/css/main.sass:
--------------------------------------------------------------------------------
1 | @import constants
2 |
3 | @import vendors/normalize
4 | @import vendors/highlight.js
5 |
6 | @import setup/mixins
7 | @import setup/grid
8 | @import setup/icons
9 | @import setup/animations
10 | @import setup/typography
11 |
12 | @import layouts/default
13 | @import layouts/minimal
14 |
15 | @import elements/comment
16 | @import elements/filter
17 | @import elements/footer
18 | @import elements/hierarchy
19 | @import elements/index
20 | @import elements/member
21 | @import elements/navigation
22 | @import elements/panel
23 | @import elements/search
24 | @import elements/signatures
25 | @import elements/sources
26 | @import elements/toolbar
27 | @import elements/images
28 |
--------------------------------------------------------------------------------
/src/default/assets/css/setup/_animations.sass:
--------------------------------------------------------------------------------
1 | .no-transition
2 | transition: none !important
3 |
4 | @keyframes fade-in
5 | from
6 | opacity: 0
7 | to
8 | opacity: 1
9 |
10 | @keyframes fade-out
11 | from
12 | opacity: 1
13 | visibility: visible
14 | to
15 | opacity: 0
16 |
17 | @keyframes fade-in-delayed
18 | 0%
19 | opacity: 0
20 | 33%
21 | opacity: 0
22 | 100%
23 | opacity: 1
24 |
25 | @keyframes fade-out-delayed
26 | 0%
27 | opacity: 1
28 | visibility: visible
29 | 66%
30 | opacity: 0
31 | 100%
32 | opacity: 0
33 |
34 | @keyframes shift-to-left
35 | from
36 | transform: translate(0,0)
37 | to
38 | transform: translate(-25%,0)
39 |
40 | @keyframes unshift-to-left
41 | from
42 | transform: translate(-25%,0)
43 | to
44 | transform: translate(0,0)
45 |
46 | @keyframes pop-in-from-right
47 | from
48 | transform: translate(100%,0)
49 | to
50 | transform: translate(0,0)
51 |
52 | @keyframes pop-out-to-right
53 | from
54 | transform: translate(0,0)
55 | visibility: visible
56 | to
57 | transform: translate(100%,0)
--------------------------------------------------------------------------------
/src/default/assets/css/setup/_grid.sass:
--------------------------------------------------------------------------------
1 | =size-xs
2 | @media (max-width: 640px)
3 | &
4 | @content
5 |
6 | =size-sm
7 | @media (min-width: 641px) and (max-width: 900px)
8 | &
9 | @content
10 |
11 | =size-md
12 | @media (min-width: 901px) and (max-width: 1024px)
13 | &
14 | @content
15 |
16 | =size-lg
17 | @media (min-width: 1025px)
18 | &
19 | @content
20 |
21 | =size-xs-sm
22 | @media (max-width: 900px)
23 | &
24 | @content
25 |
26 | =size-md-lg
27 | @media (min-width: 901px)
28 | &
29 | @content
30 |
31 | .container
32 | max-width: 100%
33 | margin: 0 auto
34 | padding: 0 0 0 20px
35 |
36 | +size-xs
37 | padding: 0 20px
38 |
39 | .container-main
40 | padding-bottom: 0
41 | position: absolute !important
42 | top: 110px
43 | bottom: 0
44 | left: 0
45 | right: 0
46 |
47 | .row
48 | +clearfix
49 | position: relative
50 | margin: 0
51 |
52 | .col
53 | @extend %prevent-children-margin
54 | box-sizing: border-box
55 | float: left
56 | padding: 0 20px 0 0
57 |
58 | @for $width from 1 to 12
59 | .col-#{$width}
60 | @extend .col
61 | width: $width / 12 * 100%
62 |
63 | .offset-#{$width}
64 | margin-left: $width / 12 * 100%
--------------------------------------------------------------------------------
/src/default/assets/css/setup/_icons.scss:
--------------------------------------------------------------------------------
1 | // This is extremely piggy but will do till next version
2 | // Rebuilt with React
3 |
4 | .tsd-is-protected {
5 | > .tsd-kind-icon::before {
6 | content: '🛡️'
7 | }
8 | }
9 |
10 | .tsd-is-private {
11 | > .tsd-kind-icon::before {
12 | content: '🔒'
13 | }
14 | }
15 |
16 | .tsd-is-static {
17 | > .tsd-kind-icon::before {
18 | content: '💠'
19 | }
20 | }
21 |
22 | .tsd-is-inherited {
23 | > .tsd-kind-icon::before {
24 | content: '📩'
25 | }
26 | }
27 |
28 | @mixin icon($icon, $kind) {
29 | ul li .tsd-kind-#{$kind} {
30 | > .tsd-kind-icon::before {
31 | content: '∟ #{$icon} ' !important
32 | }
33 | }
34 |
35 | .tsd-kind-#{$kind} {
36 | > .tsd-kind-icon::before {
37 | content: '#{$icon} '
38 | }
39 | }
40 |
41 | // Protected combs
42 | .tsd-kind-#{$kind}.tsd-is-protected {
43 | > .tsd-kind-icon::after {
44 | content: '🛡️'
45 | }
46 | }
47 |
48 | .tsd-kind-#{$kind}.tsd-is-protected.tsd-is-static {
49 | > .tsd-kind-icon::after {
50 | content: '🛡️💠'
51 | }
52 | }
53 |
54 | .tsd-kind-#{$kind}.tsd-is-protected.tsd-is-static.tsd-is-inherited {
55 | > .tsd-kind-icon::after {
56 | content: '📩🛡️💠'
57 | }
58 | }
59 |
60 | .tsd-kind-#{$kind}.tsd-is-protected.tsd-is-inherited {
61 | > .tsd-kind-icon::after {
62 | content: '📩🛡️'
63 | }
64 | }
65 |
66 | // Private combs
67 | .tsd-kind-#{$kind}.tsd-is-private {
68 | > .tsd-kind-icon::after {
69 | content: '🔒'
70 | }
71 | }
72 |
73 | .tsd-kind-#{$kind}.tsd-is-private.tsd-is-static {
74 | > .tsd-kind-icon::after {
75 | content: '🔒💠'
76 | }
77 | }
78 |
79 | .tsd-kind-#{$kind}.tsd-is-private.tsd-is-static.tsd-is-inherited {
80 | > .tsd-kind-icon::after {
81 | content: '📩🔒💠'
82 | }
83 | }
84 |
85 | .tsd-kind-#{$kind}.tsd-is-private.tsd-is-inherited {
86 | > .tsd-kind-icon::after {
87 | content: '📩🔒'
88 | }
89 | }
90 |
91 | // Inherited combs
92 | .tsd-kind-#{$kind}.tsd-is-inherited {
93 | > .tsd-kind-icon::after {
94 | content: '📩'
95 | }
96 | }
97 |
98 | .tsd-kind-#{$kind}.tsd-is-static {
99 | > .tsd-kind-icon::after {
100 | content: '💠'
101 | }
102 | }
103 |
104 | .tsd-kind-#{$kind}.tsd-is-inherited.tsd-is-static {
105 | > .tsd-kind-icon::after {
106 | content: '📩💠'
107 | }
108 | }
109 | }
110 |
111 | @include icon('📌', 'property');
112 | @include icon('📌', 'enum-member');
113 | @include icon('ℹ️', 'index-signature');
114 | @include icon('🖊', 'type-alias');
115 | @include icon('💱', 'variable');
116 | @include icon('🗃️', 'class');
117 | @include icon('🕹', 'method');
118 | @include icon('🕹', 'function');
119 | @include icon('🔨', 'constructor');
120 | @include icon('📜', 'enum');
121 | @include icon('📐', 'interface');
122 | @include icon('{..}', 'object-literal');
123 | @include icon('📦', 'module');
124 | @include icon('🗝', 'accessor');
125 | @include icon('🗝', 'set-signature');
126 | @include icon('🗝', 'get-signature');
127 |
128 | .tsd-kind-icon {
129 | display: block;
130 | position: relative;
131 | padding-left: 20px;
132 | text-indent: -20px;
133 | width: max-content;
134 |
135 | &::before {
136 | font-weight: bold;
137 | display: contents;
138 | vertical-align: middle;
139 | margin: 0 10px 5px 20px;
140 | }
141 |
142 | &::after {
143 | padding-left: 5px;
144 | font-size: 0.7em;
145 | vertical-align: middle;
146 | }
147 | }
148 |
149 | .tsd-kind-icon::after:hover {
150 | text-decoration: none !important;
151 | }
--------------------------------------------------------------------------------
/src/default/assets/css/setup/_mixins.sass:
--------------------------------------------------------------------------------
1 | @mixin vendors($property, $value...)
2 | -webkit-#{$property}: $value
3 | -moz-#{$property}: $value
4 | -ms-#{$property}: $value
5 | -o-#{$property}: $value
6 | #{$property}: $value
7 |
8 | @mixin clearfix
9 | &:after
10 | visibility: hidden
11 | display: block
12 | content: ""
13 | clear: both
14 | height: 0
15 |
16 | @mixin retina
17 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi)
18 | &
19 | @content
20 |
21 | %prevent-children-margin
22 | > :first-child,
23 | > :first-child > :first-child,
24 | > :first-child > :first-child > :first-child
25 | margin-top: 0
26 |
27 | > :last-child,
28 | > :last-child > :last-child,
29 | > :last-child > :last-child > :last-child
30 | margin-bottom: 0
31 |
--------------------------------------------------------------------------------
/src/default/assets/css/setup/_typography.sass:
--------------------------------------------------------------------------------
1 | body
2 | background: $COLOR_BACKGROUND
3 | font-family: $FONT_FAMILY
4 | font-size: $FONT_SIZE
5 | color: $COLOR_TEXT
6 | font-weight: 300
7 |
8 | a
9 | color: $COLOR_LINK
10 | text-decoration: none
11 |
12 | &:hover
13 | text-decoration: underline
14 |
15 | code, pre
16 | font-family: $FONT_FAMILY_MONO
17 | margin: 0
18 | font-size: $FONT_SIZE
19 | color: $COLOR_CODE
20 | background-color: $COLOR_CODE_BACKGROUND
21 | padding-bottom: 0.2em
22 | padding-top: 0.2em
23 | padding-left: 0.4em
24 | padding-right: 0.4em
25 | border-radius: 4px
26 |
27 | pre
28 | padding: 0.4em
29 |
30 | code
31 | padding: 0
32 | font-size: 100%
33 | background-color: transparent
34 |
35 | h2
36 | font-weight: 300
37 |
--------------------------------------------------------------------------------
/src/default/assets/css/vendors/_highlight.js.sass:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | *Visual Studio-like style based on original C# coloring by Jason Diamond
4 |
5 | .hljs
6 | display: inline-block
7 | padding: 0.5em
8 | background: white
9 | color: black
10 |
11 | .hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket
12 | color: #808080
13 |
14 | .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
15 | color: $THEME_COLOR
16 |
17 | .xml .hljs-tag
18 | color: $THEME_COLOR
19 | .hljs-value
20 | color: $THEME_COLOR
21 |
22 | .hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value
23 | color: #d88
24 |
25 | .ruby .hljs-symbol
26 | color: #d88
27 | .hljs-string
28 | color: #d88
29 |
30 | .hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute
31 | color: #d88
32 |
33 | .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
34 | color: #2b91af
35 |
36 | .hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag
37 | color: #808080
38 |
39 | .vhdl
40 | .hljs-typename
41 | font-weight: bold
42 | .hljs-string
43 | color: #666666
44 | .hljs-literal
45 | color: #a31515
46 | .hljs-attribute
47 | color: #00b0e8
48 |
49 | .xml .hljs-attribute
50 | color: $THEME_COLOR
51 |
--------------------------------------------------------------------------------
/src/default/assets/css/vendors/_normalize.sass:
--------------------------------------------------------------------------------
1 | /**! normalize.css v1.1.3 | MIT License | git.io/normalize
2 | **/
3 | /** ==========================================================================
4 | * HTML5 display definitions
5 | * ==========================================================================
6 | **/
7 | /**
8 | * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
9 | **/
10 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary
11 | display: block
12 |
13 | /**
14 | * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
15 | **/
16 | audio, canvas, video
17 | display: inline-block
18 | display: inline
19 | zoom: 1
20 |
21 | /**
22 | * Prevent modern browsers from displaying `audio` without controls.
23 | * Remove excess height in iOS 5 devices.
24 | **/
25 | audio:not([controls])
26 | display: none
27 | height: 0
28 |
29 | /**
30 | * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
31 | * Known issue: no IE 6 support.
32 | **/
33 | [hidden]
34 | display: none
35 |
36 | /** ==========================================================================
37 | * Base
38 | * ==========================================================================
39 | **/
40 | /**
41 | * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
42 | * `em` units.
43 | * 2. Prevent iOS text size adjust after orientation change, without disabling
44 | * user zoom.
45 | **/
46 | html
47 | font-size: 100%
48 | /** 1 **/
49 | -ms-text-size-adjust: 100%
50 | /** 2 **/
51 | -webkit-text-size-adjust: 100%
52 | /** 2 **/
53 | font-family: sans-serif
54 |
55 | /**
56 | * Address `font-family` inconsistency between `textarea` and other form
57 | * elements.
58 | **/
59 |
60 | button, input, select, textarea
61 | font-family: sans-serif
62 |
63 | /**
64 | * Address margins handled incorrectly in IE 6/7.
65 | **/
66 | body
67 | margin: 0
68 |
69 | /** ==========================================================================
70 | * Links
71 | * ==========================================================================
72 |
73 | /**
74 | * Address `outline` inconsistency between Chrome and other browsers.
75 | **/
76 | a
77 | &:focus
78 | outline: thin dotted
79 | &:active, &:hover
80 | outline: 0
81 |
82 | /**
83 | * Improve readability when focused and also mouse hovered in all browsers.
84 | **/
85 | /** ==========================================================================
86 | * Typography
87 | * ==========================================================================
88 | **/
89 | /**
90 | * Address font sizes and margins set differently in IE 6/7.
91 | * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
92 | * and Chrome.
93 | **/
94 | h1
95 | font-size: 2em
96 | margin-top: 1em
97 |
98 | h2
99 | font-size: 1.5em
100 | margin-top: 1em
101 |
102 | h3
103 | font-size: 1.25em
104 | margin-top: 1em
105 |
106 | h4
107 | font-size: 1em
108 | margin-top: 1em
109 |
110 | h5
111 | font-size: 0.75em
112 | margin-top: 1em
113 |
114 | h6
115 | font-size: 0.5em
116 | margin-top: 1em
117 |
118 | /**
119 | * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
120 | **/
121 | abbr[title]
122 | border-bottom: 1px dotted
123 |
124 | /**
125 | * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
126 | **/
127 | b, strong
128 | font-weight: bold
129 |
130 | blockquote
131 | margin: 1em 40px
132 |
133 | /**
134 | * Address styling not present in Safari 5 and Chrome.
135 | **/
136 | dfn
137 | font-style: italic
138 |
139 | /**
140 | * Address differences between Firefox and other browsers.
141 | * Known issue: no IE 6/7 normalization.
142 | **/
143 | hr
144 | -moz-box-sizing: content-box
145 | box-sizing: content-box
146 | height: 0
147 |
148 | /**
149 | * Address styling not present in IE 6/7/8/9.
150 | **/
151 | mark
152 | background: #ff0
153 | color: #000
154 |
155 | /**
156 | * Address margins set differently in IE 6/7.
157 | **/
158 | p, pre
159 | margin: 1em 0
160 |
161 | /**
162 | * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
163 | **/
164 | code, kbd, pre, samp
165 | font-family: monospace, serif
166 | _font-family: 'courier new', monospace
167 | font-size: 1em
168 |
169 | /**
170 | * Improve readability of pre-formatted text in all browsers.
171 | **/
172 | pre
173 | white-space: pre
174 | white-space: pre-wrap
175 | word-wrap: break-word
176 |
177 | /**
178 | * Address CSS quotes not supported in IE 6/7.
179 | **/
180 | q
181 | quotes: none
182 | &:before, &:after
183 | content: ''
184 | content: none
185 |
186 | /**
187 | * Address `quotes` property not supported in Safari 4.
188 | **/
189 | /**
190 | * Address inconsistent and variable font size in all browsers.
191 | **/
192 | small
193 | font-size: 80%
194 |
195 | /**
196 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
197 | **/
198 | sub
199 | font-size: 75%
200 | line-height: 0
201 | position: relative
202 | vertical-align: baseline
203 |
204 | sup
205 | font-size: 75%
206 | line-height: 0
207 | position: relative
208 | vertical-align: baseline
209 | top: -0.5em
210 |
211 | sub
212 | bottom: -0.25em
213 |
214 | /** ==========================================================================
215 | * Lists
216 | * ==========================================================================
217 |
218 | /**
219 | * Address margins set differently in IE 6/7.
220 | **/
221 | dl, menu, ol, ul
222 | margin: 1em 0
223 |
224 | dd
225 | margin: 0 0 0 40px
226 |
227 | /**
228 | * Address paddings set differently in IE 6/7.
229 | **/
230 | menu, ol, ul
231 | padding: 0 0 0 40px
232 |
233 | /**
234 | * Correct list images handled incorrectly in IE 7.
235 | **/
236 | nav
237 | ul, ol
238 | list-style: none
239 | list-style-image: none
240 |
241 | /** ==========================================================================
242 | * Embedded content
243 | * ==========================================================================
244 | **/
245 | /**
246 | * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
247 | * 2. Improve image quality when scaled in IE 7.
248 | **/
249 | img
250 | border: 0
251 | /** 1 **/
252 | -ms-interpolation-mode: bicubic
253 | /** 2 **/
254 |
255 | /**
256 | * Correct overflow displayed oddly in IE 9.
257 | **/
258 |
259 | svg:not(:root)
260 | overflow: hidden
261 |
262 | /** ==========================================================================
263 | * Figures
264 | * ==========================================================================
265 | **/
266 | /**
267 | * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
268 | **/
269 | figure, form
270 | margin: 0
271 |
272 | /** ==========================================================================
273 | * Forms
274 | * ==========================================================================
275 | **/
276 | /**
277 | * Correct margin displayed oddly in IE 6/7.
278 | **/
279 | /**
280 | * Define consistent border, margin, and padding.
281 | **/
282 | fieldset
283 | border: 1px solid #c0c0c0
284 | margin: 0 2px
285 | padding: 0.35em 0.625em 0.75em
286 |
287 | /**
288 | * 1. Correct color not being inherited in IE 6/7/8/9.
289 | * 2. Correct text not wrapping in Firefox 3.
290 | * 3. Correct alignment displayed oddly in IE 6/7.
291 | **/
292 |
293 | legend
294 | border: 0
295 | /** 1 **/
296 | padding: 0
297 | white-space: normal
298 | /** 2 **/
299 | margin-left: -7px
300 | /** 3 **/
301 |
302 | /**
303 | * 1. Correct font size not being inherited in all browsers.
304 | * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
305 | * and Chrome.
306 | * 3. Improve appearance and consistency in all browsers.
307 |
308 | button, input, select, textarea
309 | font-size: 100%
310 | /** 1 **/
311 | margin: 0
312 | /** 2 **/
313 | vertical-align: baseline
314 | /** 3 **/
315 | vertical-align: middle
316 | /** 3 **/
317 |
318 | /**
319 | * Address Firefox 3+ setting `line-height` on `input` using `!important` in
320 | * the UA stylesheet.
321 | **/
322 | button, input
323 | line-height: normal
324 |
325 | /**
326 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
327 | * All other form control elements do not inherit `text-transform` values.
328 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
329 | * Correct `select` style inheritance in Firefox 4+ and Opera.
330 | **/
331 | button, select
332 | text-transform: none
333 |
334 | /**
335 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
336 | * and `video` controls.
337 | * 2. Correct inability to style clickable `input` types in iOS.
338 | * 3. Improve usability and consistency of cursor style between image-type
339 | * `input` and others.
340 | * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
341 | * Known issue: inner spacing remains in IE 6.
342 | **/
343 | button, html input[type="button"]
344 | -webkit-appearance: button
345 | /** 2 **/
346 | cursor: pointer
347 | /** 3 **/
348 | overflow: visible
349 | /** 4 **/
350 |
351 | input
352 | &[type="reset"], &[type="submit"]
353 | -webkit-appearance: button
354 | /** 2 **/
355 | cursor: pointer
356 | /** 3 **/
357 | overflow: visible
358 | /** 4 **/
359 |
360 | /**
361 | * Re-set default cursor for disabled elements.
362 | **/
363 | button[disabled], html input[disabled]
364 | cursor: default
365 |
366 | /**
367 | * 1. Address box sizing set to content-box in IE 8/9.
368 | * 2. Remove excess padding in IE 8/9.
369 | * 3. Remove excess padding in IE 7.
370 | * Known issue: excess padding remains in IE 6.
371 | **/
372 | input
373 | &[type="checkbox"], &[type="radio"]
374 | box-sizing: border-box
375 | /** 1 **/
376 | padding: 0
377 | /** 2 **/
378 | height: 13px
379 | /** 3 **/
380 | width: 13px
381 | /** 3 **/
382 | &[type="search"]
383 | -webkit-appearance: textfield
384 | /** 1 **/
385 | -moz-box-sizing: content-box
386 | -webkit-box-sizing: content-box
387 | /** 2 **/
388 | box-sizing: content-box
389 | &::-webkit-search-cancel-button, &::-webkit-search-decoration
390 | -webkit-appearance: none
391 |
392 | /**
393 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
394 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
395 | * (include `-moz` to future-proof).
396 | **/
397 | /**
398 | * Remove inner padding and search cancel button in Safari 5 and Chrome
399 | * on OS X.
400 | **/
401 | /**
402 | * Remove inner padding and border in Firefox 3+.
403 | **/
404 | button::-moz-focus-inner, input::-moz-focus-inner
405 | border: 0
406 | padding: 0
407 |
408 | /**
409 | * 1. Remove default vertical scrollbar in IE 6/7/8/9.
410 | * 2. Improve readability and alignment in all browsers.
411 | **/
412 | textarea
413 | overflow: auto
414 | /** 1 **/
415 | vertical-align: top
416 | /** 2 **/
417 |
418 | /** ==========================================================================
419 | * Tables
420 | * ==========================================================================
421 | **/
422 | /**
423 | * Remove most spacing between table cells.
424 | **/
425 | table
426 | border-collapse: collapse
427 | border-spacing: 0
428 |
--------------------------------------------------------------------------------
/src/default/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/icons.png
--------------------------------------------------------------------------------
/src/default/assets/images/icons.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/icons.psd
--------------------------------------------------------------------------------
/src/default/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/src/default/assets/images/icons@2x.png0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/icons@2x.png0
--------------------------------------------------------------------------------
/src/default/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/widgets.png
--------------------------------------------------------------------------------
/src/default/assets/images/widgets.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/widgets.psd
--------------------------------------------------------------------------------
/src/default/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/default/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/src/default/assets/js/lib/lunr.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.3
3 | * Copyright (C) 2014 Oliver Nightingale
4 | * MIT Licensed
5 | * @license
6 | */
7 | !function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.3",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return t.toLowerCase()});for(var e=t.toString().replace(/^\s+/,""),n=e.length-1;n>=0;n--)if(/\S/.test(e.charAt(n))){e=e.substring(0,n+1);break}return e.split(/\s+/).map(function(t){return t.toLowerCase()})},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e)+1;this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;for(var o=i,r=i.next;void 0!=r;){if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(t){~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t)},this),this.length=this.elements.length},t.SortedSet.prototype.toArray=function(){return this.elements.slice()},t.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},t.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},t.SortedSet.prototype.indexOf=function(t,e,n){var e=e||0,n=n||this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return 1>=i?r===t?o:-1:t>r?this.indexOf(t,o,n):r>t?this.indexOf(t,e,o):r===t?o:void 0},t.SortedSet.prototype.locationFor=function(t,e,n){var e=e||0,n=n||this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];if(1>=i){if(r>t)return o;if(t>r)return o+1}return t>r?this.locationFor(t,o,n):r>t?this.locationFor(t,e,o):void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.tokenStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.store[t]=e,this.length=Object.keys(this.store).length},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i;return function(n){var r,u,c,p,f,d,v;if(n.length<3)return n;if(c=n.substr(0,1),"y"==c&&(n=c.toUpperCase()+n.substr(1)),p=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p.test(n)?n=n.replace(p,"$1$2"):f.test(n)&&(n=n.replace(f,"$1$2")),p=/^(.+?)eed$/,f=/^(.+?)(ed|ing)$/,p.test(n)){var m=p.exec(n);p=new RegExp(s),p.test(m[1])&&(p=/.$/,n=n.replace(p,""))}else if(f.test(n)){var m=f.exec(n);r=m[1],f=new RegExp(l),f.test(r)&&(n=r,f=/(at|bl|iz)$/,d=new RegExp("([^aeiouylsz])\\1$"),v=new RegExp("^"+o+i+"[^aeiouwxy]$"),f.test(n)?n+="e":d.test(n)?(p=/.$/,n=n.replace(p,"")):v.test(n)&&(n+="e"))}if(p=/^(.+?[^aeiou])y$/,p.test(n)){var m=p.exec(n);r=m[1],n=r+"i"}if(p=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,p.test(n)){var m=p.exec(n);r=m[1],u=m[2],p=new RegExp(s),p.test(r)&&(n=r+t[u])}if(p=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,p.test(n)){var m=p.exec(n);r=m[1],u=m[2],p=new RegExp(s),p.test(r)&&(n=r+e[u])}if(p=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,f=/^(.+?)(s|t)(ion)$/,p.test(n)){var m=p.exec(n);r=m[1],p=new RegExp(h),p.test(r)&&(n=r)}else if(f.test(n)){var m=f.exec(n);r=m[1]+m[2],f=new RegExp(h),f.test(r)&&(n=r)}if(p=/^(.+?)e$/,p.test(n)){var m=p.exec(n);r=m[1],p=new RegExp(h),f=new RegExp(a),d=new RegExp("^"+o+i+"[^aeiouwxy]$"),(p.test(r)||f.test(r)&&!d.test(r))&&(n=r)}return p=/ll$/,f=new RegExp(h),p.test(n)&&f.test(n)&&(p=/.$/,n=n.replace(p,"")),"y"==c&&(n=c.toLowerCase()+n.substr(1)),n}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return-1===t.stopWordFilter.stopWords.indexOf(e)?e:void 0},t.stopWordFilter.stopWords=new t.SortedSet,t.stopWordFilter.stopWords.length=119,t.stopWordFilter.stopWords.elements=["","a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"],t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;nu;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this);
6 | //# sourceMappingURL=underscore-min.map
--------------------------------------------------------------------------------
/src/default/assets/js/src/lib/backbone/backbone.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for Backbone 1.0.0
2 | // Project: http://backbonejs.org/
3 | // Definitions by: Boris Yankov , Natan Vivo
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 | ///
8 |
9 | declare module Backbone {
10 |
11 | interface AddOptions extends Silenceable {
12 | at?: number;
13 | }
14 |
15 | interface HistoryOptions extends Silenceable {
16 | pushState?: boolean;
17 | root?: string;
18 | }
19 |
20 | interface NavigateOptions {
21 | trigger?: boolean;
22 | }
23 |
24 | interface RouterOptions {
25 | routes: any;
26 | }
27 |
28 | interface Silenceable {
29 | silent?: boolean;
30 | }
31 |
32 | interface Validable {
33 | validate?: boolean;
34 | }
35 |
36 | interface Waitable {
37 | wait?: boolean;
38 | }
39 |
40 | interface Parseable {
41 | parse?: any;
42 | }
43 |
44 | interface PersistenceOptions {
45 | url?: string;
46 | beforeSend?: (jqxhr: JQueryXHR) => void;
47 | success?: (modelOrCollection?: any, response?: any, options?: any) => void;
48 | error?: (modelOrCollection?: any, jqxhr?: JQueryXHR, options?: any) => void;
49 | }
50 |
51 | interface ModelSetOptions extends Silenceable, Validable {
52 | }
53 |
54 | interface ModelFetchOptions extends PersistenceOptions, ModelSetOptions, Parseable {
55 | }
56 |
57 | interface ModelSaveOptions extends Silenceable, Waitable, Validable, Parseable, PersistenceOptions {
58 | patch?: boolean;
59 | }
60 |
61 | interface ModelDestroyOptions extends Waitable, PersistenceOptions {
62 | }
63 |
64 | interface CollectionFetchOptions extends PersistenceOptions, Parseable {
65 | reset?: boolean;
66 | }
67 |
68 | class Events {
69 | on(eventName: string, callback?: Function, context?: any): any;
70 | off(eventName?: string, callback?: Function, context?: any): any;
71 | trigger(eventName: string, ...args: any[]): any;
72 | bind(eventName: string, callback: Function, context?: any): any;
73 | unbind(eventName?: string, callback?: Function, context?: any): any;
74 |
75 | once(events: string, callback: Function, context?: any): any;
76 | listenTo(object: any, events: string, callback: Function): any;
77 | listenToOnce(object: any, events: string, callback: Function): any;
78 | stopListening(object?: any, events?: string, callback?: Function): any;
79 | }
80 |
81 | class ModelBase extends Events {
82 | url: any;
83 | parse(response: any, options?: any): any;
84 | toJSON(options?: any): any;
85 | sync(...arg: any[]): JQueryXHR;
86 | }
87 |
88 | class Model extends ModelBase {
89 |
90 | /**
91 | * Do not use, prefer TypeScript's extend functionality.
92 | **/
93 | private static extend(properties: any, classProperties?: any): any;
94 |
95 | attributes: any;
96 | changed: any[];
97 | cid: string;
98 | collection: Collection;
99 |
100 | /**
101 | * Default attributes for the model. It can be an object hash or a method returning an object hash.
102 | * For assigning an object hash, do it like this: this.defaults = { attribute: value, ... };
103 | * That works only if you set it in the constructor or the initialize method.
104 | **/
105 | defaults(): any;
106 | id: any;
107 | idAttribute: string;
108 | validationError: any;
109 | urlRoot: any;
110 |
111 | constructor(attributes?: any, options?: any);
112 | initialize(attributes?: any): void;
113 |
114 | fetch(options?: ModelFetchOptions): JQueryXHR;
115 |
116 | /**
117 | * For strongly-typed access to attributes, use the `get` method only privately in public getter properties.
118 | * @example
119 | * get name(): string {
120 | * return super.get("name");
121 | * }
122 | **/
123 | /*private*/ get(attributeName: string): any;
124 |
125 | /**
126 | * For strongly-typed assignment of attributes, use the `set` method only privately in public setter properties.
127 | * @example
128 | * set name(value: string) {
129 | * super.set("name", value);
130 | * }
131 | **/
132 | /*private*/ set(attributeName: string, value: any, options?: ModelSetOptions): Model;
133 | set(obj: any, options?: ModelSetOptions): Model;
134 |
135 | change(): any;
136 | changedAttributes(attributes?: any): any[];
137 | clear(options?: Silenceable): any;
138 | clone(): Model;
139 | destroy(options?: ModelDestroyOptions): any;
140 | escape(attribute: string): string;
141 | has(attribute: string): boolean;
142 | hasChanged(attribute?: string): boolean;
143 | isNew(): boolean;
144 | isValid(options?:any): boolean;
145 | previous(attribute: string): any;
146 | previousAttributes(): any[];
147 | save(attributes?: any, options?: ModelSaveOptions): any;
148 | unset(attribute: string, options?: Silenceable): Model;
149 | validate(attributes: any, options?: any): any;
150 |
151 | private _validate(attrs: any, options: any): boolean;
152 |
153 | // mixins from underscore
154 |
155 | keys(): string[];
156 | values(): any[];
157 | pairs(): any[];
158 | invert(): any;
159 | pick(keys: string[]): any;
160 | pick(...keys: string[]): any;
161 | omit(keys: string[]): any;
162 | omit(...keys: string[]): any;
163 | }
164 |
165 | class Collection extends ModelBase {
166 |
167 | /**
168 | * Do not use, prefer TypeScript's extend functionality.
169 | **/
170 | private static extend(properties: any, classProperties?: any): any;
171 |
172 | // TODO: this really has to be typeof TModel
173 | //model: typeof TModel;
174 | model: { new(): TModel; }; // workaround
175 | models: TModel[];
176 | length: number;
177 |
178 | constructor(models?: TModel[], options?: any);
179 |
180 | fetch(options?: CollectionFetchOptions): JQueryXHR;
181 |
182 | comparator(element: TModel): number;
183 | comparator(compare: TModel, to?: TModel): number;
184 |
185 | add(model: TModel, options?: AddOptions): Collection;
186 | add(models: TModel[], options?: AddOptions): Collection;
187 | at(index: number): TModel;
188 | /**
189 | * Get a model from a collection, specified by an id, a cid, or by passing in a model.
190 | **/
191 | get(id: number): TModel;
192 | get(id: string): TModel;
193 | get(id: Model): TModel;
194 | create(attributes: any, options?: ModelSaveOptions): TModel;
195 | pluck(attribute: string): any[];
196 | push(model: TModel, options?: AddOptions): TModel;
197 | pop(options?: Silenceable): TModel;
198 | remove(model: TModel, options?: Silenceable): TModel;
199 | remove(models: TModel[], options?: Silenceable): TModel[];
200 | reset(models?: TModel[], options?: Silenceable): TModel[];
201 | set(models?: TModel[], options?: Silenceable): TModel[];
202 | shift(options?: Silenceable): TModel;
203 | sort(options?: Silenceable): Collection;
204 | unshift(model: TModel, options?: AddOptions): TModel;
205 | where(properies: any): TModel[];
206 | findWhere(properties: any): TModel;
207 |
208 | private _prepareModel(attrs?: any, options?: any): any;
209 | private _removeReference(model: TModel): void;
210 | private _onModelEvent(event: string, model: TModel, collection: Collection, options: any): void;
211 |
212 | // mixins from underscore
213 |
214 | all(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
215 | any(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
216 | collect(iterator: (element: TModel, index: number, context?: any) => any[], context?: any): any[];
217 | chain(): any;
218 | compact(): TModel[];
219 | contains(value: any): boolean;
220 | countBy(iterator: (element: TModel, index: number) => any): _.Dictionary;
221 | countBy(attribute: string): _.Dictionary;
222 | detect(iterator: (item: any) => boolean, context?: any): any; // ???
223 | difference(...model: TModel[]): TModel[];
224 | drop(): TModel;
225 | drop(n: number): TModel[];
226 | each(iterator: (element: TModel, index: number, list?: any) => void, context?: any): any;
227 | every(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
228 | filter(iterator: (element: TModel, index: number) => boolean, context?: any): TModel[];
229 | find(iterator: (element: TModel, index: number) => boolean, context?: any): TModel;
230 | first(): TModel;
231 | first(n: number): TModel[];
232 | flatten(shallow?: boolean): TModel[];
233 | foldl(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any;
234 | forEach(iterator: (element: TModel, index: number, list?: any) => void, context?: any): any;
235 | groupBy(iterator: (element: TModel, index: number) => string, context?: any): _.Dictionary;
236 | groupBy(attribute: string, context?: any): _.Dictionary;
237 | include(value: any): boolean;
238 | indexOf(element: TModel, isSorted?: boolean): number;
239 | initial(): TModel;
240 | initial(n: number): TModel[];
241 | inject(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any;
242 | intersection(...model: TModel[]): TModel[];
243 | isEmpty(object: any): boolean;
244 | invoke(methodName: string, args?: any[]): any;
245 | last(): TModel;
246 | last(n: number): TModel[];
247 | lastIndexOf(element: TModel, fromIndex?: number): number;
248 | map(iterator: (element: TModel, index: number, context?: any) => any[], context?: any): any[];
249 | max(iterator?: (element: TModel, index: number) => any, context?: any): TModel;
250 | min(iterator?: (element: TModel, index: number) => any, context?: any): TModel;
251 | object(...values: any[]): any[];
252 | reduce(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any;
253 | select(iterator: any, context?: any): any[];
254 | size(): number;
255 | shuffle(): any[];
256 | some(iterator: (element: TModel, index: number) => boolean, context?: any): boolean;
257 | sortBy(iterator: (element: TModel, index: number) => number, context?: any): TModel[];
258 | sortBy(attribute: string, context?: any): TModel[];
259 | sortedIndex(element: TModel, iterator?: (element: TModel, index: number) => number): number;
260 | range(stop: number, step?: number): any;
261 | range(start: number, stop: number, step?: number): any;
262 | reduceRight(iterator: (memo: any, element: TModel, index: number) => any, initialMemo: any, context?: any): any[];
263 | reject(iterator: (element: TModel, index: number) => boolean, context?: any): TModel[];
264 | rest(): TModel;
265 | rest(n: number): TModel[];
266 | tail(): TModel;
267 | tail(n: number): TModel[];
268 | toArray(): any[];
269 | union(...model: TModel[]): TModel[];
270 | uniq(isSorted?: boolean, iterator?: (element: TModel, index: number) => boolean): TModel[];
271 | without(...values: any[]): TModel[];
272 | zip(...model: TModel[]): TModel[];
273 | }
274 |
275 | class Router extends Events {
276 |
277 | /**
278 | * Do not use, prefer TypeScript's extend functionality.
279 | **/
280 | private static extend(properties: any, classProperties?: any): any;
281 |
282 | /**
283 | * Routes hash or a method returning the routes hash that maps URLs with parameters to methods on your Router.
284 | * For assigning routes as object hash, do it like this: this.routes = { "route": callback, ... };
285 | * That works only if you set it in the constructor or the initialize method.
286 | **/
287 | routes(): any;
288 |
289 | constructor(options?: RouterOptions);
290 | initialize(options?: RouterOptions): void;
291 | route(route: string, name: string, callback?: Function): Router;
292 | navigate(fragment: string, options?: NavigateOptions): Router;
293 | navigate(fragment: string, trigger?: boolean): Router;
294 |
295 | private _bindRoutes(): void;
296 | private _routeToRegExp(route: string): RegExp;
297 | private _extractParameters(route: RegExp, fragment: string): string[];
298 | }
299 |
300 | var history: History;
301 |
302 | class History extends Events {
303 |
304 | handlers: any[];
305 | interval: number;
306 |
307 | start(options?: HistoryOptions): boolean;
308 |
309 | getHash(window?: Window): string;
310 | getFragment(fragment?: string, forcePushState?: boolean): string;
311 | stop(): void;
312 | route(route: string, callback: Function): number;
313 | checkUrl(e?: any): void;
314 | loadUrl(fragmentOverride: string): boolean;
315 | navigate(fragment: string, options?: any): boolean;
316 | started: boolean;
317 | options: any;
318 |
319 | private _updateHash(location: Location, fragment: string, replace: boolean): void;
320 | }
321 |
322 | interface ViewOptions {
323 | model?: TModel;
324 | collection?: Backbone.Collection;
325 | el?: any;
326 | id?: string;
327 | className?: string;
328 | tagName?: string;
329 | attributes?: any[];
330 | }
331 |
332 | class View extends Events {
333 |
334 | /**
335 | * Do not use, prefer TypeScript's extend functionality.
336 | **/
337 | private static extend(properties: any, classProperties?: any): any;
338 |
339 | constructor(options?: ViewOptions);
340 |
341 | /**
342 | * Events hash or a method returning the events hash that maps events/selectors to methods on your View.
343 | * For assigning events as object hash, do it like this: this.events = { "event:selector": callback, ... };
344 | * That works only if you set it in the constructor or the initialize method.
345 | **/
346 | events(): any;
347 |
348 | $(selector: string): JQuery;
349 | model: TModel;
350 | collection: Collection;
351 | //template: (json, options?) => string;
352 | make(tagName: string, attrs?: any, opts?: any): View;
353 | setElement(element: HTMLElement, delegate?: boolean): View;
354 | setElement(element: JQuery, delegate?: boolean): View;
355 | id: string;
356 | cid: string;
357 | className: string;
358 | tagName: string;
359 |
360 | el: any;
361 | $el: JQuery;
362 | setElement(element: any): View;
363 | attributes: any;
364 | $(selector: any): JQuery;
365 | render(): View;
366 | remove(): View;
367 | make(tagName: any, attributes?: any, content?: any): any;
368 | delegateEvents(events?: any): any;
369 | undelegateEvents(): any;
370 |
371 | _ensureElement(): void;
372 | }
373 |
374 | // SYNC
375 | function sync(method: string, model: Model, options?: JQueryAjaxSettings): any;
376 | function ajax(options?: JQueryAjaxSettings): JQueryXHR;
377 | var emulateHTTP: boolean;
378 | var emulateJSON: boolean;
379 |
380 | // Utility
381 | function noConflict(): typeof Backbone;
382 | var $: JQueryStatic;
383 | }
384 |
385 | declare module "backbone" {
386 | export = Backbone;
387 | }
388 |
--------------------------------------------------------------------------------
/src/default/assets/js/src/lib/tsd.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
--------------------------------------------------------------------------------
/src/default/assets/js/src/lib/tsd.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "v4",
3 | "repo": "borisyankov/DefinitelyTyped",
4 | "ref": "master",
5 | "path": "./",
6 | "bundle": "./tsd.d.ts",
7 | "installed": {
8 | "jquery/jquery.d.ts": {
9 | "commit": "d4b55bafc0c9c4a2338cb427a4eeaf6023f12a24"
10 | },
11 | "lunr/lunr.d.ts": {
12 | "commit": "f64ae50d573dae7500236a3deaee402f3376a871"
13 | },
14 | "backbone/backbone.d.ts": {
15 | "commit": "d4b55bafc0c9c4a2338cb427a4eeaf6023f12a24"
16 | },
17 | "underscore/underscore.d.ts": {
18 | "commit": "d4b55bafc0c9c4a2338cb427a4eeaf6023f12a24"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/Application.ts:
--------------------------------------------------------------------------------
1 | declare module typedoc
2 | {
3 | class Events extends Backbone.Events { }
4 | }
5 |
6 | module typedoc
7 | {
8 | export var $html = $('html');
9 |
10 |
11 | /**
12 | * Service definition.
13 | */
14 | export interface IService
15 | {
16 | constructor:any;
17 | name:string;
18 | instance:any;
19 | priority:number;
20 | }
21 |
22 |
23 | /**
24 | * Component definition.
25 | */
26 | export interface IComponent
27 | {
28 | constructor:any;
29 | selector:string;
30 | priority:number;
31 | namespace:string;
32 | }
33 |
34 |
35 | /**
36 | * List of all known services.
37 | */
38 | var services:IService[] = [];
39 |
40 | /**
41 | * List of all known components.
42 | */
43 | var components:IComponent[] = [];
44 |
45 | /**
46 | * jQuery instance of the document.
47 | */
48 | export var $document = $(document);
49 |
50 | /**
51 | * jQuery instance of the window.
52 | */
53 | export var $window = $(window);
54 |
55 | /**
56 | * jQuery instance of the window.
57 | */
58 | export var $body = $('body');
59 |
60 |
61 | /**
62 | * Register a new component.
63 | */
64 | export function registerService(constructor:any, name:string, priority:number = 0) {
65 | services.push({
66 | constructor: constructor,
67 | name: name,
68 | priority: priority,
69 | instance: null
70 | });
71 |
72 | services.sort((a:IService, b:IService) => a.priority - b.priority);
73 | }
74 |
75 |
76 | /**
77 | * Register a new component.
78 | */
79 | export function registerComponent(constructor:any, selector:string, priority:number = 0, namespace:string = '*')
80 | {
81 | components.push({
82 | selector: selector,
83 | constructor: constructor,
84 | priority: priority,
85 | namespace: namespace
86 | });
87 |
88 | components.sort((a:IComponent, b:IComponent) => a.priority - b.priority);
89 | }
90 |
91 |
92 | /**
93 | * Copy Backbone.Events to TypeScript class.
94 | */
95 | if (typeof Backbone != 'undefined') {
96 | typedoc['Events'] = (function() {
97 | var res = function() {};
98 | _.extend(res.prototype, Backbone.Events);
99 | return res;
100 | })();
101 | }
102 |
103 |
104 | /**
105 | * TypeDoc application class.
106 | */
107 | export class Application extends Events
108 | {
109 | /**
110 | * Create a new Application instance.
111 | */
112 | constructor() {
113 | super();
114 |
115 | this.createServices();
116 | this.createComponents($body);
117 | }
118 |
119 |
120 | /**
121 | * Create all services.
122 | */
123 | private createServices() {
124 | _(services).forEach((c) => {
125 | c.instance = new c.constructor();
126 | typedoc[c.name] = c.instance;
127 | });
128 | }
129 |
130 |
131 | /**
132 | * Create all components beneath the given jQuery element.
133 | */
134 | public createComponents($context:JQuery, namespace:string = 'default'):Backbone.View[] {
135 | var result = [];
136 | _(components).forEach((c) => {
137 | if (c.namespace != namespace && c.namespace != '*') {
138 | return;
139 | }
140 |
141 | $context.find(c.selector).each((m:number, el:HTMLElement) => {
142 | var $el = $(el), instance;
143 | if (instance = $el.data('component')) {
144 | if (_(result).indexOf(instance) == -1) {
145 | result.push(instance);
146 | }
147 | } else {
148 | instance = new c.constructor({el:el});
149 | $el.data('component', instance);
150 | result.push(instance);
151 | }
152 | });
153 | });
154 |
155 | return result;
156 | }
157 | }
158 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/components/Filter.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | class FilterItem
4 | {
5 | protected key:string;
6 |
7 | protected value:T;
8 |
9 | protected defaultValue:T;
10 |
11 |
12 | constructor(key:string, value:T) {
13 | this.key = key;
14 | this.value = value;
15 | this.defaultValue = value;
16 |
17 | this.initialize();
18 |
19 | if (window.localStorage[this.key]) {
20 | this.setValue(this.fromLocalStorage(window.localStorage[this.key]));
21 | }
22 | }
23 |
24 |
25 | protected initialize() {}
26 |
27 |
28 | protected handleValueChange(oldValue:T, newValue:T) {}
29 |
30 |
31 | protected fromLocalStorage(value:string):T {
32 | return value;
33 | }
34 |
35 |
36 | protected toLocalStorage(value:T):string {
37 | return value;
38 | }
39 |
40 |
41 | protected setValue(value:T) {
42 | if (this.value == value) return;
43 |
44 | var oldValue = this.value;
45 | this.value = value;
46 | window.localStorage[this.key] = this.toLocalStorage(value);
47 |
48 | this.handleValueChange(oldValue, value);
49 | }
50 | }
51 |
52 |
53 | class FilterItemCheckbox extends FilterItem
54 | {
55 | private $checkbox:JQuery;
56 |
57 |
58 | protected initialize() {
59 | this.$checkbox = $('#tsd-filter-' + this.key);
60 | this.$checkbox.on('change', () => {
61 | this.setValue(this.$checkbox.prop('checked'));
62 | });
63 | }
64 |
65 |
66 | protected handleValueChange(oldValue:boolean, newValue:boolean) {
67 | this.$checkbox.prop('checked', this.value);
68 | $html.toggleClass('toggle-' + this.key, this.value != this.defaultValue);
69 | }
70 |
71 |
72 | protected fromLocalStorage(value:string):boolean {
73 | return value == 'true';
74 | }
75 |
76 |
77 | protected toLocalStorage(value:boolean):string {
78 | return value ? 'true' : 'false';
79 | }
80 | }
81 |
82 |
83 | class FilterItemSelect extends FilterItem
84 | {
85 | private $select:JQuery;
86 |
87 |
88 | protected initialize() {
89 | $html.addClass('toggle-' + this.key + this.value);
90 |
91 | this.$select = $('#tsd-filter-' + this.key);
92 | this.$select.on(pointerDown + ' mouseover', () => {
93 | this.$select.addClass('active');
94 | }).on('mouseleave', () => {
95 | this.$select.removeClass('active');
96 | }).on(pointerUp, 'li', (e:JQueryMouseEventObject) => {
97 | this.$select.removeClass('active');
98 | this.setValue($(e.target).attr('data-value'));
99 | });
100 |
101 | $document.on(pointerDown, (e:JQueryMouseEventObject) => {
102 | var $path = $(e.target).parents().addBack();
103 | if ($path.is(this.$select)) return;
104 |
105 | this.$select.removeClass('active');
106 | });
107 | }
108 |
109 |
110 | protected handleValueChange(oldValue:string, newValue:string) {
111 | this.$select.find('li.selected').removeClass('selected');
112 | this.$select.find('.tsd-select-label').text(
113 | this.$select.find('li[data-value="' + newValue + '"]').addClass('selected').text());
114 |
115 | $html.removeClass('toggle-' + oldValue);
116 | $html.addClass('toggle-' + newValue);
117 | }
118 | }
119 |
120 |
121 | class Filter extends Backbone.View
122 | {
123 | private optionVisibility:FilterItemSelect;
124 |
125 | private optionInherited:FilterItemCheckbox;
126 |
127 | private optionOnlyExported:FilterItemCheckbox;
128 |
129 | private optionExternals:FilterItemCheckbox;
130 |
131 |
132 | constructor(options?:Backbone.ViewOptions) {
133 | super(options);
134 |
135 | this.optionVisibility = new FilterItemSelect('visibility', 'private');
136 | this.optionInherited = new FilterItemCheckbox('inherited', true);
137 | this.optionExternals = new FilterItemCheckbox('externals', true);
138 | this.optionOnlyExported = new FilterItemCheckbox('only-exported', false);
139 | }
140 |
141 |
142 | static isSupported():boolean {
143 | try {
144 | return typeof window.localStorage != 'undefined';
145 | } catch (e) {
146 | return false;
147 | }
148 | }
149 | }
150 |
151 |
152 | if (Filter.isSupported()) {
153 | registerComponent(Filter, '#tsd-filter');
154 | } else {
155 | $html.addClass('no-filter');
156 | }
157 | }
158 |
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/components/MenuHighlight.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | /**
4 | * Stored element and position data of a single anchor.
5 | */
6 | interface IAnchorInfo
7 | {
8 | /**
9 | * jQuery instance of the anchor tag.
10 | */
11 | $anchor?:JQuery;
12 |
13 | /**
14 | * jQuery instance of the link in the navigation representing this anchor.
15 | */
16 | $link?:JQuery;
17 |
18 | /**
19 | * The vertical offset of the anchor on the page.
20 | */
21 | position:number;
22 | }
23 |
24 |
25 | /**
26 | * Manages the sticky state of the navigation and moves the highlight
27 | * to the current navigation item.
28 | */
29 | export class MenuHighlight extends Backbone.View
30 | {
31 | /**
32 | * List of all discovered anchors.
33 | */
34 | private anchors:IAnchorInfo[];
35 |
36 | /**
37 | * Index of the currently highlighted anchor.
38 | */
39 | private index:number = 0;
40 |
41 |
42 | /**
43 | * Create a new MenuHighlight instance.
44 | *
45 | * @param options Backbone view constructor options.
46 | */
47 | constructor(options:Backbone.ViewOptions) {
48 | super(options);
49 |
50 | this.listenTo(viewport, 'resize', this.onResize);
51 | this.listenTo(viewport, 'scroll', this.onScroll);
52 |
53 | this.createAnchors();
54 | }
55 |
56 |
57 | /**
58 | * Find all anchors on the current page.
59 | */
60 | private createAnchors() {
61 | this.index = 0;
62 | this.anchors = [{
63 | position: 0
64 | }];
65 |
66 | var base = window.location.href;
67 | if (base.indexOf('#') != -1) {
68 | base = base.substr(0, base.indexOf('#'));
69 | }
70 |
71 | this.$el.find('a').each((index, el:HTMLAnchorElement) => {
72 | var href = el.href;
73 | if (href.indexOf('#') == -1) return;
74 | if (href.substr(0, base.length) != base) return;
75 |
76 | var hash = href.substr(href.indexOf('#') + 1);
77 | var $anchor = $('a.tsd-anchor[name=' + hash + ']');
78 | if ($anchor.length == 0) return;
79 |
80 | this.anchors.push({
81 | $link: $(el.parentNode),
82 | $anchor: $anchor,
83 | position: 0
84 | });
85 | });
86 |
87 | this.onResize();
88 | }
89 |
90 |
91 | /**
92 | * Triggered after the viewport was resized.
93 | */
94 | private onResize() {
95 | var anchor;
96 | for (var index = 1, count = this.anchors.length; index < count; index++) {
97 | anchor = this.anchors[index];
98 | anchor.position = anchor.$anchor.offset().top;
99 | }
100 |
101 | this.anchors.sort((a, b) => {
102 | return a.position - b.position;
103 | });
104 |
105 | this.onScroll(viewport.scrollTop);
106 | }
107 |
108 |
109 | /**
110 | * Triggered after the viewport was scrolled.
111 | *
112 | * @param scrollTop The current vertical scroll position.
113 | */
114 | private onScroll(scrollTop:number) {
115 | var anchors = this.anchors;
116 | var index = this.index;
117 | var count = anchors.length - 1;
118 |
119 | scrollTop += 5;
120 | while (index > 0 && anchors[index].position > scrollTop) {
121 | index -= 1;
122 | }
123 |
124 | while (index < count && anchors[index + 1].position < scrollTop) {
125 | index += 1;
126 | }
127 |
128 | if (this.index != index) {
129 | if (this.index > 0) this.anchors[this.index].$link.removeClass('focus');
130 | this.index = index;
131 | if (this.index > 0) this.anchors[this.index].$link.addClass('focus');
132 | }
133 | }
134 | }
135 |
136 |
137 | /**
138 | * Register this component.
139 | */
140 | registerComponent(MenuHighlight, '.menu-highlight');
141 | }
142 |
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/components/MenuSticky.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | var hasPositionSticky = $html.hasClass('csspositionsticky');
4 |
5 | /**
6 | * Defines the known ways to make the navigation sticky.
7 | */
8 | enum StickyMode
9 | {
10 | /**
11 | * The navigation is not sticky at all.
12 | */
13 | None,
14 |
15 | /**
16 | * The entire secondary navigation will stick to the top.
17 | */
18 | Secondary,
19 |
20 | /**
21 | * Only the current root navigation item will stick to the top.
22 | */
23 | Current
24 | }
25 |
26 |
27 | /**
28 | * Controls the sticky behaviour of the secondary menu.
29 | */
30 | export class MenuSticky extends Backbone.View
31 | {
32 | /**
33 | * jQuery instance of the current navigation item.
34 | */
35 | private $current:JQuery;
36 |
37 | /**
38 | * jQuery instance of the parent representing the entire navigation.
39 | */
40 | private $navigation:JQuery;
41 |
42 | /**
43 | * jQuery instance of the parent representing entire sticky container.
44 | */
45 | private $container:JQuery;
46 |
47 | /**
48 | * The current state of the menu.
49 | */
50 | private state:string = '';
51 |
52 | /**
53 | * The current mode for determining the sticky position.
54 | */
55 | private stickyMode:StickyMode = StickyMode.None;
56 |
57 | /**
58 | * The threshold at which the menu is attached to the top.
59 | */
60 | private stickyTop:number;
61 |
62 | /**
63 | * The threshold at which the menu is attached to the bottom.
64 | */
65 | private stickyBottom:number;
66 |
67 |
68 | /**
69 | * Create a new MenuSticky instance.
70 | *
71 | * @param options Backbone view constructor options.
72 | */
73 | constructor(options:Backbone.ViewOptions) {
74 | super(options);
75 |
76 | this.$current = this.$el.find('> ul.current');
77 | this.$navigation = this.$el.parents('.menu-sticky-wrap');
78 | this.$container = this.$el.parents('.row');
79 |
80 | this.listenTo(viewport, 'resize', this.onResize);
81 | if (!hasPositionSticky) {
82 | this.listenTo(viewport, 'scroll', this.onScroll);
83 | }
84 |
85 | this.onResize(viewport.width, viewport.height);
86 | }
87 |
88 |
89 | /**
90 | * Set the current sticky state.
91 | *
92 | * @param state The new sticky state.
93 | */
94 | private setState(state:string) {
95 | if (this.state == state) return;
96 |
97 | if (this.state != '') this.$navigation.removeClass(this.state);
98 | this.state = state;
99 | if (this.state != '') this.$navigation.addClass(this.state);
100 | }
101 |
102 |
103 | /**
104 | * Triggered after the viewport was resized.
105 | *
106 | * @param width The width of the viewport.
107 | * @param height The height of the viewport.
108 | */
109 | private onResize(width:number, height:number) {
110 | this.stickyMode = StickyMode.None;
111 | this.setState('');
112 |
113 | var containerTop = this.$container.offset().top;
114 | var containerHeight = this.$container.height();
115 | var bottom = containerTop + containerHeight;
116 | if (this.$navigation.height() < containerHeight) {
117 | var elHeight = this.$el.height();
118 | var elTop = this.$el.offset().top;
119 |
120 | if (this.$current.length) {
121 | var currentHeight = this.$current.height();
122 | var currentTop = this.$current.offset().top;
123 |
124 | this.$navigation.css('top', containerTop - currentTop + 20);
125 | if (currentHeight < height) {
126 | this.stickyMode = StickyMode.Current;
127 | this.stickyTop = currentTop;
128 | this.stickyBottom = bottom - elHeight + (currentTop - elTop) - 20;
129 | }
130 | }
131 |
132 | if (elHeight < height) {
133 | this.$navigation.css('top', containerTop - elTop + 20);
134 | this.stickyMode = StickyMode.Secondary;
135 | this.stickyTop = elTop;
136 | this.stickyBottom = bottom - elHeight - 20;
137 | }
138 | }
139 |
140 | if (!hasPositionSticky) {
141 | this.$navigation.css('left', this.$navigation.offset().left);
142 | this.onScroll(viewport.scrollTop);
143 | } else {
144 | if (this.stickyMode == StickyMode.Current) {
145 | this.setState('sticky-current');
146 | } else if (this.stickyMode == StickyMode.Secondary) {
147 | this.setState('sticky');
148 | } else {
149 | this.setState('');
150 | }
151 | }
152 | }
153 |
154 |
155 | /**
156 | * Triggered after the viewport was scrolled.
157 | *
158 | * @param scrollTop The current vertical scroll position.
159 | */
160 | private onScroll(scrollTop:number) {
161 | if (this.stickyMode == StickyMode.Current) {
162 | if (scrollTop > this.stickyBottom) {
163 | this.setState('sticky-bottom');
164 | } else {
165 | this.setState(scrollTop + 20 > this.stickyTop ? 'sticky-current' : '');
166 | }
167 | } else if (this.stickyMode == StickyMode.Secondary) {
168 | if (scrollTop > this.stickyBottom) {
169 | this.setState('sticky-bottom');
170 | } else {
171 | this.setState(scrollTop + 20 > this.stickyTop ? 'sticky' : '');
172 | }
173 | }
174 | }
175 | }
176 |
177 |
178 | /**
179 | * Register this component.
180 | */
181 | registerComponent(MenuSticky, '.menu-sticky');
182 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/components/Search.ts:
--------------------------------------------------------------------------------
1 | declare module typedoc.search
2 | {
3 | interface IDocument {
4 | id:number;
5 | kind:number;
6 | name:string;
7 | url:string;
8 | classes:string;
9 | parent?:string;
10 | }
11 |
12 | interface IData {
13 | kinds:{[kind:number]:string};
14 | rows:IDocument[];
15 | }
16 |
17 | var data:IData;
18 | }
19 |
20 |
21 | module typedoc.search
22 | {
23 | /**
24 | * Loading state definitions.
25 | */
26 | enum SearchLoadingState
27 | {
28 | Idle, Loading, Ready, Failure
29 | }
30 |
31 |
32 | /**
33 | * The element holding the search widget and results.
34 | */
35 | var $el:JQuery = $('#tsd-search');
36 |
37 | /**
38 | * The input field of the search widget.
39 | */
40 | var $field:JQuery = $('#tsd-search-field');
41 |
42 | /**
43 | * The result list wrapper.
44 | */
45 | var $results:JQuery = $('.results');
46 |
47 | /**
48 | * The base url that must be prepended to the indexed urls.
49 | */
50 | var base:string = $el.attr('data-base') + '/';
51 |
52 | /**
53 | * The current query string.
54 | */
55 | var query:string = '';
56 |
57 | /**
58 | * The state the search is currently in.
59 | */
60 | var loadingState:SearchLoadingState = SearchLoadingState.Idle;
61 |
62 | /**
63 | * Is the input field focused?
64 | */
65 | var hasFocus:boolean = false;
66 |
67 | /**
68 | * Should the next key press be prevents?
69 | */
70 | var preventPress:boolean = false;
71 |
72 | /**
73 | * The lunr index used to search the documentation.
74 | */
75 | var index:lunr.Index;
76 |
77 |
78 | /**
79 | * Instantiate the lunr index.
80 | */
81 | function createIndex() {
82 | index = new lunr.Index();
83 | index.pipeline.add(
84 | lunr.trimmer
85 | );
86 |
87 | index.field('name', {boost:10});
88 | index.field('parent');
89 | index.ref('id');
90 |
91 | var rows = data.rows;
92 | var pos = 0;
93 | var length = rows.length;
94 | function batch() {
95 | var cycles = 0;
96 | while (cycles++ < 100) {
97 | index.add(rows[pos]);
98 | if (++pos == length) {
99 | return setLoadingState(SearchLoadingState.Ready);
100 | }
101 | }
102 | setTimeout(batch, 10);
103 | }
104 |
105 | batch();
106 | }
107 |
108 |
109 | /**
110 | * Lazy load the search index and parse it.
111 | */
112 | function loadIndex() {
113 | if (loadingState != SearchLoadingState.Idle) return;
114 | setTimeout(() => {
115 | if (loadingState == SearchLoadingState.Idle) {
116 | setLoadingState(SearchLoadingState.Loading);
117 | }
118 | }, 500);
119 |
120 | if (typeof data != 'undefined') {
121 | createIndex();
122 | } else {
123 | $.get($el.attr('data-index'))
124 | .done((source:string) => {
125 | eval(source);
126 | createIndex();
127 | }).fail(() => {
128 | setLoadingState(SearchLoadingState.Failure);
129 | });
130 | }
131 | }
132 |
133 |
134 | /**
135 | * Update the visible state of the search control.
136 | */
137 | function updateResults() {
138 | if (loadingState != SearchLoadingState.Ready) return;
139 | $results.empty();
140 |
141 | var res = index.search(query);
142 | for (var i = 0, c = Math.min(10, res.length); i < c; i++) {
143 | var row = data.rows[res[i].ref];
144 | var name = row.name;
145 | if (row.parent) name = '' + row.parent + '. ' + name;
146 | $results.append('' + name + ' ');
147 | }
148 | }
149 |
150 |
151 | /**
152 | * Set the loading state and update the visual state accordingly.
153 | */
154 | function setLoadingState(value:SearchLoadingState) {
155 | if (loadingState == value) return;
156 |
157 | $el.removeClass(SearchLoadingState[loadingState].toLowerCase());
158 | loadingState = value;
159 | $el.addClass(SearchLoadingState[loadingState].toLowerCase());
160 |
161 | if (value == SearchLoadingState.Ready) {
162 | updateResults();
163 | }
164 | }
165 |
166 |
167 | /**
168 | * Set the focus state and update the visual state accordingly.
169 | */
170 | function setHasFocus(value:boolean) {
171 | if (hasFocus == value) return;
172 | hasFocus = value;
173 | $el.toggleClass('has-focus');
174 |
175 | if (!value) {
176 | $field.val(query);
177 | } else {
178 | setQuery('');
179 | $field.val('');
180 | }
181 | }
182 |
183 |
184 | /**
185 | * Set the query string and update the results.
186 | */
187 | function setQuery(value:string) {
188 | query = $.trim(value);
189 | updateResults();
190 | }
191 |
192 |
193 | /**
194 | * Move the highlight within the result set.
195 | */
196 | function setCurrentResult(dir:number) {
197 | var $current = $results.find('.current');
198 | if ($current.length == 0) {
199 | $results.find(dir == 1 ? 'li:first-child' : 'li:last-child').addClass('current');
200 | } else {
201 | var $rel = dir == 1 ? $current.next('li') : $current.prev('li');
202 | if ($rel.length > 0) {
203 | $current.removeClass('current');
204 | $rel.addClass('current');
205 | }
206 | }
207 | }
208 |
209 |
210 | /**
211 | * Navigate to the highlighted result.
212 | */
213 | function gotoCurrentResult() {
214 | var $current = $results.find('.current');
215 |
216 | if ($current.length == 0) {
217 | $current = $results.find('li:first-child');
218 | }
219 |
220 | if ($current.length > 0) {
221 | window.location.href = $current.find('a').prop('href');
222 | $field.blur();
223 | }
224 | }
225 |
226 |
227 | /**
228 | * Bind all required events on the input field.
229 | */
230 | $field.on('focusin', () => {
231 | setHasFocus(true);
232 | loadIndex();
233 | }).on('focusout', () => {
234 | // setTimeout(() => setHasFocus(false), 10000);
235 | }).on('input', () => {
236 | setQuery($.trim($field.val()));
237 | }).on('keydown', (e:JQueryKeyEventObject) => {
238 | if (e.keyCode == 13 || e.keyCode == 27 || e.keyCode == 38 || e.keyCode == 40) {
239 | preventPress = true;
240 | e.preventDefault();
241 |
242 | if (e.keyCode == 13) {
243 | gotoCurrentResult();
244 | } else if (e.keyCode == 27) {
245 | $field.blur();
246 | } else if (e.keyCode == 38) {
247 | setCurrentResult(-1);
248 | } else if (e.keyCode == 40) {
249 | setCurrentResult(1);
250 | }
251 | } else {
252 | preventPress = false;
253 | }
254 | }).on('keypress', (e) => {
255 | if (preventPress) e.preventDefault();
256 | });
257 |
258 |
259 | /**
260 | * Start searching by pressing a key on the body.
261 | */
262 | $('body').on('keydown', (e:JQueryKeyEventObject) => {
263 | if (e.altKey || e.ctrlKey || e.metaKey) return;
264 | if (!hasFocus && e.keyCode > 47 && e.keyCode < 112) {
265 | $field.focus();
266 | }
267 | });
268 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/components/Signature.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | /**
4 | * Holds a signature and its description.
5 | */
6 | class SignatureGroup
7 | {
8 | /**
9 | * The target signature.
10 | */
11 | $signature:JQuery;
12 |
13 | /**
14 | * The description for the signature.
15 | */
16 | $description:JQuery;
17 |
18 |
19 | /**
20 | * Create a new SignatureGroup instance.
21 | *
22 | * @param $signature The target signature.
23 | * @param $description The description for the signature.
24 | */
25 | constructor($signature, $description) {
26 | this.$signature = $signature;
27 | this.$description = $description;
28 | }
29 |
30 |
31 | /**
32 | * Add the given class to all elements of the group.
33 | *
34 | * @param className The class name to add.
35 | */
36 | addClass(className:string):SignatureGroup {
37 | this.$signature.addClass(className);
38 | this.$description.addClass(className);
39 | return this;
40 | }
41 |
42 |
43 | /**
44 | * Remove the given class from all elements of the group.
45 | *
46 | * @param className The class name to remove.
47 | */
48 | removeClass(className:string):SignatureGroup {
49 | this.$signature.removeClass(className);
50 | this.$description.removeClass(className);
51 | return this;
52 | }
53 | }
54 |
55 |
56 | /**
57 | * Controls the tab like behaviour of methods and functions with multiple signatures.
58 | */
59 | class Signature extends Backbone.View
60 | {
61 | /**
62 | * List of found signature groups.
63 | */
64 | private groups:SignatureGroup[];
65 |
66 | /**
67 | * The container holding all the descriptions.
68 | */
69 | private $container:JQuery;
70 |
71 | /**
72 | * The index of the currently displayed signature.
73 | */
74 | private index:number = -1;
75 |
76 |
77 | /**
78 | * Create a new Signature instance.
79 | *
80 | * @param options Backbone view constructor options.
81 | */
82 | constructor(options:Backbone.ViewOptions) {
83 | super(options);
84 |
85 | this.createGroups();
86 |
87 | if (this.groups) {
88 | this.$el.addClass('active')
89 | .on('touchstart', '.tsd-signature', (event) => this.onClick(event))
90 | .on('click', '.tsd-signature', (event) => this.onClick(event));
91 | this.$container.addClass('active');
92 | this.setIndex(0);
93 | }
94 | }
95 |
96 |
97 | /**
98 | * Set the index of the active signature.
99 | *
100 | * @param index The index of the signature to activate.
101 | */
102 | private setIndex(index:number) {
103 | if (index < 0) index = 0;
104 | if (index > this.groups.length - 1) index = this.groups.length - 1;
105 | if (this.index == index) return;
106 |
107 | var to = this.groups[index];
108 | if (this.index > -1) {
109 | var from = this.groups[this.index];
110 |
111 | animateHeight(this.$container, () => {
112 | from.removeClass('current').addClass('fade-out');
113 | to.addClass('current fade-in');
114 | viewport.triggerResize();
115 | });
116 |
117 | setTimeout(() => {
118 | from.removeClass('fade-out');
119 | to.removeClass('fade-in');
120 | }, 300);
121 | } else {
122 | to.addClass('current');
123 | viewport.triggerResize();
124 | }
125 |
126 | this.index = index;
127 | }
128 |
129 |
130 | /**
131 | * Find all signature/description groups.
132 | */
133 | private createGroups() {
134 | var $signatures = this.$el.find('> .tsd-signature');
135 | if ($signatures.length < 2) return;
136 |
137 | this.$container = this.$el.siblings('.tsd-descriptions');
138 | var $descriptions = this.$container.find('> .tsd-description');
139 |
140 | this.groups = [];
141 | $signatures.each((index, el) => {
142 | this.groups.push(new SignatureGroup($(el), $descriptions.eq(index)));
143 | });
144 | }
145 |
146 |
147 | /**
148 | * Triggered when the user clicks onto a signature header.
149 | *
150 | * @param e The related jQuery event object.
151 | */
152 | private onClick(e:JQueryMouseEventObject) {
153 | e.preventDefault();
154 | _(this.groups).forEach((group, index) => {
155 | if (group.$signature.is(e.currentTarget)) {
156 | this.setIndex(index);
157 | }
158 | });
159 | }
160 | }
161 |
162 |
163 | /**
164 | * Register this component.
165 | */
166 | registerComponent(Signature, '.tsd-signatures');
167 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/components/Toggle.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | /**
4 | * Enabled simple toggle buttons.
5 | */
6 | class Toggle extends Backbone.View
7 | {
8 | active:boolean;
9 |
10 | className:string;
11 |
12 |
13 | constructor(options:Backbone.ViewOptions) {
14 | super(options);
15 |
16 | this.className = this.$el.attr('data-toggle');
17 | this.$el.on(pointerUp, (e) => this.onPointerUp(e));
18 | this.$el.on('click', (e) => e.preventDefault());
19 | $document.on(pointerDown, (e) => this.onDocumentPointerDown(e));
20 | $document.on(pointerUp, (e) => this.onDocumentPointerUp(e));
21 | }
22 |
23 |
24 | setActive(value:boolean) {
25 | if (this.active == value) return;
26 | this.active = value;
27 |
28 | $html.toggleClass('has-' + this.className, value);
29 | this.$el.toggleClass('active', value);
30 |
31 | var transition = (this.active ? 'to-has-' : 'from-has-') + this.className;
32 | $html.addClass(transition);
33 | setTimeout(() => $html.removeClass(transition), 500);
34 | }
35 |
36 |
37 | onPointerUp(event:JQueryMouseEventObject) {
38 | if (hasPointerMoved) return;
39 | this.setActive(true);
40 | event.preventDefault();
41 | }
42 |
43 |
44 | onDocumentPointerDown(e:JQueryMouseEventObject) {
45 | if (this.active) {
46 | var $path = $(e.target).parents().addBack();
47 | if ($path.hasClass('col-menu')) {
48 | return;
49 | }
50 |
51 | if ($path.hasClass('tsd-filter-group')) {
52 | return;
53 | }
54 |
55 | this.setActive(false);
56 | }
57 | }
58 |
59 | onDocumentPointerUp(e:JQueryMouseEventObject) {
60 | if (hasPointerMoved) return;
61 | if (this.active) {
62 | var $path = $(e.target).parents().addBack();
63 | if ($path.hasClass('col-menu')) {
64 | var $link = $path.filter('a');
65 | if ($link.length) {
66 | var href = window.location.href;
67 | if (href.indexOf('#') != -1) {
68 | href = href.substr(0, href.indexOf('#'));
69 | }
70 | if ($link.prop('href').substr(0, href.length) == href) {
71 | setTimeout(() => this.setActive(false), 250);
72 | }
73 | }
74 | }
75 | }
76 | }
77 | }
78 |
79 |
80 | /**
81 | * Register this component.
82 | */
83 | registerComponent(Toggle, 'a[data-toggle]');
84 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/services/Viewport.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | /**
4 | * A global service that monitors the window size and scroll position.
5 | */
6 | export class Viewport extends Events
7 | {
8 | /**
9 | * The current scroll position.
10 | */
11 | scrollTop:number = 0;
12 |
13 | /**
14 | * The width of the window.
15 | */
16 | width:number = 0;
17 |
18 | /**
19 | * The height of the window.
20 | */
21 | height:number = 0;
22 |
23 |
24 | /**
25 | * Create new Viewport instance.
26 | */
27 | constructor() {
28 | super();
29 | $window.on('scroll', _(() => this.onScroll()).throttle(10));
30 | $window.on('resize', _(() => this.onResize()).throttle(10));
31 |
32 | this.onResize();
33 | this.onScroll();
34 | }
35 |
36 |
37 | /**
38 | * Trigger a resize event.
39 | */
40 | triggerResize() {
41 | this.trigger('resize', this.width, this.height);
42 | }
43 |
44 |
45 | /**
46 | * Triggered when the size of the window has changed.
47 | */
48 | onResize() {
49 | this.width = $window.width();
50 | this.height = $window.height();
51 | this.trigger('resize', this.width, this.height);
52 | }
53 |
54 |
55 | /**
56 | * Triggered when the user scrolled the viewport.
57 | */
58 | onScroll() {
59 | this.scrollTop = $window.scrollTop();
60 | this.trigger('scroll', this.scrollTop);
61 | }
62 | }
63 |
64 |
65 | /**
66 | * Register service.
67 | */
68 | export var viewport:Viewport;
69 | registerService(Viewport, 'viewport');
70 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/utils/pointer.ts:
--------------------------------------------------------------------------------
1 | module typedoc
2 | {
3 | /**
4 | * Simple point interface.
5 | */
6 | export interface Point {
7 | x:number;
8 | y:number;
9 | }
10 |
11 | /**
12 | * Event name of the pointer down event.
13 | */
14 | export var pointerDown:string = 'mousedown';
15 |
16 | /**
17 | * Event name of the pointer move event.
18 | */
19 | export var pointerMove:string = 'mousemove';
20 |
21 | /**
22 | * Event name of the pointer up event.
23 | */
24 | export var pointerUp:string = 'mouseup';
25 |
26 | /**
27 | * Position the pointer was pressed at.
28 | */
29 | export var pointerDownPosition:Point = {x:0, y:0};
30 |
31 | /**
32 | * Should the next click on the document be supressed?
33 | */
34 | export var preventNextClick:boolean = false;
35 |
36 | /**
37 | * Is the pointer down?
38 | */
39 | export var isPointerDown:boolean = false;
40 |
41 | /**
42 | * Is the pointer a touch point?
43 | */
44 | export var isPointerTouch:boolean = false;
45 |
46 | /**
47 | * Did the pointer move since the last down event?
48 | */
49 | export var hasPointerMoved:boolean = false;
50 |
51 | /**
52 | * Is the user agent a mobile agent?
53 | */
54 | export var isMobile:boolean = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
55 | $html.addClass(isMobile ? 'is-mobile' : 'not-mobile');
56 |
57 |
58 | if (isMobile && 'ontouchstart' in document.documentElement) {
59 | isPointerTouch = true;
60 | pointerDown = 'touchstart';
61 | pointerMove = 'touchmove';
62 | pointerUp = 'touchend';
63 | }
64 |
65 | $document.on(pointerDown, (e:JQueryMouseEventObject) => {
66 | isPointerDown = true;
67 | hasPointerMoved = false;
68 | var t = (pointerDown == 'touchstart' ? e.originalEvent['targetTouches'][0] : e);
69 | pointerDownPosition.x = t.pageX;
70 | pointerDownPosition.y = t.pageY;
71 | }).on(pointerMove, (e:JQueryMouseEventObject) => {
72 | if (!isPointerDown) return;
73 | if (!hasPointerMoved) {
74 | var t = (pointerDown == 'touchstart' ? e.originalEvent['targetTouches'][0] : e);
75 | var x = pointerDownPosition.x - t.pageX;
76 | var y = pointerDownPosition.y - t.pageY;
77 | hasPointerMoved = (Math.sqrt(x*x + y*y) > 10);
78 | }
79 | }).on(pointerUp, (e:JQueryMouseEventObject) => {
80 | isPointerDown = false;
81 | }).on('click', (e:JQueryMouseEventObject) => {
82 | if (preventNextClick) {
83 | e.preventDefault();
84 | e.stopImmediatePropagation();
85 | preventNextClick = false;
86 | }
87 | });
88 | }
--------------------------------------------------------------------------------
/src/default/assets/js/src/typedoc/utils/transitions.ts:
--------------------------------------------------------------------------------
1 | module typedoc {
2 | function getVendorInfo(tuples) {
3 | for (var name in tuples) {
4 | if (!tuples.hasOwnProperty(name))
5 | continue;
6 | if (typeof (document.body.style[name]) !== 'undefined') {
7 | return { name: name, endEvent: tuples[name] };
8 | }
9 | }
10 | return null;
11 | }
12 |
13 |
14 | export var transition = getVendorInfo({
15 | 'transition': 'transitionend',
16 | 'OTransition': 'oTransitionEnd',
17 | 'msTransition': 'msTransitionEnd',
18 | 'MozTransition': 'transitionend',
19 | 'WebkitTransition': 'webkitTransitionEnd'
20 | });
21 |
22 |
23 | export function noTransition($el, callback) {
24 | $el.addClass('no-transition');
25 | callback();
26 | $el.offset();
27 | $el.removeClass('no-transition');
28 | }
29 |
30 |
31 | export function animateHeight($el:JQuery, callback:Function, success?:Function) {
32 | var from = $el.height(), to;
33 | noTransition($el, function () {
34 | callback();
35 |
36 | $el.css('height', '');
37 | to = $el.height();
38 | if (from != to && transition) $el.css('height', from);
39 | });
40 |
41 | if (from != to && transition) {
42 | $el.css('height', to);
43 | $el.on(transition.endEvent, function () {
44 | noTransition($el, function () {
45 | $el.off(transition.endEvent).css('height', '');
46 | if (success) success();
47 | });
48 | });
49 | } else {
50 | if (success) success();
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/default/assets/js/src/~bootstrap.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | module typedoc
4 | {
5 | export var app:Application = new Application();
6 | }
--------------------------------------------------------------------------------
/src/default/layouts/default.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{#ifCond model.name '==' project.name}}{{project.name}}{{else}}{{model.name}} | {{project.name}}{{/ifCond}}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {{> header}}
17 |
18 |
19 |
20 |
40 |
41 | {{{contents}}}
42 | {{> footer}}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | {{> analytics}}
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/default/partials/analytics.hbs:
--------------------------------------------------------------------------------
1 | {{#if settings.gaID}}
2 |
11 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/breadcrumb.hbs:
--------------------------------------------------------------------------------
1 | {{#if parent}}
2 | {{#with parent}}{{> breadcrumb}}{{/with}}
3 |
4 | {{#if url}}
5 | {{name}}
6 | {{else}}
7 | {{name}}
8 | {{/if}}
9 |
10 | {{else}}
11 | {{#if url}}
12 |
13 | Globals
14 |
15 | {{/if}}
16 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/comment-tags.hbs:
--------------------------------------------------------------------------------
1 | {{#with comment}}
2 | {{#if hasVisibleComponent}}
3 |
11 | {{/if}}
12 | {{/with}}
--------------------------------------------------------------------------------
/src/default/partials/comment.hbs:
--------------------------------------------------------------------------------
1 | {{#with comment}}
2 | {{#if hasVisibleComponent}}
3 |
19 | {{/if}}
20 | {{/with}}
--------------------------------------------------------------------------------
/src/default/partials/description.hbs:
--------------------------------------------------------------------------------
1 | {{#with comment}}
2 | {{#if hasVisibleComponent}}
3 |
13 | {{/if}}
14 | {{/with}}
--------------------------------------------------------------------------------
/src/default/partials/footer.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Inherited
6 | Protected
7 | Private
8 | Static
9 |
10 |
11 | Module
12 | Object
13 | Property
14 |
15 |
16 | Function
17 | Variable
18 | Index
19 |
20 |
21 | Type
22 | Class
23 | Interface
24 |
25 |
26 | Enum
27 | Constructor
28 | Getter/Setter
29 |
30 |
31 |
32 |
33 | {{#unless settings.hideGenerator}}
34 |
35 | {{/unless}}
36 |
--------------------------------------------------------------------------------
/src/default/partials/header.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Search
8 |
9 |
10 |
11 |
12 | Preparing search index...
13 | The search index is not available
14 |
15 |
16 |
{{project.name}}
17 |
18 |
19 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | {{#with model}}{{> breadcrumb}}{{/with}}
56 |
57 | {{!--
{{#compact}}
58 | {{model.kindString}}
59 | {{model.name}}
60 | {{#if model.typeParameters}}
61 | <
62 | {{#each model.typeParameters}}
63 | {{#if @index}}, {{/if}}
64 | {{name}}
65 | {{/each}}
66 | >
67 | {{/if}}
68 | {{/compact}} --}}
69 |
70 |
71 |
--------------------------------------------------------------------------------
/src/default/partials/hierarchy.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#each types}}
3 |
4 | {{#if ../isTarget}}
5 | {{this}}
6 | {{else}}
7 | {{> type}}
8 | {{/if}}
9 |
10 | {{#if @last}}
11 | {{#with ../next}}
12 | {{> hierarchy}}
13 | {{/with}}
14 | {{/if}}
15 |
16 | {{/each}}
17 |
18 |
--------------------------------------------------------------------------------
/src/default/partials/index.children.hbs:
--------------------------------------------------------------------------------
1 | {{#if children}}
2 | {{#each children}}
3 |
11 | {{/each}}
12 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/index.children.rec.hbs:
--------------------------------------------------------------------------------
1 | {{#if children}}
2 |
10 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/index.hbs:
--------------------------------------------------------------------------------
1 | {{#if groups}}
2 |
3 |
4 |
5 | {{#each groups}}
6 |
7 | {{title}}
8 | {{> index.children}}
9 |
10 | {{/each}}
11 |
12 |
13 |
14 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/member.declaration.hbs:
--------------------------------------------------------------------------------
1 | {{#compact}}
2 | {{name}}
3 | {{#if typeParameters}}
4 | <
5 | {{#each typeParameters}}
6 | {{#if @index}}, {{/if}}
7 | {{name}}
8 | {{/each}}
9 | >
10 | {{/if}}
11 | {{#if isOptional}}?{{/if}}: {{#with type}}{{>type}}{{/with}}
12 | {{#if defaultValue}}
13 |
14 | =
15 | {{defaultValue}}
16 |
17 | {{/if}}
18 | {{/compact}}
19 |
20 | {{> description}}
21 |
22 | {{!-- {{> comment}} --}}
23 |
24 | {{#if typeParameters}}
25 | Type parameters
26 | {{> typeParameters}}
27 | {{/if}}
28 |
29 | {{!-- {{> member.sources}} --}}
30 |
31 | {{!-- {{#if type.declaration}} // who cares ?
32 |
33 |
Type declaration
34 | {{#with type.declaration}}
35 | {{> parameter}}
36 | {{/with}}
37 |
38 | {{/if}} --}}
39 |
--------------------------------------------------------------------------------
/src/default/partials/member.getterSetter.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#if getSignature}}
3 | {{#with getSignature}}
4 | {{#compact}}
5 | get
6 | {{../name}}
7 | {{> member.signature.title hideName=true }}
8 | {{/compact}}
9 | {{/with}}
10 | {{/if}}
11 | {{#if setSignature}}
12 | {{#with setSignature}}
13 | {{#compact}}
14 | set
15 | {{../name}}
16 | {{> member.signature.title hideName=true }}
17 | {{/compact}}
18 | {{/with}}
19 | {{/if}}
20 |
21 |
22 | {{!-- --}}
23 | {{#if getSignature}}
24 | {{#with getSignature}}
25 | {{> member.signature.body }}
26 | {{/with}}
27 | {{/if}}
28 | {{#if setSignature}}
29 | {{#with setSignature}}
30 | {{> member.signature.body }}
31 | {{/with}}
32 | {{/if}}
33 | {{!-- --}}
--------------------------------------------------------------------------------
/src/default/partials/member.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{#if name}}
4 | {{#each flags}}{{this}} {{/each}}{{{wbr name}}}
5 | {{/if}}
6 | {{!-- // todo see why comment does not display --}}
7 |
8 | {{#if signatures}}
9 | {{> member.signatures}}
10 | {{else}}{{#if hasGetterOrSetter}}
11 | {{> member.getterSetter}}
12 | {{else}}
13 | {{> member.declaration}}
14 | {{/if}}{{/if}}
15 |
16 | {{#each groups}}
17 | {{#each children}}
18 | {{#unless hasOwnDocument}}
19 | {{> member}}
20 | {{/unless}}
21 | {{/each}}
22 | {{/each}}
23 |
24 | {{> comment-tags}}
25 |
26 | {{> member.sources}}
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/default/partials/member.signature.body.hbs:
--------------------------------------------------------------------------------
1 | {{!-- {{#unless hideSources}}
2 | {{> member.sources}}
3 | {{/unless}} --}}
4 |
5 | {{> description}}
6 |
7 | {{!-- {{> comment}} --}}
8 |
9 | {{#if typeParameters}}
10 | Type parameters
11 | {{> typeParameters}}
12 | {{/if}}
13 |
14 | {{#if parameters}}
15 | Parameters
16 |
17 | {{#each parameters}}
18 |
19 | {{#compact}}
20 | {{#if flags.isRest}}... {{/if}}
21 | {{name}} :
22 | {{#with type}}{{>type}}{{/with}}
23 | {{#if defaultValue}}
24 |
25 | =
26 | {{defaultValue}}
27 |
28 | {{/if}}
29 | {{#each flags}}
30 | {{this}}
31 | {{/each}}
32 | {{/compact}}
33 |
34 | {{> comment}}
35 |
36 | {{#if type.declaration}}
37 | {{#with type.declaration}}
38 | {{> parameter}}
39 | {{/with}}
40 | {{/if}}
41 |
42 | {{/each}}
43 |
44 | {{/if}}
45 |
46 | {{#if type}}
47 | Returns {{#with type}}{{>type}}{{/with}}
48 |
49 | {{#if comment.returns}}
50 | {{#markdown}}{{{comment.returns}}}{{/markdown}}
51 | {{/if}}
52 |
53 | {{#if type.declaration}}
54 | {{#with type.declaration}}
55 | {{> parameter}}
56 | {{/with}}
57 | {{/if}}
58 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/member.signature.title.hbs:
--------------------------------------------------------------------------------
1 | {{#compact}}
2 | {{#unless hideName}}{{{wbr name}}}{{/unless}}
3 | {{#if typeParameters}}
4 | <
5 | {{#each typeParameters}}
6 | {{#if @index}}, {{/if}}
7 | {{name}}
8 | {{/each}}
9 | >
10 | {{/if}}
11 | (
12 | {{#each parameters}}
13 | {{#if @index}}, {{/if}}
14 | {{#if flags.isRest}}... {{/if}}
15 | {{name}}
16 |
17 | {{#if flags.isOptional}}?{{/if}}
18 | {{#if defaultValue}}?{{/if}}
19 | :
20 |
21 | {{#with type}}{{>type}}{{/with}}
22 | {{/each}}
23 | )
24 | {{#if type}}
25 | :
26 | {{#with type}}{{>type}}{{/with}}
27 | {{/if}}
28 | {{/compact}}
--------------------------------------------------------------------------------
/src/default/partials/member.signatures.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#each signatures}}
3 | {{> member.signature.title }}
4 | {{/each}}
5 |
6 |
7 | {{!-- --}}
8 | {{#each signatures}}
9 | {{!-- --}}
10 | {{> member.signature.body }}
11 | {{!-- --}}
12 | {{/each}}
13 |
--------------------------------------------------------------------------------
/src/default/partials/member.sources.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#if implementationOf}}
3 | Implementation of {{#with implementationOf}}{{> typeAndParent}}{{/with}}
4 | {{/if}}
5 | {{#if inheritedFrom}}
6 | Inherited from {{#with inheritedFrom}}{{> typeAndParent}}{{/with}}
7 | {{/if}}
8 | {{#if overwrites}}
9 | Overrides {{#with overwrites}}{{> typeAndParent}}{{/with}}
10 | {{/if}}
11 | {{#if sources}}
12 |
13 | {{#each sources}}
14 | {{#if url}}
15 | Defined in {{fileName}}:{{line}}
16 | {{else}}
17 | Defined in {{fileName}}:{{line}}
18 | {{/if}}
19 | {{/each}}
20 |
21 | {{/if}}
22 |
--------------------------------------------------------------------------------
/src/default/partials/members.group.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{title}}
3 | {{#each children}}
4 | {{#unless hasOwnDocument}}
5 | {{> member}}
6 | {{/unless}}
7 | {{/each}}
8 |
9 |
--------------------------------------------------------------------------------
/src/default/partials/members.hbs:
--------------------------------------------------------------------------------
1 | {{#each groups}}
2 | {{#unless allChildrenHaveOwnDocument}}
3 | {{> members.group}}
4 | {{/unless}}
5 | {{/each}}
--------------------------------------------------------------------------------
/src/default/partials/navglobals.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{{wbr title}}}
3 | {{#if isInPath}}
4 | {{#if children}}
5 |
6 | {{#each children}}
7 | {{> navigation}}
8 | {{/each}}
9 |
10 | {{/if}}
11 | {{/if}}
12 |
--------------------------------------------------------------------------------
/src/default/partials/navigation.hbs:
--------------------------------------------------------------------------------
1 | {{#if isVisible}}
2 |
3 | {{{wbr title}}}
4 | {{#if isInPath}}
5 | {{#if children}}
6 |
7 | {{#each children}}
8 | {{> navigation}}
9 | {{/each}}
10 |
11 | {{/if}}
12 | {{/if}}
13 |
14 | {{/if}}
15 |
--------------------------------------------------------------------------------
/src/default/partials/parameter.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#if signatures}}
3 |
4 |
5 | {{#each signatures}}
6 | {{> member.signature.title hideName=true }}
7 | {{/each}}
8 |
9 |
10 |
11 | {{#each signatures}}
12 | {{> member.signature.body hideSources=true }}
13 | {{/each}}
14 |
15 |
16 | {{/if}}
17 | {{#if indexSignature}}
18 |
19 | {{#compact}}
20 | [
21 | {{#each indexSignature.parameters}}
22 | {{#if flags.isRest}}... {{/if}}{{name}}: {{#with type}}{{>type}}{{/with}}
23 | {{/each}}
24 | ]:
25 | {{#with indexSignature.type}}{{>type}}{{/with}}
26 | {{/compact}}
27 |
28 | {{#with indexSignature}}
29 | {{> comment}}
30 | {{/with}}
31 |
32 | {{#if indexSignature.type.declaration}}
33 | {{#with indexSignature.type.declaration}}
34 | {{> parameter}}
35 | {{/with}}
36 | {{/if}}
37 |
38 | {{/if}}
39 | {{#each children}}
40 |
41 | {{#if signatures}}
42 | {{#compact}}
43 | {{#if flags.isRest}}... {{/if}}
44 | {{{wbr name}}}
45 |
46 | {{#if isOptional}}?{{/if}}
47 | :
48 |
49 | function
50 | {{/compact}}
51 |
52 | {{> member.signatures}}
53 | {{else}}
54 | {{#compact}}
55 | {{#each flags}}
56 | {{this}}
57 | {{/each}}
58 | {{#if flags.isRest}}... {{/if}}
59 | {{{wbr name}}}
60 |
61 | {{#if flags.isOptional}}?{{/if}}
62 | :
63 |
64 | {{#with type}}{{>type}}{{/with}}
65 | {{/compact}}
66 |
67 | {{> comment}}
68 |
69 | {{#if children}}
70 | {{> parameter}}
71 | {{/if}}
72 |
73 | {{#if type.declaration}}
74 | {{#with type.declaration}}
75 | {{> parameter}}
76 | {{/with}}
77 | {{/if}}
78 | {{/if}}
79 |
80 | {{/each}}
81 |
82 |
--------------------------------------------------------------------------------
/src/default/partials/toc.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{{wbr title}}}
3 | {{#if children}}
4 |
5 | {{#each children}}
6 | {{> toc}}
7 | {{/each}}
8 |
9 | {{/if}}
10 |
11 |
--------------------------------------------------------------------------------
/src/default/partials/toc.root.hbs:
--------------------------------------------------------------------------------
1 | {{#if isInPath}}
2 |
3 |
4 | {{/if}}
5 |
6 | {{{wbr title}}}
7 | {{#if children}}
8 |
9 | {{#each children}}
10 | {{> toc}}
11 | {{/each}}
12 |
13 | {{/if}}
14 |
15 | {{#if isInPath}}
16 |
17 |
18 | {{/if}}
19 |
--------------------------------------------------------------------------------
/src/default/partials/type.hbs:
--------------------------------------------------------------------------------
1 | {{#if this}}
2 | {{#if reflection}}
3 | {{#compact}}
4 |
5 | {{reflection.name}}
6 |
7 | {{#if typeArguments}}
8 | <
9 |
10 | {{#each typeArguments}}
11 | {{#if @index}}
12 | ,
13 | {{/if}}{{> type}}
14 | {{/each}}
15 |
16 | >
17 | {{/if}}
18 | {{/compact}}
19 | {{else if elementType}}
20 | {{#with elementType}}
21 | {{#compact}}
22 | {{#if types}}
23 | (
24 | {{/if}}
25 | {{> type}}
26 | {{#if types}}
27 | )
28 | {{/if}}[]
29 | {{/compact}}
30 | {{/with}}
31 | {{else if types}}
32 | {{#each types}}
33 | {{#if @index}}
34 | {{#ifCond ../type '==' 'intersection'}}&{{else}}|{{/ifCond}}
35 | {{/if}}{{> type}}
36 | {{/each}}
37 | {{else if elements}}
38 | {{#compact}}
39 | [
40 |
41 | {{#each elements}}
42 | {{#if @index}}
43 | ,
44 | {{/if}}{{> type}}
45 | {{/each}}
46 |
47 | ]
48 | {{/compact}}
49 | {{else}}
50 | {{#ifCond type '===' 'predicate'}}
51 | {{#compact}}
52 | {{#if asserts}}
53 | asserts
54 | {{/if}}
55 | {{name}}
56 | {{#if targetType}}
57 | is
58 | {{#with targetType}}
59 | {{>type}}
60 | {{/with}}
61 | {{/if}}
62 | {{/compact}}
63 | {{else}}
64 | {{#compact}}
65 |
66 | {{#if name}}
67 | {{name}}
68 | {{else}}
69 | {{#if value}}
70 | "{{value}}"
71 | {{else}}
72 | {{this}}
73 | {{/if}}
74 | {{/if}}
75 |
76 | {{#if typeArguments}}
77 | <
78 |
79 | {{#each typeArguments}}
80 | {{#if @index}}
81 | ,
82 | {{/if}}{{> type}}
83 | {{/each}}
84 |
85 | >
86 | {{/if}}
87 | {{/compact}}
88 | {{/ifCond}}
89 | {{/if}}
90 | {{else}}
91 | void
92 | {{/if}}
--------------------------------------------------------------------------------
/src/default/partials/typeAndParent.hbs:
--------------------------------------------------------------------------------
1 | {{#compact}}
2 | {{#if this}}
3 | {{#if elementType}}
4 | {{#with elementType}}
5 | {{> typeAndParent}}
6 | {{/with}}
7 | []
8 | {{else}}
9 | {{#if reflection}}
10 | {{#ifSignature reflection}}
11 | {{#if reflection.parent.parent.url}}
12 | {{reflection.parent.parent.name}}
13 | {{else}}
14 | {{reflection.parent.parent.name}}
15 | {{/if}}
16 | .
17 | {{#if reflection.parent.url}}
18 | {{reflection.parent.name}}
19 | {{else}}
20 | {{reflection.parent.name}}
21 | {{/if}}
22 | {{else}}
23 | {{#if reflection.parent.url}}
24 | {{reflection.parent.name}}
25 | {{else}}
26 | {{reflection.parent.name}}
27 | {{/if}}
28 | .
29 | {{#if reflection.url}}
30 | {{reflection.name}}
31 | {{else}}
32 | {{reflection.name}}
33 | {{/if}}
34 | {{/ifSignature}}
35 | {{else}}
36 | {{this}}
37 | {{/if}}
38 | {{/if}}
39 | {{else}}
40 | void
41 | {{/if}}
42 | {{/compact}}
--------------------------------------------------------------------------------
/src/default/partials/typeParameters.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#each typeParameters}}
3 |
4 | {{#compact}}
5 | {{name}}
6 | {{#if type}}
7 | :
8 | {{#with type}}{{> type}}{{/with}}
9 | {{/if}}
10 | {{/compact}}
11 | {{> comment}}
12 |
13 | {{/each}}
14 |
--------------------------------------------------------------------------------
/src/default/templates/index.hbs:
--------------------------------------------------------------------------------
1 |
2 | {{#markdown}}{{{model.readme}}}{{/markdown}}
3 |
--------------------------------------------------------------------------------
/src/default/templates/reflection.hbs:
--------------------------------------------------------------------------------
1 | {{#with model}}
2 | {{#if hasComment}}
3 |
6 | {{/if}}
7 | {{/with}}
8 |
9 | {{#if model.typeParameters}}
10 |
11 | Type parameters
12 | {{#with model}}{{> typeParameters}}{{/with}}
13 |
14 | {{/if}}
15 |
16 | {{#if model.typeHierarchy}}
17 |
18 | Hierarchy
19 | {{#with model.typeHierarchy}}{{> hierarchy}}{{/with}}
20 |
21 | {{/if}}
22 |
23 | {{#if model.implementedTypes}}
24 |
25 | Implements
26 |
27 | {{#each model.implementedTypes}}
28 | {{> type}}
29 | {{/each}}
30 |
31 |
32 | {{/if}}
33 |
34 | {{#if model.implementedBy}}
35 |
36 | Implemented by
37 |
38 | {{#each model.implementedBy}}
39 | {{> type}}
40 | {{/each}}
41 |
42 |
43 | {{/if}}
44 |
45 | {{#if model.signatures}}
46 |
47 | Callable
48 | {{#with model}}{{> member.signatures}}{{/with}}
49 |
50 | {{/if}}
51 |
52 | {{#if model.indexSignature}}
53 |
54 | Indexable
55 | {{#compact}}
56 | [
57 | {{#each model.indexSignature.parameters}}
58 | {{name}}: {{#with type}}{{>type}}{{/with}}
59 | {{/each}}
60 | ]:
61 | {{#with model.indexSignature.type}}{{>type}}{{/with}}
62 | {{/compact}}
63 |
64 | {{#with model.indexSignature}}
65 | {{> comment}}
66 | {{/with}}
67 |
68 | {{#if model.indexSignature.type.declaration}}
69 | {{#with model.indexSignature.type.declaration}}
70 | {{> parameter}}
71 | {{/with}}
72 | {{/if}}
73 |
74 | {{/if}}
75 |
76 | {{#with model}}
77 | {{> index}}
78 | {{> members}}
79 | {{/with}}
--------------------------------------------------------------------------------
/src/minimal/layouts/default.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{model.name}} | {{project.name}}
7 |
8 |
9 |
10 |
11 |
12 |
13 | {{> header}}
14 |
15 |
16 |
17 | {{#each toc.children}}
18 | {{> toc}}
19 | {{/each}}
20 |
21 |
22 |
23 |
24 |
25 | {{#if model.readme}}
26 |
27 | {{#markdown}}{{{model.readme}}}{{/markdown}}
28 |
29 | {{/if}}
30 |
31 | {{{contents}}}
32 | {{> footer}}
33 |
34 |
35 |
36 |
39 |
40 | {{> analytics}}
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/minimal/partials/header.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/minimal/partials/member.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{#if name}}
4 | {{#each flags}}{{this}} {{/each}}{{{wbr name}}}
5 | {{/if}}
6 |
7 | {{#if signatures}}
8 | {{> member.signatures}}
9 | {{else}}
10 | {{> member.declaration}}
11 | {{/if}}
12 |
13 | {{#unless isContainer}}
14 | {{#each groups}}
15 | {{#each children}}
16 | {{#unless hasOwnDocument}}
17 | {{> member}}
18 | {{/unless}}
19 | {{/each}}
20 | {{/each}}
21 | {{/unless}}
22 |
23 |
24 | {{#if isContainer}}
25 | {{> index}}
26 | {{> members}}
27 | {{/if}}
28 |
--------------------------------------------------------------------------------
/src/minimal/templates/index.hbs:
--------------------------------------------------------------------------------
1 | {{#with model}}
2 | {{> comment}}
3 | {{/with}}
4 |
5 | {{#if model.typeHierarchy}}
6 |
7 | Hierarchy
8 | {{#with model.typeHierarchy}}{{> hierarchy}}{{/with}}
9 |
10 | {{/if}}
11 |
12 | {{#with model}}
13 |
14 | {{> index}}
15 | {{> members}}
16 | {{/with}}
--------------------------------------------------------------------------------
/src/plugin.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/millsp/eledoc/68e136cfa5c8555d07864875b140e21080c580cb/src/plugin.js
--------------------------------------------------------------------------------
{{tagName}}
7 |{{#markdown}}{{{text}}}{{/markdown}}
8 | {{/each}} 9 | {{/if}} 10 |