├── .all-contributorsrc ├── .editorconfig ├── .github ├── CODEOWNERS └── workflows │ ├── gh-pages.yml │ ├── preview-build.yml │ ├── preview-deploy.yml │ └── preview-start.yml ├── .gitignore ├── .vscode └── settings.json ├── HWB_NEW ├── BaldmanShooting │ ├── game.css │ ├── game.js │ └── index.html └── KillTheZombie │ ├── game.css │ ├── game.js │ └── index.html ├── LICENCE ├── README.md ├── action ├── detail.html ├── index.html └── play.html ├── ads.txt ├── beauty ├── detail.html ├── index.html └── play.html ├── best ├── detail.html ├── index.html └── play.html ├── game ├── detail.html ├── index.html ├── play.html └── type.html ├── game001 ├── detail.html ├── index.html ├── play.html └── type.html ├── game002 ├── detail.html ├── index.html ├── play.html └── type.html ├── game003 ├── detail.html ├── index.html ├── play.html └── type.html ├── googled29fba422c357ff8.html ├── new ├── detail.html ├── index.html └── play.html ├── package.json ├── puzzle ├── detail.html ├── index.html └── play.html ├── robots.txt ├── sitemap.js ├── sports ├── detail.html ├── index.html └── play.html ├── theme ├── assets │ ├── css │ │ ├── _constants.sass │ │ ├── _theme.scss │ │ ├── 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 │ │ │ └── _normalize.sass │ ├── images │ │ ├── icons.png │ │ ├── icons.psd │ │ ├── icons@2x.png │ │ ├── widgets.png │ │ ├── widgets.psd │ │ └── widgets@2x.png │ └── js │ │ └── src │ │ ├── bootstrap.ts │ │ └── typedoc │ │ ├── Application.ts │ │ ├── Component.ts │ │ ├── EventTarget.ts │ │ ├── components │ │ ├── Filter.ts │ │ ├── MenuHighlight.ts │ │ ├── Search.ts │ │ ├── Signature.ts │ │ └── Toggle.ts │ │ ├── services │ │ └── Viewport.ts │ │ └── utils │ │ ├── debounce.ts │ │ ├── pointer.ts │ │ └── trottle.ts ├── layouts │ └── default.hbs ├── partials │ ├── analytics.hbs │ ├── breadcrumb.hbs │ ├── comment.hbs │ ├── footer.hbs │ ├── header.hbs │ ├── hierarchy.hbs │ ├── index.hbs │ ├── member.declaration.hbs │ ├── member.getterSetter.hbs │ ├── member.hbs │ ├── member.reference.hbs │ ├── member.signature.body.hbs │ ├── member.signature.title.hbs │ ├── member.signatures.hbs │ ├── member.sources.hbs │ ├── members.group.hbs │ ├── members.hbs │ ├── navigation.hbs │ ├── parameter.hbs │ ├── toc.hbs │ ├── toc.root.hbs │ ├── type.hbs │ ├── typeAndParent.hbs │ └── typeParameters.hbs └── templates │ ├── index.hbs │ └── reflection.hbs ├── tsconfig.json ├── typedoc.json ├── vscode.d.ts └── yarn.lock /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "vscode-api-cn", 3 | "projectOwner": "vscode-cn", 4 | "repoType": "github", 5 | "repoHost": "https://github.com", 6 | "files": [ 7 | "README.md" 8 | ], 9 | "imageSize": 100, 10 | "commit": true, 11 | "commitConvention": "none", 12 | "contributors": [ 13 | { 14 | "login": "youngjuning", 15 | "name": "youngjuning", 16 | "avatar_url": "https://avatars.githubusercontent.com/u/13204332?v=4", 17 | "profile": "https://github.com/youngjuning", 18 | "contributions": [ 19 | "code", 20 | "maintenance", 21 | "translation", 22 | "doc", 23 | "ideas" 24 | ] 25 | }, 26 | { 27 | "login": "Imchenlong", 28 | "name": "Lance Chen", 29 | "avatar_url": "https://avatars.githubusercontent.com/u/13520451?v=4", 30 | "profile": "https://github.com/Imchenlong", 31 | "contributions": [ 32 | "translation", 33 | "maintenance", 34 | "code" 35 | ] 36 | }, 37 | { 38 | "login": "pan463859", 39 | "name": "潘小安", 40 | "avatar_url": "https://avatars.githubusercontent.com/u/32640880?v=4", 41 | "profile": "https://github.com/pan463859", 42 | "contributions": [ 43 | "translation", 44 | "maintenance", 45 | "ideas", 46 | "code" 47 | ] 48 | }, 49 | { 50 | "login": "sherry-zxy", 51 | "name": "Xiyuan Zheng", 52 | "avatar_url": "https://avatars.githubusercontent.com/u/36014195?v=4", 53 | "profile": "https://github.com/sherry-zxy", 54 | "contributions": [ 55 | "translation", 56 | "code" 57 | ] 58 | }, 59 | { 60 | "login": "liuqh0609", 61 | "name": "Liuqh233", 62 | "avatar_url": "https://avatars.githubusercontent.com/u/43341115?v=4", 63 | "profile": "https://juejin.cn/user/3993025017037309/posts", 64 | "contributions": [ 65 | "translation", 66 | "code" 67 | ] 68 | }, 69 | { 70 | "login": "cxk0831", 71 | "name": "竹雨", 72 | "avatar_url": "https://avatars.githubusercontent.com/u/34495411?v=4", 73 | "profile": "https://github.com/cxk0831", 74 | "contributions": [ 75 | "translation", 76 | "code" 77 | ] 78 | }, 79 | { 80 | "login": "yangyang825", 81 | "name": "yangyang825", 82 | "avatar_url": "https://avatars.githubusercontent.com/u/84166052?v=4", 83 | "profile": "https://github.com/yangyang825", 84 | "contributions": [ 85 | "translation" 86 | ] 87 | } 88 | ], 89 | "contributorsPerLine": 6, 90 | "skipCi": true 91 | } 92 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Tab indentation 7 | [*] 8 | indent_style = tab 9 | trim_trailing_whitespace = true 10 | 11 | # The indent size used in the `package.json` file cannot be changed 12 | # https://github.com/npm/npm/pull/3180#issuecomment-16336516 13 | [{*.yml,*.yaml,package.json}] 14 | indent_style = space 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This is a comment. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # These owners will be the default owners for everything in 5 | # the repo. Unless a later match takes precedence, 6 | # @youngjuning will be requested for review when someone opens a pull request. 7 | * @youngjuning 8 | -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | on: 3 | push: 4 | branches: 5 | - main # default branch 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - run: yarn install 12 | - run: yarn build 13 | - run: mv googled29fba422c357ff8.html docs/ 14 | - run: mv robots.txt docs/ 15 | - run: mv ads.txt docs/ 16 | - run: mv game/ docs/ 17 | - run: mv game001/ docs/ 18 | - run: mv game002/ docs/ 19 | - run: mv game003/ docs/ 20 | - run: mv puzzle/ docs/ 21 | - run: mv sports/ docs/ 22 | - run: mv best/ docs/ 23 | - run: mv beauty/ docs/ 24 | - run: mv new/ docs/ 25 | - run: mv action/ docs/ 26 | - run: mv HWB_NEW/ docs/ 27 | - run: node sitemap.js 28 | - name: Deploy 29 | uses: peaceiris/actions-gh-pages@v3 30 | with: 31 | github_token: ${{ secrets.GITHUB_TOKEN }} 32 | publish_dir: ./docs 33 | cname: vscode-api-cn.js.org 34 | -------------------------------------------------------------------------------- /.github/workflows/preview-build.yml: -------------------------------------------------------------------------------- 1 | name: Preview Build 2 | 3 | on: 4 | pull_request: 5 | types: [opened, synchronize, reopened] 6 | 7 | jobs: 8 | build-preview: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - uses: actions/checkout@v2 13 | with: 14 | ref: ${{ github.event.pull_request.head.sha }} 15 | - uses: c-hive/gha-yarn-cache@v2 16 | 17 | - name: build 18 | run: | 19 | yarn 20 | NODE_OPTIONS='--max-old-space-size=4096' yarn build 21 | 22 | - run: | 23 | zip -r docs.zip docs 24 | 25 | - name: upload dist artifact 26 | uses: actions/upload-artifact@v2 27 | with: 28 | name: docs 29 | path: docs.zip 30 | retention-days: 5 31 | 32 | - name: Save PR number 33 | if: ${{ always() }} 34 | run: echo ${{ github.event.number }} > ./pr-id.txt 35 | 36 | - name: Upload PR number 37 | if: ${{ always() }} 38 | uses: actions/upload-artifact@v2 39 | with: 40 | name: pr 41 | path: ./pr-id.txt 42 | -------------------------------------------------------------------------------- /.github/workflows/preview-deploy.yml: -------------------------------------------------------------------------------- 1 | name: Preview Deploy 2 | 3 | on: 4 | workflow_run: 5 | workflows: ["Preview Build"] 6 | types: 7 | - completed 8 | 9 | jobs: 10 | success: 11 | runs-on: ubuntu-latest 12 | if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' 13 | steps: 14 | - name: download pr artifact 15 | uses: dawidd6/action-download-artifact@v2 16 | with: 17 | workflow: ${{ github.event.workflow_run.workflow_id }} 18 | name: pr 19 | 20 | - name: save PR id 21 | id: pr 22 | run: echo "::set-output name=id::$( 45 | 46 | body-include: '' 47 | number: ${{ steps.pr.outputs.id }} 48 | - run: | 49 | rm -rf docs/ 50 | - name: The job failed 51 | if: ${{ failure() }} 52 | uses: actions-cool/maintain-one-comment@v1.1.0 53 | with: 54 | token: ${{ secrets.GITHUB_TOKEN }} 55 | body: | 56 | 😭 Deploy PR Preview failed. 57 | 58 | 59 | body-include: '' 60 | number: ${{ steps.pr.outputs.id }} 61 | 62 | failed: 63 | runs-on: ubuntu-latest 64 | if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure' 65 | steps: 66 | - name: download pr artifact 67 | uses: dawidd6/action-download-artifact@v2 68 | with: 69 | workflow: ${{ github.event.workflow_run.workflow_id }} 70 | name: pr 71 | 72 | - name: save PR id 73 | id: pr 74 | run: echo "::set-output name=id::$( 83 | 84 | body-include: '' 85 | number: ${{ steps.pr.outputs.id }} 86 | -------------------------------------------------------------------------------- /.github/workflows/preview-start.yml: -------------------------------------------------------------------------------- 1 | name: Preview Start 2 | 3 | on: pull_request_target 4 | 5 | jobs: 6 | preview: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: create 10 | uses: actions-cool/maintain-one-comment@v1.1.0 11 | with: 12 | token: ${{ secrets.GITHUB_TOKEN }} 13 | body: | 14 | ⚡️ Deploying PR Preview... 15 | 16 | 17 | body-include: '' 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and not Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # Stores VSCode versions used for testing VSCode extensions 107 | .vscode-test 108 | 109 | docs/ 110 | 111 | .DS_Store 112 | 113 | .idea 114 | .history -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.fixAll.eslint": "never" 4 | } 5 | } -------------------------------------------------------------------------------- /HWB_NEW/BaldmanShooting/game.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";body,html{background:#000;height:100%;margin:0;padding:0;width:100%} 2 | @keyframes rotate{from{transform:rotate(0deg)} 3 | to{transform:rotate(360deg)} 4 | }#circularLoad{background-color:beige;background:linear-gradient(-45deg,#ee7752,#e73c7e,#23a6d5,#23d5ab) 0 0/300% 300%;position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;display:flex;justify-content:center;align-items:center;z-index:101} 5 | #icon{width:10rem;height:10rem;border-radius:50%;position:absolute;margin-top:-50px} 6 | #loader{margin-top:-50px;border-width:0.35rem;border-style:solid;border-color:#026dfa #00ffda #d300ff #00ff05;border-radius:50%;display:block;width:10rem;height:10rem;animation:rotate 1.2s linear infinite} 7 | #tips{position:absolute;margin-top:240px;font-size:20px;font-weight:bold;color:white;letter-spacing:10px} 8 | #game_iframe{display:block;overflow:hidden;background-color:#000;height:100%;width:100%} 9 | #game_banner{display:flex;position:fixed;bottom:0px;background:black;ustify-content:center;text-align:center;width:100%} 10 | #banner{justify-content:center;text-align:center;margin:0px auto;width:100%;display:flex !important} 11 | #tip{width:100%;height:100%;top:0px;position:absolute;z-index:5;display:none;background-color:rgba(0,0,0,0.7)} 12 | #tip-txt{font-weight:bold;position:absolute;z-index:15;//background-color:#000000aa;//box-shadow:0 0 0 2px gray;background-color:rgba(255,255,255,0.67);box-shadow:0 0 0 2px #4b8a2e;border-radius:10px;-moz-border-right:10px;padding:5px 10px;left:50%;top:50%;color:#000000;//color:white;font-size:14px;width:75%;transform:translateY(-50%);transform:translateX(-50%);text-align:center} -------------------------------------------------------------------------------- /HWB_NEW/BaldmanShooting/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Free Web Games for instant play--BaldmanShooting 6 | 7 | 8 | 9 | 10 | 11 | 14 | 19 | 20 | 21 | 28 | 29 | 30 | 31 |
32 | 33 |
34 |
35 |

LOADING

36 |
37 |
38 | 39 |
40 |
41 | 42 |
43 |
44 | 47 |
48 |
49 |
tip
50 |
51 | 52 | 53 | -------------------------------------------------------------------------------- /HWB_NEW/KillTheZombie/game.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";body,html{background:#000;height:100%;margin:0;padding:0;width:100%} 2 | @keyframes rotate{from{transform:rotate(0deg)} 3 | to{transform:rotate(360deg)} 4 | }#circularLoad{background-color:beige;background:linear-gradient(-45deg,#ee7752,#e73c7e,#23a6d5,#23d5ab) 0 0/300% 300%;position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;display:flex;justify-content:center;align-items:center;z-index:101} 5 | #icon{width:10rem;height:10rem;border-radius:50%;position:absolute;margin-top:-50px} 6 | #loader{margin-top:-50px;border-width:0.35rem;border-style:solid;border-color:#026dfa #00ffda #d300ff #00ff05;border-radius:50%;display:block;width:10rem;height:10rem;animation:rotate 1.2s linear infinite} 7 | #tips{position:absolute;margin-top:240px;font-size:20px;font-weight:bold;color:white;letter-spacing:10px} 8 | #game_iframe{display:block;overflow:hidden;background-color:#000;height:100%;width:100%} 9 | #game_banner{display:flex;position:fixed;bottom:0px;background:black;ustify-content:center;text-align:center;width:100%} 10 | #banner{justify-content:center;text-align:center;margin:0px auto;width:100%;display:flex !important} 11 | #tip{width:100%;height:100%;top:0px;position:absolute;z-index:5;display:none;background-color:rgba(0,0,0,0.7)} 12 | #tip-txt{font-weight:bold;position:absolute;z-index:15;//background-color:#000000aa;//box-shadow:0 0 0 2px gray;background-color:rgba(255,255,255,0.67);box-shadow:0 0 0 2px #4b8a2e;border-radius:10px;-moz-border-right:10px;padding:5px 10px;left:50%;top:50%;color:#000000;//color:white;font-size:14px;width:75%;transform:translateY(-50%);transform:translateX(-50%);text-align:center} -------------------------------------------------------------------------------- /HWB_NEW/KillTheZombie/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Free Web Games for instant play--KillTheZombie 6 | 7 | 8 | 9 | 10 | 11 | 14 | 19 | 20 | 21 | 28 | 29 | 30 | 31 |
32 | 33 |
34 |
35 |

LOADING

36 |
37 |
38 | 39 |
40 |
41 | 42 |
43 |
44 | 47 |
48 |
49 |
tip
50 |
51 | 52 | 53 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 youngjuning 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | [![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square)](#contributors-) ![Github Stars](https://img.shields.io/github/stars/youngjuning/vscode-api-cn?style=social) 3 | 4 | 5 | VS Code API 是一系列你可以在 Visual Studio Code 扩展中调用的 JavaScript API。这个站点列出了扩展开发者可以使用的所有 VS Code API。中文程序员 vscode 插件开发必备站点。 6 | 7 | API 列表使用 Typedoc 从 [vscode.d.ts](https://github.com/youngjuning/vscode-api/blob/main/vscode.d.ts) 文件编译而来,如果 [vscode api](https://vscode-api.js.org) 有更新,我们会及时同步。 8 | 9 | ## 贡献指南 10 | 11 | 对 [vscode.d.ts](https://github.com/youngjuning/vscode-api-cn/blob/main/vscode.d.ts) 文件的注释进行翻译,然后提交 PR 即可。 12 | 13 | ### 本地预览 14 | 15 | 1. **安装依赖**:`yarn install` 16 | 2. **开启调试**:`yarn dev` 17 | 3. **开启服务**:`yarn start` 18 | 19 | ## 贡献者 ✨ 20 | 21 | 感谢这些优秀的人 ([emoji key](https://allcontributors.org/docs/en/emoji-key)): 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
紫升
youngjuning

💻 🚧 🌍 📖 🤔
Imchenlong
Lance Chen

🌍 🚧 💻
pan463859
潘小安

🌍 🚧 🤔 💻
sherry-zxy
Xiyuan Zheng

🌍 💻

Liuqh233

🌍 💻
竹雨
竹雨

🌍 💻
yangyang825
yangyang825

🌍
37 | 38 | 39 | 40 | 41 | 42 | 43 | 本项目遵循 [all-contributors](https://github.com/all-contributors/all-contributors) 规范。欢迎任何形式的贡献! 44 | -------------------------------------------------------------------------------- /action/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | Coki Action Games 11 | 12 | 14 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 32 | 33 | 34 | 35 |
36 | 37 |
38 |
39 |
40 | 42 | 44 |
45 |
46 |
47 | 48 | 56 |
57 |
58 |
59 | 60 | 66 | 69 |
70 |
71 |
72 |
73 |
74 |

{{title}}

75 |
76 |
77 |
78 |
79 | 80 | 82 | 85 |
86 | 112 |
113 |
114 |
115 |
116 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 186 | 231 | 232 | -------------------------------------------------------------------------------- /action/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /ads.txt: -------------------------------------------------------------------------------- 1 | google.com, pub-7962287588031867, DIRECT, f08c47fec0942fa0 2 | -------------------------------------------------------------------------------- /beauty/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /best/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /game/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /game001/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /game002/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /game003/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /googled29fba422c357ff8.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googled29fba422c357ff8.html -------------------------------------------------------------------------------- /new/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | Coki New Games 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 29 | 30 | 31 | 32 |
33 | 34 |
35 |
36 |
37 | 39 | 41 |
42 |
43 |
44 | 45 | 53 |
54 |
55 |
56 | 57 | 59 | 62 |
63 |
64 |
65 |
66 |
67 |

{{title}}

68 |
69 |
70 |
71 |
72 | 73 | 75 | 78 |
79 | 105 |
106 |
107 |
108 |
109 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 179 | 224 | 225 | -------------------------------------------------------------------------------- /new/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-api-cn", 3 | "description": "VS Code API 是一系列你可以在 Visual Studio Code 扩展中调用的 JavaScript API。这个站点列出了所有扩展作者可以使用的 VS Code API。", 4 | "license": "MIT", 5 | "scripts": { 6 | "build": "typedoc", 7 | "dev": "onchange -i 'vscode.d.ts' 'typedoc.json' 'README.md' 'theme/**/*' -- yarn build", 8 | "start": "serve docs/", 9 | "contributors:add": "all-contributors add", 10 | "contributors:generate": "all-contributors generate", 11 | "contributors:check": "all-contributors check" 12 | }, 13 | "devDependencies": { 14 | "onchange": "^7.1.0", 15 | "serve": "^12.0.0", 16 | "typedoc": "^0.21.5", 17 | "typescript": "^4.3.5" 18 | }, 19 | "dependencies": { 20 | "exec-sh": "^0.4.0", 21 | "recursive-readdir": "^2.2.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /puzzle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | Coki Puzzle Games 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 29 | 30 | 31 | 32 |
33 | 34 |
35 |
36 |
37 | 39 | 41 |
42 |
43 |
44 | 45 | 53 |
54 |
55 |
56 | 57 | 59 | 62 |
63 |
64 |
65 |
66 |
67 |

{{title}}

68 |
69 |
70 |
71 |
72 | 73 | 75 | 78 |
79 | 105 |
106 |
107 |
108 |
109 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 179 | 224 | 225 | -------------------------------------------------------------------------------- /puzzle/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://vscode-api-cn.js.org/sitemap.xml 5 | -------------------------------------------------------------------------------- /sitemap.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const recursive = require("recursive-readdir"); 3 | const execSh = require("exec-sh"); 4 | 5 | (async () =>{ 6 | if (!fs.existsSync("./docs")) { 7 | return; 8 | } 9 | const files = await recursive("./docs"); 10 | const urls = files.filter(file => file.endsWith('.html')).map(file => { 11 | return file.replace('docs/', 'https://vscode-api-cn.js.org/') 12 | }) 13 | fs.writeFileSync("./docs/urls.txt", urls.join("\n")); 14 | execSh("npx sitemap < ./docs/urls.txt > ./docs/sitemap.xml"); 15 | })() 16 | -------------------------------------------------------------------------------- /sports/play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Coki H5 Games 11 | 12 | 13 | 14 | 21 | 22 | 23 |
24 |
25 | 26 | 32 | 35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 | 81 | 82 | 83 | 112 | 113 | -------------------------------------------------------------------------------- /theme/assets/css/_constants.sass: -------------------------------------------------------------------------------- 1 | // Fonts 2 | // 3 | $FONT_FAMILY: 'Segoe UI', sans-serif 4 | $FONT_FAMILY_MONO: Menlo, Monaco, Consolas, 'Courier New', monospace 5 | 6 | $FONT_SIZE: 16px 7 | $FONT_SIZE_MONO: 14px 8 | 9 | $LINE_HEIGHT: 1.333em 10 | 11 | $TOOLBAR_HEIGHT: 40px 12 | -------------------------------------------------------------------------------- /theme/assets/css/_theme.scss: -------------------------------------------------------------------------------- 1 | // Default light theme 2 | :root { 3 | --color-background: #fdfdfd; 4 | --color-text: #222; 5 | --color-text-aside: #707070; 6 | --color-link: #4da6ff; 7 | 8 | --color-menu-divider: #eee; 9 | --color-menu-divider-focus: #000; 10 | --color-menu-label: #707070; 11 | 12 | --color-panel: #fff; 13 | --color-panel-divider: #eee; 14 | 15 | --color-comment-tag: #707070; 16 | --color-comment-tag-text: #fff; 17 | 18 | --color-code-background: rgba(0, 0, 0, 0.04); 19 | 20 | --color-ts: #9600ff; 21 | --color-ts-interface: #647f1b; 22 | --color-ts-enum: #937210; 23 | --color-ts-class: #0672de; 24 | --color-ts-private: #707070; 25 | 26 | --color-toolbar: #fff; 27 | --color-toolbar-text: #333; 28 | } 29 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_comment.sass: -------------------------------------------------------------------------------- 1 | // Displays all regular comment tags 2 | // 3 | //
4 | //
see
5 | //

Dispatcher.EVENT_BEGIN

6 | //
see
7 | //

Dispatcher.EVENT_BEGIN_RESOLVE

8 | //
see
9 | //

Dispatcher.EVENT_END_RESOLVE

10 | //
11 | // 12 | dl.tsd-comment-tags 13 | overflow: hidden 14 | 15 | dt 16 | float: left 17 | padding: 1px 5px 18 | margin: 0 10px 0 0 19 | border-radius: 4px 20 | border: 1px solid var(--color-comment-tag) 21 | color: var(--color-comment-tag) 22 | font-size: 0.8em 23 | font-weight: normal 24 | 25 | dd 26 | margin: 0 0 10px 0 27 | 28 | &:before, &:after 29 | display: table 30 | content: " " 31 | pre, &:after 32 | clear: both 33 | 34 | p 35 | margin: 0 36 | 37 | // Special formatting for the main reflection on each page. 38 | // 39 | //
40 | //
41 | //

The default TypeDoc main application class.

42 | //

This class holds the two main components of TypeDoc, the Dispatcher and the Renderer.

43 | //
44 | //
45 | // 46 | .tsd-panel.tsd-comment .lead 47 | font-size: 1.1em 48 | line-height: $LINE_HEIGHT 49 | margin-bottom: 2em 50 | 51 | &:last-child 52 | margin-bottom: 0 53 | -------------------------------------------------------------------------------- /theme/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-externals .tsd-is-external 15 | display: none 16 | 17 | // Filter Buttons in the toolbar 18 | // 19 | #tsd-filter 20 | position: relative 21 | display: inline-block 22 | height: $TOOLBAR_HEIGHT 23 | vertical-align: bottom 24 | 25 | .no-filter & 26 | display: none 27 | 28 | .tsd-filter-group 29 | display: inline-block 30 | height: $TOOLBAR_HEIGHT 31 | vertical-align: bottom 32 | white-space: nowrap 33 | 34 | input 35 | display: none 36 | 37 | +size-xs-sm 38 | .tsd-filter-group 39 | display: block 40 | position: absolute 41 | top: $TOOLBAR_HEIGHT 42 | right: 20px 43 | height: auto 44 | background-color: var(--color-panel) 45 | visibility: hidden 46 | transform: translate(50%,0) 47 | box-shadow: 0 0 4px rgba(#000, 0.25) 48 | 49 | .has-options & 50 | visibility: visible 51 | 52 | .to-has-options & 53 | animation: fade-in 0.2s 54 | 55 | .from-has-options & 56 | animation: fade-out 0.2s 57 | 58 | label, 59 | .tsd-select 60 | display: block 61 | padding-right: 20px 62 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_footer.sass: -------------------------------------------------------------------------------- 1 | footer 2 | border-top: 1px solid var(--color-panel-divider) 3 | background-color: var(--color-panel) 4 | 5 | &.with-border-bottom 6 | border-bottom: 1px solid var(--color-panel-divider) 7 | 8 | .tsd-legend-group 9 | font-size: 0 10 | 11 | .tsd-legend 12 | display: inline-block 13 | width: 25% 14 | padding: 0 15 | font-size: $FONT_SIZE 16 | list-style: none 17 | line-height: $LINE_HEIGHT 18 | vertical-align: top 19 | 20 | +size-xs-sm 21 | width: 50% 22 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_hierarchy.sass: -------------------------------------------------------------------------------- 1 | // Displays the type hierarchy 2 | // 3 | // 17 | // 18 | .tsd-hierarchy 19 | list-style: square 20 | padding: 0 0 0 20px 21 | margin: 0 22 | 23 | .target 24 | font-weight: bold 25 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_images.sass: -------------------------------------------------------------------------------- 1 | // fixes issue with images in readme 2 | img 3 | max-width: 100% 4 | -------------------------------------------------------------------------------- /theme/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 | h3 31 | @extend h4 32 | margin: 0 -20px 10px -20px 33 | padding: 0 20px 10px 20px 34 | border-bottom: 1px solid var(--color-panel-divider) 35 | 36 | ul.tsd-index-list 37 | +vendors(column-count, 3) 38 | +vendors(column-gap, 20px) 39 | padding: 0 40 | list-style: none 41 | line-height: $LINE_HEIGHT 42 | 43 | +size-xs-sm 44 | +vendors(column-count, 1) 45 | 46 | +size-md 47 | +vendors(column-count, 2) 48 | 49 | li 50 | +vendors(page-break-inside, avoid) 51 | 52 | a, 53 | .tsd-parent-kind-module a 54 | color: var(--color-ts) 55 | 56 | .tsd-parent-kind-interface a 57 | color: var(--color-ts-interface) 58 | 59 | .tsd-parent-kind-enum a 60 | color: var(--color-ts-enum) 61 | 62 | .tsd-parent-kind-class a 63 | color: var(--color-ts-class) 64 | 65 | .tsd-kind-module a 66 | color: var(--color-ts) 67 | 68 | .tsd-kind-interface a 69 | color: var(--color-ts-interface) 70 | 71 | .tsd-kind-enum a 72 | color: var(--color-ts-enum) 73 | 74 | .tsd-kind-class a 75 | color: var(--color-ts-class) 76 | 77 | .tsd-is-private a 78 | color: var(--color-ts-private) 79 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_member.sass: -------------------------------------------------------------------------------- 1 | .tsd-flag 2 | display: inline-block 3 | padding: 1px 5px 4 | border-radius: 4px 5 | color: var(--color-comment-tag-text) 6 | background-color: var(--color-comment-tag) 7 | text-indent: 0 8 | font-size: $FONT_SIZE_MONO 9 | font-weight: normal 10 | 11 | .tsd-anchor 12 | position: absolute 13 | top: -100px 14 | 15 | .tsd-member 16 | position: relative 17 | 18 | .tsd-anchor + h3 19 | margin-top: 0 20 | margin-bottom: 0 21 | border-bottom: none 22 | 23 | a[data-tsd-kind] 24 | color: var(--color-ts) 25 | 26 | a[data-tsd-kind="Interface"] 27 | color: var(--color-ts-interface) 28 | 29 | a[data-tsd-kind="Enum"] 30 | color: var(--color-ts-enum) 31 | 32 | a[data-tsd-kind="Class"] 33 | color: var(--color-ts-class) 34 | 35 | a[data-tsd-kind="Private"] 36 | color: var(--color-ts-private) 37 | -------------------------------------------------------------------------------- /theme/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 | padding-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 | margin: 0 0 0 40px 17 | 18 | a 19 | display: block 20 | padding-top: 2px 21 | padding-bottom: 2px 22 | border-left: 2px solid transparent 23 | color: var(--color-text) 24 | text-decoration: none 25 | transition: border-left-color 0.1s 26 | 27 | &:hover 28 | text-decoration: underline 29 | 30 | ul 31 | margin: 0 32 | padding: 0 33 | list-style: none 34 | 35 | li 36 | padding: 0 37 | 38 | // Primary part of the navigation containing the available modules. 39 | // 40 | // 53 | // 54 | .tsd-navigation.primary 55 | padding-bottom: 40px 56 | 57 | a 58 | display: block 59 | padding-top: 6px 60 | padding-bottom: 6px 61 | 62 | ul 63 | +INDENTS(6, 5, 20) 64 | 65 | > ul 66 | border-bottom: 1px solid var(--color-panel-divider) 67 | 68 | li 69 | border-top: 1px solid var(--color-panel-divider) 70 | 71 | &.current > a 72 | font-weight: bold 73 | 74 | &.label span 75 | display: block 76 | padding: 20px 0 6px 5px 77 | color: var(--color-menu-label) 78 | 79 | &.globals + li > span, 80 | &.globals + li > a 81 | padding-top: 20px 82 | 83 | // Secondary part of the navigation containing the table of contents 84 | // of the current module. 85 | // Can be made sticky by `typedoc.MenuSticky` and will highlight current sticky with `typedoc.MenuHighlight`. 86 | // 87 | // 109 | // 110 | .tsd-navigation.secondary 111 | max-height: calc(100vh - 1rem - #{$TOOLBAR_HEIGHT}) 112 | overflow: auto 113 | position: -webkit-sticky 114 | position: sticky 115 | top: calc(.5rem + #{$TOOLBAR_HEIGHT}) 116 | transition: .3s 117 | 118 | &.tsd-navigation--toolbar-hide 119 | max-height: calc(100vh - 1rem) 120 | top: .5rem 121 | 122 | ul 123 | +INDENTS(6, 25, 20) 124 | transition: opacity 0.2s 125 | 126 | &.current a 127 | border-left-color: var(--color-panel-divider) 128 | 129 | li.focus > a, 130 | ul.current li.focus > a 131 | border-left-color: var(--color-menu-divider-focus) 132 | 133 | li.current 134 | margin-top: 20px 135 | margin-bottom: 20px 136 | border-left-color: var(--color-panel-divider) 137 | 138 | > a 139 | font-weight: bold 140 | 141 | // Sticky menu setup 142 | // 143 | .menu-sticky-wrap 144 | +size-md-lg 145 | position: static 146 | -------------------------------------------------------------------------------- /theme/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 | //
5 | //

Eirmod tempor invidunt

6 | //

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

7 | //
8 | // 9 | .tsd-panel 10 | @extend %prevent-children-margin 11 | margin: 20px 0 12 | padding: 20px 13 | background-color: var(--color-panel) 14 | box-shadow: 0 0 4px rgba(#000, 0.25) 15 | 16 | &:empty 17 | display: none 18 | 19 | > h1, > h2, > h3 20 | margin: 1.5em -20px 10px -20px 21 | padding: 0 20px 10px 20px 22 | border-bottom: 1px solid var(--color-panel-divider) 23 | 24 | &.tsd-before-signature 25 | margin-bottom: 0 26 | border-bottom: 0 27 | 28 | table 29 | display: block 30 | width: 100% 31 | overflow: auto 32 | margin-top: 10px 33 | word-break: normal 34 | word-break: keep-all 35 | 36 | th 37 | font-weight: bold 38 | 39 | th, td 40 | padding: 6px 13px 41 | border: 1px solid #ddd 42 | 43 | tr 44 | background-color: #fff 45 | border-top: 1px solid #ccc 46 | 47 | &:nth-child(2n) 48 | background-color: #f8f8f8 49 | 50 | // Holds a series of panels with an optional heading. 51 | // 52 | //
53 | //

Consetetur sadipscing elitr

54 | //
55 | //

Eirmod tempor invidunt

56 | //

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

57 | //
58 | //
59 | //

Eirmod tempor invidunt

60 | //

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

61 | //
62 | //
63 | // 64 | .tsd-panel-group 65 | margin: 60px 0 66 | 67 | > h1, > h2, > h3 68 | padding-left: 20px 69 | padding-right: 20px 70 | -------------------------------------------------------------------------------- /theme/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 | 8 | .field 9 | position: absolute 10 | left: 0 11 | top: 0 12 | right: 40px 13 | height: 40px 14 | 15 | input 16 | box-sizing: border-box 17 | position: relative 18 | top: -50px 19 | z-index: 1 20 | width: 100% 21 | padding: 0 10px 22 | opacity: 0 23 | outline: 0 24 | border: 0 25 | background: transparent 26 | color: var(--color-text) 27 | 28 | label 29 | position: absolute 30 | overflow: hidden 31 | right: -40px 32 | 33 | .field input, 34 | .title 35 | transition: opacity 0.2s 36 | 37 | .results 38 | position: absolute 39 | visibility: hidden 40 | top: 40px 41 | width: 100% 42 | margin: 0 43 | padding: 0 44 | list-style: none 45 | box-shadow: 0 0 4px rgba(#000, 0.25) 46 | 47 | li 48 | padding: 0 10px 49 | background-color: var(--color-background) 50 | 51 | li:nth-child(even) 52 | background-color: var(--color-panel) 53 | 54 | li.state 55 | display: none 56 | 57 | li.current, 58 | li:hover 59 | background-color: var(--color-panel-divider) 60 | 61 | a 62 | display: block 63 | 64 | &:before 65 | top: 10px 66 | 67 | span.parent 68 | color: var(--color-text-aside) 69 | font-weight: normal 70 | 71 | &.has-focus 72 | background-color: var(--color-panel-divider) 73 | 74 | .field input 75 | top: 0 76 | opacity: 1 77 | 78 | .title 79 | z-index: 0 80 | opacity: 0 81 | 82 | .results 83 | visibility: visible 84 | 85 | &.loading .results li.state.loading 86 | display: block 87 | 88 | &.failure .results li.state.failure 89 | display: block 90 | -------------------------------------------------------------------------------- /theme/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 | //
6 | //
7 | // getChildByName( 8 | // name: string 9 | // ): 10 | // DeclarationReflection 11 | //
12 | //
13 | // 14 | .tsd-signature 15 | margin: 0 0 1em 0 16 | padding: 10px 17 | border: 1px solid var(--color-panel-divider) 18 | font-family: $FONT_FAMILY_MONO 19 | font-size: $FONT_SIZE_MONO 20 | overflow-x: auto 21 | 22 | &.tsd-kind-icon 23 | padding-left: 30px 24 | 25 | &:before 26 | top: 10px 27 | left: 10px 28 | 29 | .tsd-panel > & 30 | margin-left: -20px 31 | margin-right: -20px 32 | border-width: 1px 0 33 | 34 | &.tsd-kind-icon 35 | padding-left: 40px 36 | 37 | &:before 38 | left: 20px 39 | 40 | .tsd-signature-symbol 41 | color: var(--color-text-aside) 42 | font-weight: normal 43 | 44 | .tsd-signature-type 45 | font-style: italic 46 | font-weight: normal 47 | 48 | // Displays a list of signatures. 49 | // Changes its appearance when directly placed inside a `tsd-panel`. 50 | // Made interactive by JavaScript at `typedoc.Signature`. 51 | // 52 | // 56 | // 57 | .tsd-signatures 58 | padding: 0 59 | margin: 0 0 1em 0 60 | border: 1px solid var(--color-panel-divider) 61 | 62 | .tsd-signature 63 | margin: 0 64 | border-width: 1px 0 0 0 65 | transition: background-color 0.1s 66 | 67 | &:first-child 68 | border-top-width: 0 69 | 70 | &.current 71 | background-color: var(--color-panel-divider) 72 | 73 | &.active > .tsd-signature 74 | cursor: pointer 75 | 76 | .tsd-panel > & 77 | margin-left: -20px 78 | margin-right: -20px 79 | border-width: 1px 0 80 | 81 | .tsd-signature.tsd-kind-icon 82 | padding-left: 40px 83 | 84 | &:before 85 | left: 20px 86 | 87 | .tsd-panel > a.anchor + & 88 | border-top-width: 0 89 | margin-top: -20px 90 | 91 | // Holds the descriptions related to a list of signatures. 92 | // Made interactive by JavaScript at `typedoc.Signature`. 93 | // 94 | // 102 | // 103 | ul.tsd-descriptions 104 | position: relative 105 | overflow: hidden 106 | padding: 0 107 | list-style: none 108 | 109 | > li 110 | @extend %prevent-children-margin 111 | 112 | &.active > .tsd-description 113 | display: none 114 | 115 | &.current 116 | display: block 117 | 118 | &.fade-in 119 | animation: fade-in-delayed 0.3s 120 | 121 | &.fade-out 122 | animation: fade-out-delayed 0.3s 123 | position: absolute 124 | display: block 125 | top: 0 126 | left: 0 127 | right: 0 128 | opacity: 0 129 | visibility: hidden 130 | 131 | h4 132 | font-size: $FONT_SIZE 133 | margin: 1em 0 0.5em 0 134 | 135 | ul.tsd-parameters, 136 | ul.tsd-type-parameters 137 | list-style: square 138 | margin: 0 139 | padding-left: 20px 140 | 141 | > li.tsd-parameter-signature 142 | list-style: none 143 | margin-left: -20px 144 | 145 | h5 146 | font-size: $FONT_SIZE 147 | margin: 1em 0 0.5em 0 148 | 149 | .tsd-comment 150 | margin-top: -0.5em 151 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_sources.sass: -------------------------------------------------------------------------------- 1 | // Displays the source and inheritance information 2 | // 3 | // 9 | // 10 | .tsd-sources 11 | font-size: $FONT_SIZE_MONO 12 | color: var(--color-text-aside) 13 | margin: 0 0 1em 0 14 | 15 | a 16 | color: var(--color-text-aside) 17 | text-decoration: underline 18 | 19 | ul, p 20 | margin: 0 !important 21 | 22 | ul 23 | list-style: none 24 | padding: 0 25 | -------------------------------------------------------------------------------- /theme/assets/css/elements/_toolbar.sass: -------------------------------------------------------------------------------- 1 | // Displays the toolbar at the top of the page. 2 | // 3 | //
4 | //
5 | //
6 | //
7 | // TypeDoc Documentation 8 | //
9 | //
10 | //
11 | //
12 | // 13 | .tsd-page-toolbar 14 | position: fixed 15 | z-index: 1 16 | top: 0 17 | left: 0 18 | width: 100% 19 | height: $TOOLBAR_HEIGHT 20 | color: var(--color-toolbar-text) 21 | background: var(--color-toolbar) 22 | border-bottom: 1px solid var(--color-panel-divider) 23 | transition: transform .3s linear 24 | 25 | a 26 | color: var(--color-toolbar-text) 27 | text-decoration: none 28 | 29 | &.title 30 | font-weight: bold 31 | 32 | &.title:hover 33 | text-decoration: underline 34 | 35 | .table-wrap 36 | display: table 37 | width: 100% 38 | height: $TOOLBAR_HEIGHT 39 | 40 | .table-cell 41 | display: table-cell 42 | position: relative 43 | white-space: nowrap 44 | line-height: $TOOLBAR_HEIGHT 45 | 46 | &:first-child 47 | width: 100% 48 | 49 | .tsd-page-toolbar--hide 50 | transform: translateY(-100%) 51 | 52 | %TSD_WIDGET_ICON 53 | &:before 54 | content: '' 55 | display: inline-block 56 | width: 40px 57 | height: 40px 58 | margin: 0 -8px 0 0 59 | background-image: url(../../images/widgets.png) 60 | background-repeat: no-repeat 61 | text-indent: -1024px 62 | vertical-align: bottom 63 | 64 | +retina 65 | background-image: url(../../images/widgets@2x.png) 66 | background-size: 320px 40px 67 | 68 | .tsd-widget 69 | @extend %TSD_WIDGET_ICON 70 | display: inline-block 71 | overflow: hidden 72 | opacity: 0.6 73 | height: $TOOLBAR_HEIGHT 74 | transition: opacity 0.1s, background-color 0.2s 75 | vertical-align: bottom 76 | cursor: pointer 77 | 78 | &:hover 79 | opacity: 0.8 80 | 81 | &.active 82 | opacity: 1 83 | background-color: var(--color-panel-divider) 84 | 85 | &.no-caption 86 | width: 40px 87 | 88 | &:before 89 | margin: 0 90 | 91 | &.search:before 92 | background-position: 0 0 93 | 94 | &.menu:before 95 | background-position: -40px 0 96 | 97 | &.options:before 98 | background-position: -80px 0 99 | 100 | &.options, 101 | &.menu 102 | display: none 103 | 104 | +size-xs-sm 105 | display: inline-block 106 | 107 | input[type=checkbox] + &:before 108 | background-position: -120px 0 109 | 110 | input[type=checkbox]:checked + &:before 111 | background-position: -160px 0 112 | 113 | .tsd-select 114 | position: relative 115 | display: inline-block 116 | height: $TOOLBAR_HEIGHT 117 | transition: opacity 0.1s, background-color 0.2s 118 | vertical-align: bottom 119 | cursor: pointer 120 | 121 | .tsd-select-label 122 | @extend %TSD_WIDGET_ICON 123 | opacity: 0.6 124 | transition: opacity 0.2s 125 | 126 | &:before 127 | background-position: -240px 0 128 | 129 | &.active 130 | .tsd-select-label 131 | opacity: 0.8 132 | 133 | .tsd-select-list 134 | visibility: visible 135 | opacity: 1 136 | transition-delay: 0s 137 | 138 | .tsd-select-list 139 | position: absolute 140 | visibility: hidden 141 | top: $TOOLBAR_HEIGHT 142 | left: 0 143 | margin: 0 144 | padding: 0 145 | opacity: 0 146 | list-style: none 147 | box-shadow: 0 0 4px rgba(#000, 0.25) 148 | transition: visibility 0s 0.2s, opacity 0.2s 149 | 150 | li 151 | @extend %TSD_WIDGET_ICON 152 | padding: 0 20px 0 0 153 | background-color: var(--color-background) 154 | 155 | &:before 156 | background-position: 40px 0 157 | 158 | &:nth-child(even) 159 | background-color: var(--color-panel) 160 | 161 | &:hover 162 | background-color: var(--color-panel-divider) 163 | 164 | &.selected:before 165 | background-position: -200px 0 166 | 167 | +size-xs-sm 168 | .tsd-select-list 169 | top: 0 170 | left: auto 171 | right: 100% 172 | margin-right: -5px 173 | 174 | .tsd-select-label:before 175 | background-position: -280px 0 176 | -------------------------------------------------------------------------------- /theme/assets/css/layouts/_default.sass: -------------------------------------------------------------------------------- 1 | html.default 2 | +size-md 3 | .col-content 4 | width: 72% 5 | 6 | .col-menu 7 | width: 28% 8 | 9 | .tsd-navigation 10 | padding-left: 10px 11 | 12 | +size-xs-sm 13 | .col-content 14 | float: none 15 | width: 100% 16 | 17 | .col-menu 18 | position: fixed !important 19 | overflow: auto 20 | -webkit-overflow-scrolling: touch 21 | z-index: 1024 22 | top: 0 !important 23 | bottom: 0 !important 24 | left: auto !important 25 | right: 0 !important 26 | width: 100% 27 | padding: 20px 20px 0 0 28 | max-width: 450px 29 | visibility: hidden 30 | background-color: var(--color-panel) 31 | transform: translate(100%,0) 32 | 33 | > *:last-child 34 | padding-bottom: 20px 35 | 36 | .overlay 37 | content: '' 38 | display: block 39 | position: fixed 40 | z-index: 1023 41 | top: 0 42 | left: 0 43 | right: 0 44 | bottom: 0 45 | background-color: rgba(#000, 0.75) 46 | visibility: hidden 47 | 48 | &.to-has-menu 49 | .overlay 50 | animation: fade-in 0.4s 51 | 52 | header, 53 | footer, 54 | .col-content 55 | animation: shift-to-left 0.4s 56 | 57 | .col-menu 58 | animation: pop-in-from-right 0.4s 59 | 60 | &.from-has-menu 61 | .overlay 62 | animation: fade-out 0.4s 63 | 64 | header, 65 | footer, 66 | .col-content 67 | animation: unshift-to-left 0.4s 68 | 69 | .col-menu 70 | animation: pop-out-to-right 0.4s 71 | 72 | &.has-menu 73 | body 74 | overflow: hidden 75 | 76 | .overlay 77 | visibility: visible 78 | 79 | header, 80 | footer, 81 | .col-content 82 | transform: translate(-25%, 0) 83 | 84 | .col-menu 85 | visibility: visible 86 | transform: translate(0,0) 87 | 88 | .tsd-page-title 89 | padding: 70px 0 20px 0 90 | margin: 0 0 40px 0 91 | background: var(--color-panel) 92 | box-shadow: 0 0 5px rgba(#000, 0.35) 93 | 94 | h1 95 | margin: 0 96 | 97 | .tsd-breadcrumb 98 | margin: 0 99 | padding: 0 100 | color: var(--color-text-aside) 101 | 102 | a 103 | color: var(--color-text-aside) 104 | text-decoration: none 105 | 106 | &:hover 107 | text-decoration: underline 108 | 109 | li 110 | display: inline 111 | 112 | &:after 113 | content: ' / ' 114 | -------------------------------------------------------------------------------- /theme/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 | box-sizing: border-box 17 | z-index: 1 18 | left: 0 19 | top: 40px 20 | bottom: 0 21 | width: 300px 22 | padding: 20px 23 | margin: 0 24 | 25 | .tsd-member .tsd-member 26 | margin-left: 0 27 | 28 | .tsd-page-toolbar 29 | position: fixed 30 | z-index: 2 31 | 32 | #tsd-filter .tsd-filter-group 33 | right: 0 34 | transform: none 35 | 36 | footer 37 | background-color: transparent 38 | 39 | .container 40 | padding: 0 41 | 42 | .tsd-generator 43 | padding: 0 44 | 45 | +size-xs-sm 46 | .tsd-navigation 47 | display: none 48 | .content-wrap 49 | padding-left: 0 50 | -------------------------------------------------------------------------------- /theme/assets/css/main.sass: -------------------------------------------------------------------------------- 1 | @import constants 2 | @import theme 3 | 4 | @import vendors/normalize 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 | -------------------------------------------------------------------------------- /theme/assets/css/setup/_animations.sass: -------------------------------------------------------------------------------- 1 | @keyframes fade-in 2 | from 3 | opacity: 0 4 | to 5 | opacity: 1 6 | 7 | @keyframes fade-out 8 | from 9 | opacity: 1 10 | visibility: visible 11 | to 12 | opacity: 0 13 | 14 | @keyframes fade-in-delayed 15 | 0% 16 | opacity: 0 17 | 33% 18 | opacity: 0 19 | 100% 20 | opacity: 1 21 | 22 | @keyframes fade-out-delayed 23 | 0% 24 | opacity: 1 25 | visibility: visible 26 | 66% 27 | opacity: 0 28 | 100% 29 | opacity: 0 30 | 31 | @keyframes shift-to-left 32 | from 33 | transform: translate(0,0) 34 | to 35 | transform: translate(-25%,0) 36 | 37 | @keyframes unshift-to-left 38 | from 39 | transform: translate(-25%,0) 40 | to 41 | transform: translate(0,0) 42 | 43 | @keyframes pop-in-from-right 44 | from 45 | transform: translate(100%,0) 46 | to 47 | transform: translate(0,0) 48 | 49 | @keyframes pop-out-to-right 50 | from 51 | transform: translate(0,0) 52 | visibility: visible 53 | to 54 | transform: translate(100%,0) 55 | -------------------------------------------------------------------------------- /theme/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: 1200px 33 | margin: 0 auto 34 | padding: 0 40px 35 | 36 | +size-xs 37 | padding: 0 20px 38 | 39 | .container-main 40 | padding-bottom: 50px 41 | 42 | .row 43 | +clearfix 44 | display: flex 45 | position: relative 46 | margin: 0 -10px 47 | 48 | .col 49 | @extend %prevent-children-margin 50 | box-sizing: border-box 51 | float: left 52 | padding: 0 10px 53 | 54 | @for $width from 1 to 12 55 | .col-#{$width} 56 | @extend .col 57 | width: $width / 12 * 100% 58 | 59 | .offset-#{$width} 60 | margin-left: $width / 12 * 100% 61 | -------------------------------------------------------------------------------- /theme/assets/css/setup/_icons.scss: -------------------------------------------------------------------------------- 1 | $type-icons: (object-literal), (class), ("class.tsd-has-type-parameter"), 2 | (interface), ("interface.tsd-has-type-parameter"), (namespace, module), 3 | (enum), (enum-member), (signature), (type-alias), 4 | ("type-alias.tsd-has-type-parameter"); 5 | 6 | $member-icons: (variable, property), (get-signature), (set-signature), 7 | (accessor), (function, method, call-signature), 8 | ("function.tsd-has-type-parameter", "method.tsd-has-type-parameter"), 9 | (constructor, constructor-signature), (index-signature), (event), (property), 10 | (function, method, call-signature), (event); 11 | 12 | // parameter 13 | // type-literal 14 | // type-parameter 15 | 16 | .tsd-kind-icon { 17 | display: block; 18 | position: relative; 19 | padding-left: 20px; 20 | text-indent: -20px; 21 | 22 | &:before { 23 | content: ""; 24 | display: inline-block; 25 | vertical-align: middle; 26 | width: 17px; 27 | height: 17px; 28 | margin: 0 3px 2px 0; 29 | background-image: url(../../images/icons.png); 30 | 31 | @include retina { 32 | background-image: url(../../images/icons@2x.png); 33 | background-size: 238px 204px; 34 | } 35 | } 36 | } 37 | 38 | .tsd-signature.tsd-kind-icon:before { 39 | background-position: 0 -153px; 40 | } 41 | 42 | $icon-size: 17px; 43 | $type: -0 * $icon-size; 44 | $type-protected: -1 * $icon-size; 45 | $type-private: -2 * $icon-size; 46 | $member-class-public: -3 * $icon-size; 47 | $member-class-public-inherited: -4 * $icon-size; 48 | $member-class-protected: -5 * $icon-size; 49 | $member-class-protected-inherited: -6 * $icon-size; 50 | $member-private: -7 * $icon-size; 51 | $member: -8 * $icon-size; 52 | $member-protected: -9 * $icon-size; 53 | $member-enum: -10 * $icon-size; 54 | $member-enum-protected: -11 * $icon-size; 55 | $member-interface: -12 * $icon-size; 56 | $member-interface-inherited: -13 * $icon-size; 57 | 58 | @for $index from 1 through length($type-icons) { 59 | @each $kind in nth($type-icons, $index) { 60 | $selector: ".tsd-kind-" + $kind; 61 | $offset: -#{17 * ($index)}px; 62 | 63 | #{$selector} { 64 | > .tsd-kind-icon:before { 65 | background-position: $type $offset; 66 | } 67 | 68 | &.tsd-is-protected > .tsd-kind-icon:before { 69 | background-position: $type-protected $offset; 70 | } 71 | 72 | &.tsd-is-private > .tsd-kind-icon:before { 73 | background-position: $type-private $offset; 74 | } 75 | } 76 | } 77 | } 78 | 79 | @for $index from 1 through length($member-icons) { 80 | @each $kind in nth($member-icons, $index) { 81 | $offset: -#{17 * ($index - 1)}px; 82 | $selector: ".tsd-kind-" + $kind; 83 | @if $index == 10 { 84 | $selector: ".tsd-is-static"; 85 | } @else if $index > 10 { 86 | $selector: ".tsd-is-static.tsd-kind-" + $kind; 87 | } 88 | 89 | #{$selector} { 90 | > .tsd-kind-icon:before { 91 | background-position: $member $offset; 92 | } 93 | 94 | &.tsd-is-protected > .tsd-kind-icon:before { 95 | background-position: $member-protected $offset; 96 | } 97 | 98 | &.tsd-is-private > .tsd-kind-icon:before { 99 | background-position: $member-private $offset; 100 | } 101 | 102 | &.tsd-parent-kind-class { 103 | > .tsd-kind-icon:before { 104 | background-position: $member-class-public $offset; 105 | } 106 | 107 | &.tsd-is-inherited > .tsd-kind-icon:before { 108 | background-position: $member-class-public-inherited $offset; 109 | } 110 | 111 | &.tsd-is-protected > .tsd-kind-icon:before { 112 | background-position: $member-class-protected $offset; 113 | } 114 | 115 | &.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { 116 | background-position: $member-class-protected-inherited 117 | $offset; 118 | } 119 | 120 | &.tsd-is-private > .tsd-kind-icon:before { 121 | background-position: $member-private $offset; 122 | } 123 | } 124 | 125 | &.tsd-parent-kind-enum { 126 | > .tsd-kind-icon:before { 127 | background-position: $member-enum $offset; 128 | } 129 | 130 | &.tsd-is-protected > .tsd-kind-icon:before { 131 | background-position: $member-enum-protected $offset; 132 | } 133 | 134 | &.tsd-is-private > .tsd-kind-icon:before { 135 | background-position: $member-private $offset; 136 | } 137 | } 138 | 139 | &.tsd-parent-kind-interface { 140 | > .tsd-kind-icon:before { 141 | background-position: $member-interface $offset; 142 | } 143 | 144 | &.tsd-is-inherited > .tsd-kind-icon:before { 145 | background-position: $member-interface-inherited $offset; 146 | } 147 | } 148 | } 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /theme/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-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 | -------------------------------------------------------------------------------- /theme/assets/css/setup/_typography.sass: -------------------------------------------------------------------------------- 1 | body 2 | background: var(--color-background) 3 | font-family: $FONT_FAMILY 4 | font-size: $FONT_SIZE 5 | color: var(--color-text) 6 | 7 | a 8 | color: var(--color-link) 9 | text-decoration: none 10 | 11 | &:hover 12 | text-decoration: underline 13 | 14 | code, pre 15 | font-family: $FONT_FAMILY_MONO 16 | padding: 0.2em 17 | margin: 0 18 | font-size: $FONT_SIZE_MONO 19 | background-color: var(--color-code-background) 20 | 21 | pre 22 | padding: 10px 23 | 24 | code 25 | padding: 0 26 | font-size: 100% 27 | background-color: transparent 28 | 29 | blockquote 30 | margin: 1em 0 31 | padding-left: 1em 32 | border-left: 4px solid gray 33 | 34 | .tsd-typography 35 | line-height: $LINE_HEIGHT 36 | 37 | ul 38 | list-style: square 39 | padding: 0 0 0 20px 40 | margin: 0 41 | 42 | h4, h5, h6 43 | font-size: 1em 44 | margin: 0 45 | 46 | h5, h6 47 | font-weight: normal 48 | 49 | p, ul, ol 50 | margin: 1em 0 51 | -------------------------------------------------------------------------------- /theme/assets/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngjuning-archive/vscode-api-cn.js.org/01e808f4183381f3b2208e40280d493d5e0edc61/theme/assets/images/icons.png -------------------------------------------------------------------------------- /theme/assets/images/icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngjuning-archive/vscode-api-cn.js.org/01e808f4183381f3b2208e40280d493d5e0edc61/theme/assets/images/icons.psd -------------------------------------------------------------------------------- /theme/assets/images/icons@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngjuning-archive/vscode-api-cn.js.org/01e808f4183381f3b2208e40280d493d5e0edc61/theme/assets/images/icons@2x.png -------------------------------------------------------------------------------- /theme/assets/images/widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngjuning-archive/vscode-api-cn.js.org/01e808f4183381f3b2208e40280d493d5e0edc61/theme/assets/images/widgets.png -------------------------------------------------------------------------------- /theme/assets/images/widgets.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngjuning-archive/vscode-api-cn.js.org/01e808f4183381f3b2208e40280d493d5e0edc61/theme/assets/images/widgets.psd -------------------------------------------------------------------------------- /theme/assets/images/widgets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngjuning-archive/vscode-api-cn.js.org/01e808f4183381f3b2208e40280d493d5e0edc61/theme/assets/images/widgets@2x.png -------------------------------------------------------------------------------- /theme/assets/js/src/bootstrap.ts: -------------------------------------------------------------------------------- 1 | import { Application, registerComponent } from "./typedoc/Application"; 2 | import { MenuHighlight } from "./typedoc/components/MenuHighlight"; 3 | import { initSearch } from "./typedoc/components/Search"; 4 | import { Signature } from "./typedoc/components/Signature"; 5 | import { Toggle } from "./typedoc/components/Toggle"; 6 | import { Filter } from "./typedoc/components/Filter"; 7 | 8 | import "../../css/main.sass"; 9 | 10 | initSearch(); 11 | 12 | registerComponent(MenuHighlight, ".menu-highlight"); 13 | registerComponent(Signature, ".tsd-signatures"); 14 | registerComponent(Toggle, "a[data-toggle]"); 15 | 16 | if (Filter.isSupported()) { 17 | registerComponent(Filter, "#tsd-filter"); 18 | } else { 19 | document.documentElement.classList.add("no-filter"); 20 | } 21 | 22 | const app: Application = new Application(); 23 | 24 | Object.defineProperty(window, "app", { value: app }); 25 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/Application.ts: -------------------------------------------------------------------------------- 1 | import { IComponentOptions } from "./Component"; 2 | 3 | /** 4 | * Component definition. 5 | */ 6 | export interface IComponent { 7 | constructor: new (options: IComponentOptions) => unknown; 8 | selector: string; 9 | } 10 | 11 | /** 12 | * List of all known components. 13 | */ 14 | const components: IComponent[] = []; 15 | 16 | /** 17 | * Register a new component. 18 | */ 19 | export function registerComponent( 20 | constructor: IComponent["constructor"], 21 | selector: string 22 | ) { 23 | components.push({ 24 | selector: selector, 25 | constructor: constructor, 26 | }); 27 | } 28 | 29 | /** 30 | * TypeDoc application class. 31 | */ 32 | export class Application { 33 | /** 34 | * Create a new Application instance. 35 | */ 36 | constructor() { 37 | this.createComponents(document.body); 38 | } 39 | 40 | /** 41 | * Create all components beneath the given jQuery element. 42 | */ 43 | public createComponents(context: HTMLElement) { 44 | components.forEach((c) => { 45 | context.querySelectorAll(c.selector).forEach((el) => { 46 | if (!el.dataset.hasInstance) { 47 | new c.constructor({ el: el }); 48 | el.dataset.hasInstance = String(true); 49 | } 50 | }); 51 | }); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/Component.ts: -------------------------------------------------------------------------------- 1 | export interface IComponentOptions { 2 | el: HTMLElement; 3 | } 4 | 5 | /** 6 | * TypeDoc component class. 7 | */ 8 | export class Component { 9 | protected el: HTMLElement; 10 | 11 | constructor(options: IComponentOptions) { 12 | this.el = options.el; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/EventTarget.ts: -------------------------------------------------------------------------------- 1 | export interface IEventListener { 2 | (evt: CustomEvent): void; 3 | } 4 | 5 | /** 6 | * TypeDoc event target class. 7 | */ 8 | export class EventTarget { 9 | private listeners: Record[]> = {}; 10 | 11 | public addEventListener(type: string, callback: IEventListener) { 12 | if (!(type in this.listeners)) { 13 | this.listeners[type] = []; 14 | } 15 | this.listeners[type].push(callback); 16 | } 17 | 18 | public removeEventListener(type: string, callback: IEventListener) { 19 | if (!(type in this.listeners)) { 20 | return; 21 | } 22 | const stack = this.listeners[type]; 23 | for (let i = 0, l = stack.length; i < l; i++) { 24 | if (stack[i] === callback) { 25 | stack.splice(i, 1); 26 | return; 27 | } 28 | } 29 | } 30 | 31 | public dispatchEvent(event: CustomEvent) { 32 | if (!(event.type in this.listeners)) { 33 | return true; 34 | } 35 | const stack = this.listeners[event.type].slice(); 36 | 37 | for (let i = 0, l = stack.length; i < l; i++) { 38 | stack[i].call(this, event); 39 | } 40 | return !event.defaultPrevented; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/components/Filter.ts: -------------------------------------------------------------------------------- 1 | import { Component, IComponentOptions } from "../Component"; 2 | import { pointerDown, pointerUp } from "../utils/pointer"; 3 | 4 | abstract class FilterItem { 5 | protected key: string; 6 | 7 | protected value: T; 8 | 9 | protected defaultValue: T; 10 | 11 | constructor(key: string, value: T) { 12 | this.key = key; 13 | this.value = value; 14 | this.defaultValue = value; 15 | 16 | this.initialize(); 17 | 18 | if (window.localStorage[this.key]) { 19 | this.setValue(this.fromLocalStorage(window.localStorage[this.key])); 20 | } 21 | } 22 | 23 | protected initialize() {} 24 | 25 | protected abstract handleValueChange(oldValue: T, newValue: T): void; 26 | 27 | protected abstract fromLocalStorage(value: string): T; 28 | 29 | protected abstract toLocalStorage(value: T): string; 30 | 31 | protected setValue(value: T) { 32 | if (this.value == value) return; 33 | 34 | const oldValue = this.value; 35 | this.value = value; 36 | window.localStorage[this.key] = this.toLocalStorage(value); 37 | 38 | this.handleValueChange(oldValue, value); 39 | } 40 | } 41 | 42 | class FilterItemCheckbox extends FilterItem { 43 | private checkbox!: HTMLInputElement; 44 | 45 | protected initialize() { 46 | const checkbox = document.querySelector( 47 | "#tsd-filter-" + this.key 48 | ); 49 | if (!checkbox) return; 50 | 51 | this.checkbox = checkbox; 52 | this.checkbox.addEventListener("change", () => { 53 | this.setValue(this.checkbox.checked); 54 | }); 55 | } 56 | 57 | protected handleValueChange(oldValue: boolean, newValue: boolean) { 58 | if (!this.checkbox) return; 59 | this.checkbox.checked = this.value; 60 | document.documentElement.classList.toggle( 61 | "toggle-" + this.key, 62 | this.value != this.defaultValue 63 | ); 64 | } 65 | 66 | protected fromLocalStorage(value: string): boolean { 67 | return value == "true"; 68 | } 69 | 70 | protected toLocalStorage(value: boolean): string { 71 | return value ? "true" : "false"; 72 | } 73 | } 74 | 75 | class FilterItemSelect extends FilterItem { 76 | private select!: HTMLElement; 77 | 78 | protected initialize() { 79 | document.documentElement.classList.add( 80 | "toggle-" + this.key + this.value 81 | ); 82 | 83 | const select = document.querySelector( 84 | "#tsd-filter-" + this.key 85 | ); 86 | if (!select) return; 87 | 88 | this.select = select; 89 | const onActivate = () => { 90 | this.select.classList.add("active"); 91 | }; 92 | const onDeactivate = () => { 93 | this.select.classList.remove("active"); 94 | }; 95 | 96 | this.select.addEventListener(pointerDown, onActivate); 97 | this.select.addEventListener("mouseover", onActivate); 98 | this.select.addEventListener("mouseleave", onDeactivate); 99 | 100 | this.select.querySelectorAll("li").forEach((el) => { 101 | el.addEventListener(pointerUp, (e) => { 102 | select.classList.remove("active"); 103 | this.setValue((e.target as HTMLElement).dataset.value || ""); 104 | }); 105 | }); 106 | 107 | document.addEventListener(pointerDown, (e) => { 108 | if (this.select.contains(e.target as HTMLElement)) return; 109 | 110 | this.select.classList.remove("active"); 111 | }); 112 | } 113 | 114 | protected handleValueChange(oldValue: string, newValue: string) { 115 | this.select.querySelectorAll("li.selected").forEach((el) => { 116 | el.classList.remove("selected"); 117 | }); 118 | 119 | const selected = this.select.querySelector( 120 | 'li[data-value="' + newValue + '"]' 121 | ); 122 | const label = this.select.querySelector( 123 | ".tsd-select-label" 124 | ); 125 | 126 | if (selected && label) { 127 | selected.classList.add("selected"); 128 | label.textContent = selected.textContent; 129 | } 130 | 131 | document.documentElement.classList.remove("toggle-" + oldValue); 132 | document.documentElement.classList.add("toggle-" + newValue); 133 | } 134 | 135 | protected fromLocalStorage(value: string): string { 136 | return value; 137 | } 138 | 139 | protected toLocalStorage(value: string): string { 140 | return value; 141 | } 142 | } 143 | 144 | export class Filter extends Component { 145 | private optionVisibility: FilterItemSelect; 146 | 147 | private optionInherited: FilterItemCheckbox; 148 | 149 | private optionExternals: FilterItemCheckbox; 150 | 151 | constructor(options: IComponentOptions) { 152 | super(options); 153 | 154 | this.optionVisibility = new FilterItemSelect("visibility", "private"); 155 | this.optionInherited = new FilterItemCheckbox("inherited", true); 156 | this.optionExternals = new FilterItemCheckbox("externals", true); 157 | } 158 | 159 | static isSupported(): boolean { 160 | try { 161 | return typeof window.localStorage != "undefined"; 162 | } catch (e) { 163 | return false; 164 | } 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/components/MenuHighlight.ts: -------------------------------------------------------------------------------- 1 | import { Component, IComponentOptions } from "../Component"; 2 | import { Viewport } from "../services/Viewport"; 3 | 4 | /** 5 | * Stored element and position data of a single anchor. 6 | */ 7 | interface IAnchorInfo { 8 | /** 9 | * The anchor element. 10 | */ 11 | anchor: HTMLElement; 12 | 13 | /** 14 | * The link element in the navigation representing this anchor. 15 | */ 16 | link: HTMLElement; 17 | 18 | /** 19 | * The vertical offset of the anchor on the page. 20 | */ 21 | position: number; 22 | } 23 | 24 | /** 25 | * Manages the sticky state of the navigation and moves the highlight 26 | * to the current navigation item. 27 | */ 28 | export class MenuHighlight extends Component { 29 | /** 30 | * List of all discovered anchors. 31 | */ 32 | private anchors: IAnchorInfo[] = []; 33 | 34 | /** 35 | * Index of the currently highlighted anchor. 36 | */ 37 | private index: number = -1; 38 | 39 | /** 40 | * Create a new MenuHighlight instance. 41 | * 42 | * @param options Backbone view constructor options. 43 | */ 44 | constructor(options: IComponentOptions) { 45 | super(options); 46 | 47 | Viewport.instance.addEventListener("resize", () => this.onResize()); 48 | Viewport.instance.addEventListener<{ scrollTop: number }>( 49 | "scroll", 50 | (e) => this.onScroll(e) 51 | ); 52 | 53 | this.createAnchors(); 54 | } 55 | 56 | /** 57 | * Find all anchors on the current page. 58 | */ 59 | private createAnchors() { 60 | let base = window.location.href; 61 | if (base.indexOf("#") != -1) { 62 | base = base.substr(0, base.indexOf("#")); 63 | } 64 | 65 | this.el.querySelectorAll("a").forEach((el) => { 66 | const href = el.href; 67 | if (href.indexOf("#") == -1) return; 68 | if (href.substr(0, base.length) != base) return; 69 | 70 | const hash = href.substr(href.indexOf("#") + 1); 71 | const anchor = document.querySelector( 72 | "a.tsd-anchor[name=" + hash + "]" 73 | ); 74 | const link = el.parentNode; 75 | if (!anchor || !link) return; 76 | 77 | this.anchors.push({ 78 | link: link as HTMLElement, 79 | anchor: anchor, 80 | position: 0, 81 | }); 82 | }); 83 | 84 | this.onResize(); 85 | } 86 | 87 | /** 88 | * Triggered after the viewport was resized. 89 | */ 90 | private onResize() { 91 | let anchor: IAnchorInfo; 92 | for ( 93 | let index = 0, count = this.anchors.length; 94 | index < count; 95 | index++ 96 | ) { 97 | anchor = this.anchors[index]; 98 | const rect = anchor.anchor.getBoundingClientRect(); 99 | anchor.position = rect.top + document.body.scrollTop; 100 | } 101 | 102 | this.anchors.sort((a, b) => { 103 | return a.position - b.position; 104 | }); 105 | 106 | const event = new CustomEvent("scroll", { 107 | detail: { 108 | scrollTop: Viewport.instance.scrollTop, 109 | }, 110 | }); 111 | this.onScroll(event); 112 | } 113 | 114 | /** 115 | * Triggered after the viewport was scrolled. 116 | * 117 | * @param event The custom event with the current vertical scroll position. 118 | */ 119 | private onScroll(event: CustomEvent<{ scrollTop: number }>) { 120 | const scrollTop = event.detail.scrollTop + 5; 121 | const anchors = this.anchors; 122 | const count = anchors.length - 1; 123 | let index = this.index; 124 | 125 | while (index > -1 && anchors[index].position > scrollTop) { 126 | index -= 1; 127 | } 128 | 129 | while (index < count && anchors[index + 1].position < scrollTop) { 130 | index += 1; 131 | } 132 | 133 | if (this.index != index) { 134 | if (this.index > -1) 135 | this.anchors[this.index].link.classList.remove("focus"); 136 | this.index = index; 137 | if (this.index > -1) 138 | this.anchors[this.index].link.classList.add("focus"); 139 | } 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/components/Search.ts: -------------------------------------------------------------------------------- 1 | import { debounce } from "../utils/debounce"; 2 | import { Index } from "lunr"; 3 | 4 | interface IDocument { 5 | id: number; 6 | kind: number; 7 | name: string; 8 | url: string; 9 | classes: string; 10 | parent?: string; 11 | } 12 | 13 | interface IData { 14 | kinds: { [kind: number]: string }; 15 | rows: IDocument[]; 16 | index: object; 17 | } 18 | 19 | declare global { 20 | interface Window { 21 | searchData?: IData; 22 | } 23 | } 24 | 25 | interface SearchState { 26 | base: string; 27 | data?: IData; 28 | index?: Index; 29 | } 30 | 31 | export function initSearch() { 32 | const searchEl = document.getElementById("tsd-search"); 33 | if (!searchEl) return; 34 | 35 | const searchScript = document.getElementById( 36 | "search-script" 37 | ) as HTMLScriptElement | null; 38 | searchEl.classList.add("loading"); 39 | if (searchScript) { 40 | searchScript.addEventListener("error", () => { 41 | searchEl.classList.remove("loading"); 42 | searchEl.classList.add("failure"); 43 | }); 44 | searchScript.addEventListener("load", () => { 45 | searchEl.classList.remove("loading"); 46 | searchEl.classList.add("ready"); 47 | }); 48 | if (window.searchData) { 49 | searchEl.classList.remove("loading"); 50 | } 51 | } 52 | 53 | const field = document.querySelector("#tsd-search-field"); 54 | const results = document.querySelector(".results"); 55 | 56 | if (!field || !results) { 57 | throw new Error( 58 | "The input field or the result list wrapper was not found" 59 | ); 60 | } 61 | 62 | let resultClicked = false; 63 | results.addEventListener("mousedown", () => (resultClicked = true)); 64 | results.addEventListener("mouseup", () => { 65 | resultClicked = false; 66 | searchEl.classList.remove("has-focus"); 67 | }); 68 | 69 | field.addEventListener("focus", () => searchEl.classList.add("has-focus")); 70 | field.addEventListener("blur", () => { 71 | if (!resultClicked) { 72 | resultClicked = false; 73 | searchEl.classList.remove("has-focus"); 74 | } 75 | }); 76 | 77 | const state: SearchState = { 78 | base: searchEl.dataset.base + "/", 79 | }; 80 | 81 | bindEvents(searchEl, results, field, state); 82 | } 83 | 84 | function bindEvents( 85 | searchEl: HTMLElement, 86 | results: HTMLElement, 87 | field: HTMLInputElement, 88 | state: SearchState 89 | ) { 90 | field.addEventListener( 91 | "input", 92 | debounce(() => { 93 | updateResults(searchEl, results, field, state); 94 | }, 200) 95 | ); 96 | 97 | let preventPress = false; 98 | field.addEventListener("keydown", (e) => { 99 | preventPress = true; 100 | if (e.key == "Enter") { 101 | gotoCurrentResult(results, field); 102 | } else if (e.key == "Escape") { 103 | field.blur(); 104 | } else if (e.key == "ArrowUp") { 105 | setCurrentResult(results, -1); 106 | } else if (e.key === "ArrowDown") { 107 | setCurrentResult(results, 1); 108 | } else { 109 | preventPress = false; 110 | } 111 | }); 112 | field.addEventListener("keypress", (e) => { 113 | if (preventPress) e.preventDefault(); 114 | }); 115 | 116 | /** 117 | * Start searching by pressing slash. 118 | */ 119 | document.body.addEventListener("keydown", (e) => { 120 | if (e.altKey || e.ctrlKey || e.metaKey) return; 121 | if (!field.matches(":focus") && e.key === "/") { 122 | field.focus(); 123 | e.preventDefault(); 124 | } 125 | }); 126 | } 127 | 128 | function checkIndex(state: SearchState, searchEl: HTMLElement) { 129 | if (state.index) return; 130 | 131 | if (window.searchData) { 132 | searchEl.classList.remove("loading"); 133 | searchEl.classList.add("ready"); 134 | state.data = window.searchData; 135 | state.index = Index.load(window.searchData.index); 136 | } 137 | } 138 | 139 | function updateResults( 140 | searchEl: HTMLElement, 141 | results: HTMLElement, 142 | query: HTMLInputElement, 143 | state: SearchState 144 | ) { 145 | checkIndex(state, searchEl); 146 | // Don't clear results if loading state is not ready, 147 | // because loading or error message can be removed. 148 | if (!state.index || !state.data) return; 149 | 150 | results.textContent = ""; 151 | 152 | const searchText = query.value.trim(); 153 | 154 | // Perform a wildcard search 155 | let res = state.index.search(`*${searchText}*`); 156 | 157 | for (let i = 0, c = Math.min(10, res.length); i < c; i++) { 158 | const row = state.data.rows[Number(res[i].ref)]; 159 | 160 | // Bold the matched part of the query in the search results 161 | let name = boldMatches(row.name, searchText); 162 | if (row.parent) { 163 | name = `${boldMatches( 164 | row.parent, 165 | searchText 166 | )}.${name}`; 167 | } 168 | 169 | const item = document.createElement("li"); 170 | item.classList.value = row.classes; 171 | 172 | const anchor = document.createElement("a"); 173 | anchor.href = state.base + row.url; 174 | anchor.classList.add("tsd-kind-icon"); 175 | anchor.innerHTML = name; 176 | item.append(anchor); 177 | 178 | results.appendChild(item); 179 | } 180 | } 181 | 182 | /** 183 | * Move the highlight within the result set. 184 | */ 185 | function setCurrentResult(results: HTMLElement, dir: number) { 186 | let current = results.querySelector(".current"); 187 | if (!current) { 188 | current = results.querySelector( 189 | dir == 1 ? "li:first-child" : "li:last-child" 190 | ); 191 | if (current) { 192 | current.classList.add("current"); 193 | } 194 | } else { 195 | const rel = 196 | dir == 1 197 | ? current.nextElementSibling 198 | : current.previousElementSibling; 199 | if (rel) { 200 | current.classList.remove("current"); 201 | rel.classList.add("current"); 202 | } 203 | } 204 | } 205 | 206 | /** 207 | * Navigate to the highlighted result. 208 | */ 209 | function gotoCurrentResult(results: HTMLElement, field: HTMLInputElement) { 210 | let current = results.querySelector(".current"); 211 | 212 | if (!current) { 213 | current = results.querySelector("li:first-child"); 214 | } 215 | 216 | if (current) { 217 | const link = current.querySelector("a"); 218 | if (link) { 219 | window.location.href = link.href; 220 | } 221 | field.blur(); 222 | } 223 | } 224 | 225 | function boldMatches(text: string, search: string) { 226 | if (search === "") { 227 | return text; 228 | } 229 | 230 | const lowerText = text.toLocaleLowerCase(); 231 | const lowerSearch = search.toLocaleLowerCase(); 232 | 233 | const parts = []; 234 | let lastIndex = 0; 235 | let index = lowerText.indexOf(lowerSearch); 236 | while (index != -1) { 237 | parts.push( 238 | escapeHtml(text.substring(lastIndex, index)), 239 | `${escapeHtml( 240 | text.substring(index, index + lowerSearch.length) 241 | )}` 242 | ); 243 | 244 | lastIndex = index + lowerSearch.length; 245 | index = lowerText.indexOf(lowerSearch, lastIndex); 246 | } 247 | 248 | parts.push(escapeHtml(text.substring(lastIndex))); 249 | 250 | return parts.join(""); 251 | } 252 | 253 | const SPECIAL_HTML = { 254 | "&": "&", 255 | "<": "<", 256 | ">": ">", 257 | "'": "'", 258 | '"': """, 259 | } as const; 260 | 261 | function escapeHtml(text: string) { 262 | return text.replace( 263 | /[&<>"'"]/g, 264 | (match) => SPECIAL_HTML[match as keyof typeof SPECIAL_HTML] 265 | ); 266 | } 267 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/components/Signature.ts: -------------------------------------------------------------------------------- 1 | import { Component, IComponentOptions } from "../Component"; 2 | import { Viewport } from "../services/Viewport"; 3 | 4 | /** 5 | * Holds a signature and its description. 6 | */ 7 | class SignatureGroup { 8 | /** 9 | * The target signature. 10 | */ 11 | signature: Element; 12 | 13 | /** 14 | * The description for the signature. 15 | */ 16 | description: Element; 17 | 18 | /** 19 | * Create a new SignatureGroup instance. 20 | * 21 | * @param signature The target signature. 22 | * @param description The description for the signature. 23 | */ 24 | constructor(signature: Element, description: Element) { 25 | this.signature = signature; 26 | this.description = description; 27 | } 28 | 29 | /** 30 | * Add the given class to all elements of the group. 31 | * 32 | * @param className The class name to add. 33 | */ 34 | addClass(className: string): SignatureGroup { 35 | this.signature.classList.add(className); 36 | this.description.classList.add(className); 37 | return this; 38 | } 39 | 40 | /** 41 | * Remove the given class from all elements of the group. 42 | * 43 | * @param className The class name to remove. 44 | */ 45 | removeClass(className: string): SignatureGroup { 46 | this.signature.classList.remove(className); 47 | this.description.classList.remove(className); 48 | return this; 49 | } 50 | } 51 | 52 | /** 53 | * Controls the tab like behaviour of methods and functions with multiple signatures. 54 | */ 55 | export class Signature extends Component { 56 | /** 57 | * List of found signature groups. 58 | */ 59 | private groups: SignatureGroup[] = []; 60 | 61 | /** 62 | * The container holding all the descriptions. 63 | */ 64 | private container?: HTMLElement; 65 | 66 | /** 67 | * The index of the currently displayed signature. 68 | */ 69 | private index: number = -1; 70 | 71 | /** 72 | * Create a new Signature instance. 73 | * 74 | * @param options Backbone view constructor options. 75 | */ 76 | constructor(options: IComponentOptions) { 77 | super(options); 78 | 79 | this.createGroups(); 80 | 81 | if (this.container) { 82 | this.el.classList.add("active"); 83 | Array.from(this.el.children).forEach((signature) => { 84 | signature.addEventListener("touchstart", (event) => 85 | this.onClick(event) 86 | ); 87 | signature.addEventListener("click", (event) => 88 | this.onClick(event) 89 | ); 90 | }); 91 | this.container.classList.add("active"); 92 | this.setIndex(0); 93 | } 94 | } 95 | 96 | /** 97 | * Set the index of the active signature. 98 | * 99 | * @param index The index of the signature to activate. 100 | */ 101 | private setIndex(index: number) { 102 | if (index < 0) index = 0; 103 | if (index > this.groups.length - 1) index = this.groups.length - 1; 104 | if (this.index == index) return; 105 | 106 | const to = this.groups[index]; 107 | if (this.index > -1) { 108 | const from = this.groups[this.index]; 109 | 110 | from.removeClass("current").addClass("fade-out"); 111 | to.addClass("current"); 112 | to.addClass("fade-in"); 113 | Viewport.instance.triggerResize(); 114 | 115 | setTimeout(() => { 116 | from.removeClass("fade-out"); 117 | to.removeClass("fade-in"); 118 | }, 300); 119 | } else { 120 | to.addClass("current"); 121 | Viewport.instance.triggerResize(); 122 | } 123 | 124 | this.index = index; 125 | } 126 | 127 | /** 128 | * Find all signature/description groups. 129 | */ 130 | private createGroups() { 131 | const signatures = this.el.children; 132 | if (signatures.length < 2) return; 133 | 134 | this.container = this.el.nextElementSibling as HTMLElement; 135 | const descriptions = this.container.children; 136 | 137 | this.groups = []; 138 | for (let index = 0; index < signatures.length; index++) { 139 | this.groups.push( 140 | new SignatureGroup(signatures[index], descriptions[index]) 141 | ); 142 | } 143 | } 144 | 145 | /** 146 | * Triggered when the user clicks onto a signature header. 147 | * 148 | * @param e The related event object. 149 | */ 150 | private onClick(e: Event) { 151 | this.groups.forEach((group, index) => { 152 | if (group.signature === e.currentTarget) { 153 | this.setIndex(index); 154 | } 155 | }); 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/components/Toggle.ts: -------------------------------------------------------------------------------- 1 | import { Component, IComponentOptions } from "../Component"; 2 | import { hasPointerMoved, pointerDown, pointerUp } from "../utils/pointer"; 3 | 4 | export class Toggle extends Component { 5 | active?: boolean; 6 | 7 | className: string; 8 | 9 | constructor(options: IComponentOptions) { 10 | super(options); 11 | 12 | this.className = this.el.dataset.toggle || ""; 13 | this.el.addEventListener(pointerUp, (e) => this.onPointerUp(e)); 14 | this.el.addEventListener("click", (e) => e.preventDefault()); 15 | document.addEventListener(pointerDown, (e) => 16 | this.onDocumentPointerDown(e) 17 | ); 18 | document.addEventListener(pointerUp, (e) => 19 | this.onDocumentPointerUp(e) 20 | ); 21 | } 22 | 23 | setActive(value: boolean) { 24 | if (this.active == value) return; 25 | this.active = value; 26 | 27 | document.documentElement.classList.toggle( 28 | "has-" + this.className, 29 | value 30 | ); 31 | this.el.classList.toggle("active", value); 32 | 33 | const transition = 34 | (this.active ? "to-has-" : "from-has-") + this.className; 35 | document.documentElement.classList.add(transition); 36 | setTimeout( 37 | () => document.documentElement.classList.remove(transition), 38 | 500 39 | ); 40 | } 41 | 42 | onPointerUp(event: Event) { 43 | if (hasPointerMoved) return; 44 | this.setActive(true); 45 | event.preventDefault(); 46 | } 47 | 48 | onDocumentPointerDown(e: Event) { 49 | if (this.active) { 50 | if ( 51 | (e.target as HTMLElement).closest( 52 | ".col-menu, .tsd-filter-group" 53 | ) 54 | ) { 55 | return; 56 | } 57 | 58 | this.setActive(false); 59 | } 60 | } 61 | 62 | onDocumentPointerUp(e: Event) { 63 | if (hasPointerMoved) return; 64 | if (this.active) { 65 | if ((e.target as HTMLElement).closest(".col-menu")) { 66 | const link = (e.target as HTMLElement).closest("a"); 67 | if (link) { 68 | let href = window.location.href; 69 | if (href.indexOf("#") != -1) { 70 | href = href.substr(0, href.indexOf("#")); 71 | } 72 | if (link.href.substr(0, href.length) == href) { 73 | setTimeout(() => this.setActive(false), 250); 74 | } 75 | } 76 | } 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/services/Viewport.ts: -------------------------------------------------------------------------------- 1 | import { EventTarget } from "../EventTarget"; 2 | import { throttle } from "../utils/trottle"; 3 | 4 | /** 5 | * A global service that monitors the window size and scroll position. 6 | */ 7 | export class Viewport extends EventTarget { 8 | public static readonly instance = new Viewport(); 9 | 10 | /** 11 | * The current scroll position. 12 | */ 13 | scrollTop: number = 0; 14 | 15 | /** 16 | * The previous scrollTop. 17 | */ 18 | lastY: number = 0; 19 | 20 | /** 21 | * The width of the window. 22 | */ 23 | width: number = 0; 24 | 25 | /** 26 | * The height of the window. 27 | */ 28 | height: number = 0; 29 | 30 | /** 31 | * The toolbar (contains the search input). 32 | */ 33 | toolbar: HTMLDivElement; 34 | 35 | /** 36 | * Boolean indicating whether the toolbar is shown. 37 | */ 38 | showToolbar: boolean = true; 39 | 40 | /** 41 | * The sticky side nav that contains members of the current page. 42 | */ 43 | secondaryNav: HTMLElement; 44 | 45 | /** 46 | * Create new Viewport instance. 47 | */ 48 | constructor() { 49 | super(); 50 | 51 | this.toolbar = ( 52 | document.querySelector(".tsd-page-toolbar") 53 | ); 54 | this.secondaryNav = ( 55 | document.querySelector(".tsd-navigation.secondary") 56 | ); 57 | 58 | window.addEventListener( 59 | "scroll", 60 | throttle(() => this.onScroll(), 10) 61 | ); 62 | window.addEventListener( 63 | "resize", 64 | throttle(() => this.onResize(), 10) 65 | ); 66 | 67 | this.onResize(); 68 | this.onScroll(); 69 | } 70 | 71 | /** 72 | * Trigger a resize event. 73 | */ 74 | triggerResize() { 75 | const event = new CustomEvent("resize", { 76 | detail: { 77 | width: this.width, 78 | height: this.height, 79 | }, 80 | }); 81 | 82 | this.dispatchEvent(event); 83 | } 84 | 85 | /** 86 | * Triggered when the size of the window has changed. 87 | */ 88 | onResize() { 89 | this.width = window.innerWidth || 0; 90 | this.height = window.innerHeight || 0; 91 | 92 | const event = new CustomEvent("resize", { 93 | detail: { 94 | width: this.width, 95 | height: this.height, 96 | }, 97 | }); 98 | 99 | this.dispatchEvent(event); 100 | } 101 | 102 | /** 103 | * Triggered when the user scrolled the viewport. 104 | */ 105 | onScroll() { 106 | this.scrollTop = window.scrollY || 0; 107 | 108 | const event = new CustomEvent("scroll", { 109 | detail: { 110 | scrollTop: this.scrollTop, 111 | }, 112 | }); 113 | 114 | this.dispatchEvent(event); 115 | this.hideShowToolbar(); 116 | } 117 | 118 | /** 119 | * Handle hiding/showing of the toolbar. 120 | */ 121 | hideShowToolbar() { 122 | const isShown = this.showToolbar; 123 | this.showToolbar = this.lastY >= this.scrollTop || this.scrollTop <= 0; 124 | if (isShown !== this.showToolbar) { 125 | this.toolbar.classList.toggle("tsd-page-toolbar--hide"); 126 | this.secondaryNav.classList.toggle("tsd-navigation--toolbar-hide"); 127 | } 128 | this.lastY = this.scrollTop; 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/utils/debounce.ts: -------------------------------------------------------------------------------- 1 | export const debounce = (fn: Function, wait: number = 100) => { 2 | let timeout: ReturnType; 3 | return (...args: any[]) => { 4 | clearTimeout(timeout); 5 | timeout = setTimeout(() => fn(args), wait); 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/utils/pointer.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Simple point interface. 3 | */ 4 | export interface Point { 5 | x: number; 6 | y: number; 7 | } 8 | 9 | /** 10 | * Event name of the pointer down event. 11 | */ 12 | export let pointerDown: string = "mousedown"; 13 | 14 | /** 15 | * Event name of the pointer move event. 16 | */ 17 | export let pointerMove: string = "mousemove"; 18 | 19 | /** 20 | * Event name of the pointer up event. 21 | */ 22 | export let pointerUp: string = "mouseup"; 23 | 24 | /** 25 | * Position the pointer was pressed at. 26 | */ 27 | export const pointerDownPosition: Point = { x: 0, y: 0 }; 28 | 29 | /** 30 | * Should the next click on the document be supressed? 31 | */ 32 | export let preventNextClick: boolean = false; 33 | 34 | /** 35 | * Is the pointer down? 36 | */ 37 | export let isPointerDown: boolean = false; 38 | 39 | /** 40 | * Is the pointer a touch point? 41 | */ 42 | export let isPointerTouch: boolean = false; 43 | 44 | /** 45 | * Did the pointer move since the last down event? 46 | */ 47 | export let hasPointerMoved: boolean = false; 48 | 49 | /** 50 | * Is the user agent a mobile agent? 51 | */ 52 | export const isMobile: boolean = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( 53 | navigator.userAgent 54 | ); 55 | document.documentElement.classList.add(isMobile ? "is-mobile" : "not-mobile"); 56 | 57 | if (isMobile && "ontouchstart" in document.documentElement) { 58 | isPointerTouch = true; 59 | pointerDown = "touchstart"; 60 | pointerMove = "touchmove"; 61 | pointerUp = "touchend"; 62 | } 63 | 64 | document.addEventListener(pointerDown, (e) => { 65 | isPointerDown = true; 66 | hasPointerMoved = false; 67 | const t = 68 | pointerDown == "touchstart" 69 | ? (e as TouchEvent).targetTouches[0] 70 | : (e as MouseEvent); 71 | pointerDownPosition.y = t.pageY || 0; 72 | pointerDownPosition.x = t.pageX || 0; 73 | }); 74 | 75 | document.addEventListener(pointerMove, (e) => { 76 | if (!isPointerDown) return; 77 | if (!hasPointerMoved) { 78 | const t = 79 | pointerDown == "touchstart" 80 | ? (e as TouchEvent).targetTouches[0] 81 | : (e as MouseEvent); 82 | const x = pointerDownPosition.x - (t.pageX || 0); 83 | const y = pointerDownPosition.y - (t.pageY || 0); 84 | hasPointerMoved = Math.sqrt(x * x + y * y) > 10; 85 | } 86 | }); 87 | 88 | document.addEventListener(pointerUp, () => { 89 | isPointerDown = false; 90 | }); 91 | 92 | document.addEventListener("click", (e) => { 93 | if (preventNextClick) { 94 | e.preventDefault(); 95 | e.stopImmediatePropagation(); 96 | preventNextClick = false; 97 | } 98 | }); 99 | -------------------------------------------------------------------------------- /theme/assets/js/src/typedoc/utils/trottle.ts: -------------------------------------------------------------------------------- 1 | export const throttle = ( 2 | fn: (...args: A) => void, 3 | wait = 100 4 | ) => { 5 | let time = Date.now(); 6 | return (...args: A) => { 7 | if (time + wait - Date.now() < 0) { 8 | fn(...args); 9 | time = Date.now(); 10 | } 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /theme/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 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | {{!-- 百度站长验证 --}} 28 | 29 | {{!-- google adsense --}} 30 | 31 | 32 | 33 | 40 | 45 | 46 | 47 | 48 | {{> header}} 49 | 50 |
51 |
52 |
53 | 54 | 56 | 59 | {{{contents}}} 60 | 61 | 63 | 64 |
65 | 85 |
86 |
87 | 88 | {{> footer}} 89 | 90 |
91 | 92 | 93 | {{> analytics}} 94 | 95 | 96 | -------------------------------------------------------------------------------- /theme/partials/analytics.hbs: -------------------------------------------------------------------------------- 1 | {{#if settings.gaID}} 2 | 11 | {{/if}} -------------------------------------------------------------------------------- /theme/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 | {{ name }} 14 |
  • 15 | {{/if}} 16 | {{/if}} 17 | -------------------------------------------------------------------------------- /theme/partials/comment.hbs: -------------------------------------------------------------------------------- 1 | {{#with comment}} 2 | {{#if hasVisibleComponent}} 3 |
    4 | {{#if shortText}} 5 |
    6 | {{#markdown}}{{{shortText}}}{{/markdown}} 7 |
    8 | {{/if}} 9 | {{#if text}} 10 | {{#markdown}}{{{text}}}{{/markdown}} 11 | {{/if}} 12 | {{#if tags}} 13 |
    14 | {{#each tags}} 15 |
    {{tagName}}
    16 |
    {{#markdown}}{{{text}}}{{/markdown}}
    17 | {{/each}} 18 |
    19 | {{/if}} 20 |
    21 | {{/if}} 22 | {{/with}} -------------------------------------------------------------------------------- /theme/partials/footer.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 |

    图例

    5 |
    6 | {{#each legend}} 7 |
      8 | {{#each .}} 9 |
    • {{name}}
    • 10 | {{/each}} 11 |
    12 | {{/each}} 13 |
    14 |
    15 | 16 | 17 | {{#unless settings.hideGenerator}} 18 |
    19 |

    友链:VS Code 中文文档 | VS Code 官网文档 | VS Code 扩展市场

    20 |

    Generated by TypeDoc. Maintained by 紫升

    21 |
    22 | {{/unless}} -------------------------------------------------------------------------------- /theme/partials/header.hbs: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |
    5 | 18 | 19 |
    20 |
    21 | Options 22 |
    23 |
    24 | All 25 |
      26 |
    • Public
    • 27 |
    • Public/Protected
    • 28 |
    • All
    • 29 |
    30 |
    31 | 32 | 33 | 34 | 35 | {{#unless settings.excludeExternals}} 36 | 37 | 38 | {{/unless}} 39 |
    40 |
    41 | 42 | Menu 43 |
    44 |
    45 |
    46 |
    47 |
    48 |
    49 | {{#if model.parent}} {{! Don't show breadcrumbs on main project page, it is the root page. !}} 50 |
      51 | {{#with model}}{{> breadcrumb}}{{/with}} 52 |
    53 | {{/if}} 54 |

    {{#compact}} 55 | {{#ifCond model.kindString "!==" "Project" }} 56 | {{model.kindString}}  57 | {{/ifCond}} 58 | {{model.name}} 59 | {{#if model.typeParameters}} 60 | < 61 | {{#each model.typeParameters}} 62 | {{#if @index}}, {{/if}} 63 | {{name}} 64 | {{/each}} 65 | > 66 | {{/if}} 67 | {{/compact}}

    68 |
    69 |
    70 |
    71 | -------------------------------------------------------------------------------- /theme/partials/hierarchy.hbs: -------------------------------------------------------------------------------- 1 |
      2 | {{#each types}} 3 |
    • 4 | {{#if ../isTarget}} 5 | {{this}} 6 | {{else}} 7 | {{#compact}}{{> type}}{{/compact}} 8 | {{/if}} 9 | 10 | {{#if @last}} 11 | {{#with ../next}} 12 | {{> hierarchy}} 13 | {{/with}} 14 | {{/if}} 15 |
    • 16 | {{/each}} 17 |
    18 | -------------------------------------------------------------------------------- /theme/partials/index.hbs: -------------------------------------------------------------------------------- 1 | {{#if categories}} 2 |
    3 |

    索引

    4 |
    5 |
    6 | {{#each categories}} 7 |
    8 |

    {{title}}({{children.length}})

    9 | 14 |
    15 | {{/each}} 16 |
    17 |
    18 |
    19 | {{else}} 20 | {{#if groups}} 21 |
    22 |

    索引

    23 |
    24 |
    25 | {{#each groups}} 26 |
    27 | {{#if categories}} 28 | {{#each categories}} 29 |

    {{#if title}}{{title}} {{/if}}{{../title}}({{children.length}})

    30 | 35 | {{/each}} 36 | {{else}} 37 |

    {{title}}({{children.length}})

    38 | 43 | {{/if}} 44 |
    45 | {{/each}} 46 |
    47 |
    48 |
    49 | {{/if}} 50 | {{/if}} 51 | -------------------------------------------------------------------------------- /theme/partials/member.declaration.hbs: -------------------------------------------------------------------------------- 1 |
    {{#compact}} 2 | {{{wbr 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 | {{> member.sources}} 21 | 22 | {{> comment}} 23 | 24 | {{#if typeParameters}} 25 |

    Type parameters

    26 | {{> typeParameters}} 27 | {{/if}} 28 | 29 | {{#if type.declaration}} 30 |
    31 |

    Type declaration

    32 | {{#with type.declaration}} 33 | {{> parameter}} 34 | {{/with}} 35 |
    36 | {{/if}} 37 | -------------------------------------------------------------------------------- /theme/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 |
    • 26 | {{> member.signature.body }} 27 |
    • 28 | {{/with}} 29 | {{/if}} 30 | {{#if setSignature}} 31 | {{#with setSignature}} 32 |
    • 33 | {{> member.signature.body }} 34 |
    • 35 | {{/with}} 36 | {{/if}} 37 |
    38 | -------------------------------------------------------------------------------- /theme/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}}{{#if hasGetterOrSetter}} 10 | {{> member.getterSetter}} 11 | {{else}}{{#if isReference}} 12 | {{> member.reference}} 13 | {{else}} 14 | {{> member.declaration}} 15 | {{/if}}{{/if}}{{/if}} 16 | 17 | {{#each groups}} 18 | {{#each children}} 19 | {{#unless hasOwnDocument}} 20 | {{> member}} 21 | {{/unless}} 22 | {{/each}} 23 | {{/each}} 24 |
    25 | -------------------------------------------------------------------------------- /theme/partials/member.reference.hbs: -------------------------------------------------------------------------------- 1 | {{#with tryGetTargetReflectionDeep}} 2 | {{#ifCond ../name '===' name}} 3 | Re-exports {{name}} 4 | {{else if flags.isExported}} 5 | Renames and re-exports {{name}} 6 | {{else}} 7 | Renames and exports {{name}} 8 | {{/ifCond}} 9 | {{else}} 10 | Re-exports {{name}} 11 | {{/with}} 12 | -------------------------------------------------------------------------------- /theme/partials/member.signature.body.hbs: -------------------------------------------------------------------------------- 1 | {{#unless hideSources}} 2 | {{> member.sources}} 3 | {{/unless}} 4 | 5 | {{> comment}} 6 | 7 | {{#if typeParameters}} 8 |

    Type parameters

    9 | {{> typeParameters}} 10 | {{/if}} 11 | 12 | {{#if parameters}} 13 |

    Parameters

    14 |
      15 | {{#each parameters}} 16 |
    • 17 |
      {{#compact}} 18 | {{#each flags}} 19 | {{this}}  20 | {{/each}} 21 | {{#if flags.isRest}}...{{/if}} 22 | {{name}}:  23 | {{#with type}}{{>type}}{{/with}} 24 | {{#if defaultValue}} 25 | 26 |  =  27 | {{defaultValue}} 28 | 29 | {{/if}} 30 | {{/compact}}
      31 | 32 | {{> comment}} 33 | 34 | {{#if type.declaration}} 35 | {{#with type.declaration}} 36 | {{> parameter}} 37 | {{/with}} 38 | {{/if}} 39 |
    • 40 | {{/each}} 41 |
    42 | {{/if}} 43 | 44 | {{#if type}} 45 |

    Returns {{#compact}}{{#with type}}{{>type}}{{/with}}{{/compact}}

    46 | 47 | {{#if comment.returns}} 48 | {{#markdown}}{{{comment.returns}}}{{/markdown}} 49 | {{/if}} 50 | 51 | {{#if type.declaration}} 52 | {{#with type.declaration}} 53 | {{> parameter}} 54 | {{/with}} 55 | {{/if}} 56 | {{/if}} 57 | -------------------------------------------------------------------------------- /theme/partials/member.signature.title.hbs: -------------------------------------------------------------------------------- 1 | {{#unless hideName}} 2 | {{{wbr name}}} 3 | {{else}} {{! This ugliness goes away when we stop naming constructor signatures "new X"}} 4 | {{#ifCond kindString "===" "Constructor signature"}} 5 | {{#if flags.isAbstract}} 6 | abstract 7 | {{/if}} 8 | new 9 | {{/ifCond}} 10 | {{/unless}} 11 | {{#if typeParameters}} 12 | < 13 | {{#each typeParameters}} 14 | {{#if @index}}, {{/if}} 15 | {{name}} 16 | {{/each}} 17 | > 18 | {{/if}} 19 | ( 20 | {{#each parameters}} 21 | {{#if @index}}, {{/if}} 22 | {{#if flags.isRest}}...{{/if}} 23 | {{name}} 24 | 25 | {{#if flags.isOptional}}?{{/if}} 26 | {{#if defaultValue}}?{{/if}} 27 | :  28 | 29 | {{#with type}}{{>type}}{{/with}} 30 | {{/each}} 31 | ) 32 | {{#if type}} 33 | {{#if arrowStyle}} 34 | => 35 | {{else}} 36 | : 37 | {{/if}} 38 | {{#with type}} 39 | {{>type}} 40 | {{/with}} 41 | {{/if}} 42 | -------------------------------------------------------------------------------- /theme/partials/member.signatures.hbs: -------------------------------------------------------------------------------- 1 |
      2 | {{#each signatures}} 3 |
    • {{#compact}}{{> member.signature.title }}{{/compact}}
    • 4 | {{/each}} 5 |
    6 | 7 |
      8 | {{#each signatures}} 9 |
    • 10 | {{> member.signature.body }} 11 |
    • 12 | {{/each}} 13 |
    14 | -------------------------------------------------------------------------------- /theme/partials/member.sources.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /theme/partials/members.group.hbs: -------------------------------------------------------------------------------- 1 | {{#if categories}} 2 | {{#each categories}} 3 |
    4 |

    {{#if title}}{{title}} {{/if}}{{../title}}({{children.length}})

    5 | {{#each children}} 6 | {{#unless hasOwnDocument}} 7 | {{> member}} 8 | {{/unless}} 9 | {{/each}} 10 |
    11 | {{/each}} 12 | {{else}} 13 |
    14 |

    {{title}}({{children.length}})

    15 | {{#each children}} 16 | {{#unless hasOwnDocument}} 17 | {{> member}} 18 | {{/unless}} 19 | {{/each}} 20 |
    21 | {{/if}} -------------------------------------------------------------------------------- /theme/partials/members.hbs: -------------------------------------------------------------------------------- 1 | {{#if categories}} 2 | {{#each categories}} 3 | {{#unless allChildrenHaveOwnDocument}} 4 |
    5 |

    {{title}}({{children.length}})

    6 | {{#each children}} 7 | {{#unless hasOwnDocument}} 8 | {{> member}} 9 | {{/unless}} 10 | {{/each}} 11 |
    12 | {{/unless}} 13 | {{/each}} 14 | {{else}} 15 | {{#each groups}} 16 | {{#unless allChildrenHaveOwnDocument}} 17 | {{> members.group}} 18 | {{/unless}} 19 | {{/each}} 20 | {{/if}} -------------------------------------------------------------------------------- /theme/partials/navigation.hbs: -------------------------------------------------------------------------------- 1 | {{#if isVisible}} 2 | {{#if isLabel}} 3 |
  • 4 | {{{wbr title}}} 5 |
  • 6 | {{else}} 7 | {{#if isGlobals}} 8 |
  • 9 | {{{wbr title}}} 10 |
  • 11 | {{else}} 12 |
  • 13 | {{{wbr title}}} 14 | {{#if isInPath}} 15 | {{#if children}} 16 |
      17 | {{#each children}} 18 | {{> navigation}} 19 | {{/each}} 20 |
    21 | {{/if}} 22 | {{/if}} 23 |
  • 24 | {{/if}} 25 | {{/if}} 26 | {{/if}} 27 | -------------------------------------------------------------------------------- /theme/partials/parameter.hbs: -------------------------------------------------------------------------------- 1 |
      2 | {{#if signatures}} 3 |
    • 4 |
        5 | {{#each signatures}} 6 |
      • {{#compact}} 7 | {{> member.signature.title hideName=true }} 8 | {{/compact}}
      • 9 | {{/each}} 10 |
      11 | 12 |
        13 | {{#each signatures}} 14 |
      • {{> member.signature.body hideSources=true }}
      • 15 | {{/each}} 16 |
      17 |
    • 18 | {{/if}} 19 | {{#if indexSignature}} 20 |
    • 21 |
      {{#compact}} 22 | [ 23 | {{#each indexSignature.parameters}} 24 | {{#if flags.isRest}}...{{/if}}{{name}}: {{#with type}}{{>type}}{{/with}} 25 | {{/each}} 26 | ]:  27 | {{#with indexSignature.type}}{{>type}}{{/with}} 28 | {{/compact}}
      29 | 30 | {{#with indexSignature}} 31 | {{> comment}} 32 | {{/with}} 33 | 34 | {{#if indexSignature.type.declaration}} 35 | {{#with indexSignature.type.declaration}} 36 | {{> parameter}} 37 | {{/with}} 38 | {{/if}} 39 |
    • 40 | {{/if}} 41 | {{#each children}} 42 | {{#if signatures}} 43 |
    • 44 |
      {{#compact}} 45 | {{#if flags.isRest}}...{{/if}} 46 | {{{wbr name}}} 47 | 48 | {{#if isOptional}}?{{/if}} 49 | :  50 | 51 | function 52 | {{/compact}}
      53 | 54 | {{> member.signatures}} 55 |
    • 56 | {{else}}{{#if type}} {{! standard type }} 57 |
    • 58 |
      {{#compact}} 59 | {{#each flags}} 60 | {{this}}  61 | {{/each}} 62 | {{#if flags.isRest}}...{{/if}} 63 | {{#with type}} 64 | {{{wbr ../name}}} 65 | 66 | {{#if ../flags.isOptional}}?{{/if}} 67 | :  68 | 69 | {{>type}} 70 | {{/with}} 71 | {{/compact}}
      72 | 73 | {{> comment}} 74 | 75 | {{#if children}} 76 | {{> parameter}} 77 | {{/if}} 78 | 79 | {{#if type.declaration}} 80 | {{#with type.declaration}} 81 | {{> parameter}} 82 | {{/with}} 83 | {{/if}} 84 |
    • 85 | {{else}} {{! getter/setter }} 86 | {{#with getSignature}} {{! getter }} 87 |
    • 88 |
      {{#compact}} 89 | {{#each flags}} 90 | {{this}}  91 | {{/each}} 92 | get  93 | {{{wbr ../name}}} 94 | ():  95 | {{#with type}} 96 | {{> type}} 97 | {{/with}} 98 | {{/compact}}
      99 | 100 | {{> comment }} 101 |
    • 102 | {{/with}} 103 | {{#with setSignature}} {{! setter }} 104 |
    • 105 |
      {{#compact}} 106 | {{#each flags}} 107 | {{this}}  108 | {{/each}} 109 | set  110 | {{{wbr ../name}}} 111 | ( 112 | {{#each parameters}} 113 | {{name}} 114 | : 115 | {{#with type}} 116 | {{> type}} 117 | {{else}} 118 | any 119 | {{/with}} 120 | {{/each}} 121 | ):  122 | {{#with type}} 123 | {{> type}} 124 | {{/with}} 125 | {{/compact}}
      126 | 127 | {{> comment }} 128 |
    • 129 | {{/with}} 130 | {{/if}}{{/if}} 131 | {{/each}} 132 |
    133 | -------------------------------------------------------------------------------- /theme/partials/toc.hbs: -------------------------------------------------------------------------------- 1 |
  • 2 | {{{wbr title}}} 3 | {{#if children}} 4 |
      5 | {{#each children}} 6 | {{> toc}} 7 | {{/each}} 8 |
    9 | {{/if}} 10 |
  • 11 | -------------------------------------------------------------------------------- /theme/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 | -------------------------------------------------------------------------------- /theme/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}} -------------------------------------------------------------------------------- /theme/partials/typeParameters.hbs: -------------------------------------------------------------------------------- 1 |
        2 | {{#each typeParameters}} 3 |
      • 4 |

        {{#compact}} 5 | {{name}} 6 | {{#if type}} 7 | 8 | {{#with type}}{{> type}}{{/with}} 9 | {{/if}} 10 | {{#if default}} 11 |  = {{#with default}}{{> type}}{{/with}} 12 | {{/if}} 13 | {{/compact}}

        14 | {{> comment}} 15 |
      • 16 | {{/each}} 17 |
      18 | -------------------------------------------------------------------------------- /theme/templates/index.hbs: -------------------------------------------------------------------------------- 1 |
      2 | {{#markdown}}{{{model.readme}}}{{/markdown}} 3 |
      -------------------------------------------------------------------------------- /theme/templates/reflection.hbs: -------------------------------------------------------------------------------- 1 | {{#with model}} 2 | {{#if hasComment}} 3 |
      4 | {{> comment}} 5 |
      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 |

      层级

      19 | {{#with model.typeHierarchy}}{{> hierarchy}}{{/with}} 20 |
      21 | {{/if}} 22 | 23 | {{#if model.implementedTypes}} 24 |
      25 |

      Implements

      26 |
        27 | {{#each model.implementedTypes}} 28 |
      • {{#compact}}{{> type}}{{/compact}}
      • 29 | {{/each}} 30 |
      31 |
      32 | {{/if}} 33 | 34 | {{#if model.implementedBy}} 35 |
      36 |

      Implemented by

      37 |
        38 | {{#each model.implementedBy}} 39 |
      • {{#compact}}{{> type}}{{/compact}}
      • 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}} 80 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Basic Options */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ 8 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ 9 | // "lib": [], /* Specify library files to be included in the compilation. */ 10 | // "allowJs": true, /* Allow javascript files to be compiled. */ 11 | // "checkJs": true, /* Report errors in .js files. */ 12 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ 13 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 14 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 15 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 16 | // "outFile": "./", /* Concatenate and emit output to single file. */ 17 | // "outDir": "./", /* Redirect output structure to the directory. */ 18 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 19 | // "composite": true, /* Enable project compilation */ 20 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 21 | // "removeComments": true, /* Do not emit comments to output. */ 22 | // "noEmit": true, /* Do not emit outputs. */ 23 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 24 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 25 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 26 | 27 | /* Strict Type-Checking Options */ 28 | "strict": true, /* Enable all strict type-checking options. */ 29 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 30 | // "strictNullChecks": true, /* Enable strict null checks. */ 31 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 32 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 33 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 34 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 35 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 36 | 37 | /* Additional Checks */ 38 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 39 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 40 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 41 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 42 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 43 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ 44 | // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ 45 | 46 | /* Module Resolution Options */ 47 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 48 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 49 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 50 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 51 | // "typeRoots": [], /* List of folders to include type definitions from. */ 52 | // "types": [], /* Type declaration files to be included in compilation. */ 53 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 54 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 55 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 56 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 57 | 58 | /* Source Map Options */ 59 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 60 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 61 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 62 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 63 | 64 | /* Experimental Options */ 65 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 66 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 67 | 68 | /* Advanced Options */ 69 | "skipLibCheck": true, /* Skip type checking of declaration files. */ 70 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 71 | }, 72 | "exclude": ["theme","docs"] 73 | } 74 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "VS Code API 中文文档", 3 | "entryPoints": ["./vscode.d.ts"], 4 | "theme": "./theme", 5 | "out": "docs", 6 | "readme": "./README.md", 7 | "sort": ["source-order"] 8 | } --------------------------------------------------------------------------------