├── .editorconfig ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── ci.yml │ └── pr.yml ├── .gitignore ├── CNAME ├── LICENSE ├── README.md ├── SECURITY.md ├── _config.yml ├── angular.json ├── browserslist ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.json ├── karma.conf.js ├── package.json ├── projects └── @ledge-framework │ ├── render │ ├── .gitignore │ ├── README.md │ ├── gulpfile.js │ ├── karma.conf.js │ ├── ng-package.json │ ├── package.json │ ├── src │ │ ├── lib │ │ │ ├── chart │ │ │ │ ├── ledge-bar-chart │ │ │ │ │ ├── ledge-bar-chart.component.html │ │ │ │ │ ├── ledge-bar-chart.component.scss │ │ │ │ │ ├── ledge-bar-chart.component.spec.ts │ │ │ │ │ └── ledge-bar-chart.component.ts │ │ │ │ ├── ledge-fish-bone │ │ │ │ │ ├── fishbone.ts │ │ │ │ │ ├── ledge-fish-bone.component.html │ │ │ │ │ ├── ledge-fish-bone.component.scss │ │ │ │ │ ├── ledge-fish-bone.component.spec.ts │ │ │ │ │ └── ledge-fish-bone.component.ts │ │ │ │ ├── ledge-graphviz │ │ │ │ │ ├── ledge-graphviz.component.html │ │ │ │ │ ├── ledge-graphviz.component.scss │ │ │ │ │ └── ledge-graphviz.component.ts │ │ │ │ ├── ledge-heatmap │ │ │ │ │ ├── ledge-heatmap.component.html │ │ │ │ │ ├── ledge-heatmap.component.scss │ │ │ │ │ ├── ledge-heatmap.component.spec.ts │ │ │ │ │ └── ledge-heatmap.component.ts │ │ │ │ ├── ledge-mindmap │ │ │ │ │ ├── ledge-mindmap.component.html │ │ │ │ │ ├── ledge-mindmap.component.scss │ │ │ │ │ ├── ledge-mindmap.component.spec.ts │ │ │ │ │ └── ledge-mindmap.component.ts │ │ │ │ ├── ledge-pie │ │ │ │ │ ├── ledge-pie.component.html │ │ │ │ │ ├── ledge-pie.component.scss │ │ │ │ │ ├── ledge-pie.component.spec.ts │ │ │ │ │ └── ledge-pie.component.ts │ │ │ │ ├── ledge-pipeline │ │ │ │ │ ├── ledge-pipeline.component.html │ │ │ │ │ ├── ledge-pipeline.component.scss │ │ │ │ │ ├── ledge-pipeline.component.spec.ts │ │ │ │ │ ├── ledge-pipeline.component.ts │ │ │ │ │ └── ledge-pipeline.model.ts │ │ │ │ ├── ledge-pure-echarts │ │ │ │ │ ├── ledge-pure-echarts.component.html │ │ │ │ │ ├── ledge-pure-echarts.component.scss │ │ │ │ │ ├── ledge-pure-echarts.component.spec.ts │ │ │ │ │ └── ledge-pure-echarts.component.ts │ │ │ │ ├── ledge-pyramid │ │ │ │ │ ├── ledge-pyramid.component.html │ │ │ │ │ ├── ledge-pyramid.component.scss │ │ │ │ │ ├── ledge-pyramid.component.spec.ts │ │ │ │ │ └── ledge-pyramid.component.ts │ │ │ │ ├── ledge-quadrant │ │ │ │ │ ├── ledge-quadrant.component.html │ │ │ │ │ ├── ledge-quadrant.component.scss │ │ │ │ │ ├── ledge-quadrant.component.spec.ts │ │ │ │ │ └── ledge-quadrant.component.ts │ │ │ │ ├── ledge-radar │ │ │ │ │ ├── ledge-radar.component.html │ │ │ │ │ ├── ledge-radar.component.scss │ │ │ │ │ ├── ledge-radar.component.spec.ts │ │ │ │ │ └── ledge-radar.component.ts │ │ │ │ ├── ledge-sunburst │ │ │ │ │ ├── ledge-sunburst.component.html │ │ │ │ │ ├── ledge-sunburst.component.scss │ │ │ │ │ ├── ledge-sunburst.component.spec.ts │ │ │ │ │ └── ledge-sunburst.component.ts │ │ │ │ ├── ledge-tech-radar │ │ │ │ │ ├── ledge-tech-radar.component.html │ │ │ │ │ ├── ledge-tech-radar.component.scss │ │ │ │ │ ├── ledge-tech-radar.component.spec.ts │ │ │ │ │ └── ledge-tech-radar.component.ts │ │ │ │ └── ledge-tree │ │ │ │ │ ├── ledge-tree.component.html │ │ │ │ │ ├── ledge-tree.component.scss │ │ │ │ │ ├── ledge-tree.component.spec.ts │ │ │ │ │ └── ledge-tree.component.ts │ │ │ ├── components │ │ │ │ ├── component-checklist │ │ │ │ │ ├── component-checklist.component.html │ │ │ │ │ ├── component-checklist.component.scss │ │ │ │ │ ├── component-checklist.component.spec.ts │ │ │ │ │ └── component-checklist.component.ts │ │ │ │ ├── component-rating-item │ │ │ │ │ ├── component-rating-item.component.html │ │ │ │ │ ├── component-rating-item.component.scss │ │ │ │ │ ├── component-rating-item.component.spec.ts │ │ │ │ │ └── component-rating-item.component.ts │ │ │ │ ├── component-rating │ │ │ │ │ ├── component-rating.component.html │ │ │ │ │ ├── component-rating.component.scss │ │ │ │ │ ├── component-rating.component.spec.ts │ │ │ │ │ └── component-rating.component.ts │ │ │ │ ├── component-todo │ │ │ │ │ ├── component-todo.component.html │ │ │ │ │ ├── component-todo.component.scss │ │ │ │ │ ├── component-todo.component.spec.ts │ │ │ │ │ └── component-todo.component.ts │ │ │ │ ├── ledge-card │ │ │ │ │ ├── ledge-card.component.html │ │ │ │ │ ├── ledge-card.component.scss │ │ │ │ │ ├── ledge-card.component.spec.ts │ │ │ │ │ ├── ledge-card.component.ts │ │ │ │ │ └── lege-card-colors.ts │ │ │ │ ├── ledge-checklist │ │ │ │ │ ├── ledge-checklist.component.html │ │ │ │ │ ├── ledge-checklist.component.scss │ │ │ │ │ ├── ledge-checklist.component.spec.ts │ │ │ │ │ └── ledge-checklist.component.ts │ │ │ │ ├── ledge-dev-process │ │ │ │ │ ├── ledge-dev-process.component.html │ │ │ │ │ ├── ledge-dev-process.component.scss │ │ │ │ │ ├── ledge-dev-process.component.spec.ts │ │ │ │ │ └── ledge-dev-process.component.ts │ │ │ │ ├── ledge-kanban │ │ │ │ │ ├── README.md │ │ │ │ │ ├── ledge-kanban.component.html │ │ │ │ │ ├── ledge-kanban.component.scss │ │ │ │ │ ├── ledge-kanban.component.spec.ts │ │ │ │ │ ├── ledge-kanban.component.ts │ │ │ │ │ └── model │ │ │ │ │ │ ├── board.ts │ │ │ │ │ │ └── column.ts │ │ │ │ ├── ledge-maturity │ │ │ │ │ ├── ledge-maturity.component.html │ │ │ │ │ ├── ledge-maturity.component.scss │ │ │ │ │ ├── ledge-maturity.component.spec.ts │ │ │ │ │ └── ledge-maturity.component.ts │ │ │ │ ├── ledge-mermaid │ │ │ │ │ ├── ledge-mermaid.component.html │ │ │ │ │ ├── ledge-mermaid.component.scss │ │ │ │ │ ├── ledge-mermaid.component.spec.ts │ │ │ │ │ └── ledge-mermaid.component.ts │ │ │ │ ├── ledge-process-step │ │ │ │ │ ├── ledge-process-step.component.html │ │ │ │ │ ├── ledge-process-step.component.scss │ │ │ │ │ ├── ledge-process-step.component.spec.ts │ │ │ │ │ └── ledge-process-step.component.ts │ │ │ │ ├── ledge-step-line │ │ │ │ │ ├── ledge-step-line.component.html │ │ │ │ │ ├── ledge-step-line.component.scss │ │ │ │ │ ├── ledge-step-line.component.spec.ts │ │ │ │ │ └── ledge-step-line.component.ts │ │ │ │ ├── ledge-table-step │ │ │ │ │ ├── ledge-table-step.component.html │ │ │ │ │ ├── ledge-table-step.component.scss │ │ │ │ │ ├── ledge-table-step.component.spec.ts │ │ │ │ │ └── ledge-table-step.component.ts │ │ │ │ └── model │ │ │ │ │ ├── checklist.model.ts │ │ │ │ │ ├── ledge-chart-converter.ts │ │ │ │ │ ├── ledge-chart.model.ts │ │ │ │ │ ├── ledge-markdown-converter.spec.ts │ │ │ │ │ ├── ledge-markdown-converter.ts │ │ │ │ │ ├── markdown.helper.ts │ │ │ │ │ ├── markdown.model.ts │ │ │ │ │ ├── rating.model.ts │ │ │ │ │ └── todo.model.ts │ │ │ ├── custom-material.module.ts │ │ │ ├── ledge-render.component.html │ │ │ ├── ledge-render.component.scss │ │ │ ├── ledge-render.component.spec.ts │ │ │ ├── ledge-render.component.ts │ │ │ ├── ledge-render.module.ts │ │ │ ├── pipes │ │ │ │ ├── tohtml.pipe.spec.ts │ │ │ │ └── tohtml.pipe.ts │ │ │ ├── services │ │ │ │ └── ledge-storage.service.ts │ │ │ ├── styles │ │ │ │ └── _list-style.scss │ │ │ ├── support │ │ │ │ └── ledgeColors.ts │ │ │ ├── theme │ │ │ │ ├── base │ │ │ │ │ ├── _behavior.scss │ │ │ │ │ └── _type.scss │ │ │ │ ├── fish-bone.scss │ │ │ │ ├── graphviz.scss │ │ │ │ ├── index.scss │ │ │ │ ├── maturity.scss │ │ │ │ ├── mermaid.scss │ │ │ │ ├── process-table.scss │ │ │ │ ├── tech-radar.scss │ │ │ │ └── tree.scss │ │ │ └── toolset │ │ │ │ ├── toolset.component.html │ │ │ │ ├── toolset.component.scss │ │ │ │ ├── toolset.component.spec.ts │ │ │ │ ├── toolset.component.ts │ │ │ │ └── toolset.ts │ │ ├── public-api.ts │ │ └── test.ts │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ ├── tsconfig.spec.json │ ├── tslint.json │ └── yarn.lock │ └── view │ ├── README.md │ ├── karma.conf.js │ ├── ng-package.json │ ├── package.json │ ├── src │ ├── lib │ │ ├── custom-material.module.ts │ │ ├── ledge-markdown-render │ │ │ ├── ledge-markdown-render.component.html │ │ │ ├── ledge-markdown-render.component.scss │ │ │ ├── ledge-markdown-render.component.spec.ts │ │ │ ├── ledge-markdown-render.component.ts │ │ │ └── tocify.ts │ │ ├── ledge-multiple-docs │ │ │ ├── doc-route.model.ts │ │ │ ├── ledge-multiple-docs.component.html │ │ │ ├── ledge-multiple-docs.component.scss │ │ │ ├── ledge-multiple-docs.component.spec.ts │ │ │ └── ledge-multiple-docs.component.ts │ │ └── ledge-view.module.ts │ ├── public-api.ts │ └── test.ts │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ ├── tsconfig.spec.json │ ├── tslint.json │ └── yarn.lock ├── src ├── app │ ├── app-routing.module.ts │ ├── app.module.ts │ ├── globals.d.ts │ ├── ledge-editor │ │ ├── ledge-editor.component.html │ │ ├── ledge-editor.component.scss │ │ ├── ledge-editor.component.spec.ts │ │ ├── ledge-editor.component.ts │ │ └── ledge-editor.module.ts │ └── ledge │ │ ├── ledge.component.html │ │ ├── ledge.component.scss │ │ ├── ledge.component.spec.ts │ │ └── ledge.component.ts ├── assets │ ├── .gitkeep │ └── docs │ │ └── help.md ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts ├── styles.scss └── test.ts ├── stories └── 9qPuTQRMg-support-web-components.feature ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: phodal 4 | patreon: phodal 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🐛 Bug Report 3 | about: Did something not work as expected? 4 | --- 5 | 6 | 11 | 12 | 21 | 22 | ## Bug Report 23 | 24 | 29 | 30 | ## Current Behavior? 31 | 32 | 37 | 38 | 43 | 44 | ## Expected Behavior? 45 | 46 | 51 | 52 | ## Steps to reproduce [Optional] 53 | 54 | 59 | 60 | 61 | ## Your Environment [Optional] 62 | 63 | 68 | 69 | 74 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🙋 Feature Request 3 | about: Want us to add something to Ledge? 4 | --- 5 | 6 | 11 | 12 | 21 | 22 | ## Feature Request 23 | 24 | 35 | 36 | ## What does the proposed API examples? 37 | 38 | 43 | 44 | ## Other reference [Optional] 45 | 46 | 51 | 52 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: 8 | push: 9 | branches: [master] 10 | 11 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 12 | jobs: 13 | # This workflow contains a single job called "build" 14 | build: 15 | # The type of runner that the job will run on 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly. 21 | with: 22 | persist-credentials: false 23 | 24 | - name: Use Node.js 12.x 25 | uses: actions/setup-node@v1 26 | with: 27 | node-version: "12.x" 28 | 29 | - name: Get yarn cache directory path 30 | id: yarn-cache-dir-path 31 | run: echo "::set-output name=dir::$(yarn cache dir)" 32 | 33 | - uses: actions/cache@v1 34 | id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) 35 | with: 36 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 37 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 38 | restore-keys: | 39 | ${{ runner.os }}-yarn- 40 | 41 | - name: Install 42 | run: | 43 | yarn install 44 | 45 | - name: Lint 46 | run: | 47 | yarn lint 48 | 49 | - name: Build 50 | run: | 51 | yarn build:ci 52 | 53 | - name: Testing 54 | run: yarn test:ci 55 | 56 | - name: Upload coverage to Codecov 57 | uses: codecov/codecov-action@v1 58 | with: 59 | file: ./coverage/ledge/lcov.info 60 | flags: unittests 61 | name: codecov-umbrella 62 | fail_ci_if_error: false 63 | -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: PULL REQUEST 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: 8 | pull_request: 9 | branches: [master] 10 | 11 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 12 | jobs: 13 | # This workflow contains a single job called "build" 14 | build: 15 | # The type of runner that the job will run on 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly. 21 | with: 22 | persist-credentials: false 23 | 24 | - name: Use Node.js 12.x 25 | uses: actions/setup-node@v1 26 | with: 27 | node-version: "12.x" 28 | 29 | - name: Install 30 | run: | 31 | yarn install 32 | 33 | - name: Lint 34 | run: | 35 | yarn lint 36 | 37 | - name: Testing 38 | run: yarn test:ci 39 | 40 | - name: Build 41 | run: yarn build:ci 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | prebuild-theme 8 | 9 | # Only exists if Bazel was run 10 | /bazel-out 11 | 12 | # dependencies 13 | /node_modules 14 | 15 | # profiling files 16 | chrome-profiler-events*.json 17 | speed-measure-plugin*.json 18 | 19 | # IDEs and editors 20 | /.idea 21 | .project 22 | .classpath 23 | .c9/ 24 | *.launch 25 | .settings/ 26 | *.sublime-workspace 27 | 28 | # IDE - VSCode 29 | .vscode/* 30 | !.vscode/settings.json 31 | !.vscode/tasks.json 32 | !.vscode/launch.json 33 | !.vscode/extensions.json 34 | .history/* 35 | 36 | # misc 37 | /.sass-cache 38 | /connect.lock 39 | /coverage 40 | /libpeerconnection.log 41 | npm-debug.log 42 | yarn-error.log 43 | testem.log 44 | /typings 45 | 46 | # System Files 47 | .DS_Store 48 | Thumbs.db 49 | package-lock.json 50 | .idea/ 51 | plugins/.idea 52 | */coverage/ 53 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | jekyll.ledge.ink -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ledge Framework Engine 2 | 3 | > Legde framework is a documentation as code practises framework. 4 | 5 | demo page: [https://devops.phodal.com/helper](https://devops.phodal.com/helper) 6 | 7 | online editor: [https://devops.phodal.com/helper](https://devops.phodal.com/helper) 8 | 9 |  10 |  11 |  12 | 13 | ## Syntax 14 | 15 | ### Ledge extend code syntax 16 | 17 | ```` 18 | ```process-step 19 | - step1 20 | - demo 21 | - kanban 22 | ``` 23 | ```` 24 | 25 | - Chart 26 | - echarts. Echarts chart. 27 | - chart. Echarts bar chart. 28 | - mindmap. Markdown List to mindmap. 29 | - radar. Markdown List to radar chart. 30 | - tech radar. Markdown list to tech radar chart. 31 | - pie。Pie chart 32 | - quadrant。quadrant chart 33 | - pyramid。pyramid chart 34 | - graphviz。dot to graph 35 | - process visualization 36 | - process-table。process chart 37 | - process-step。process chart 2 38 | - process-card。card process chart 39 | - dev-process。process with logo 40 | - step-line。title only line chart 41 | - table-step。with arrow table chart 42 | - checklist。checklists 43 | - mermaid。use [mermaid](https://mermaid-js.github.io/mermaid/) as visual tools 44 | - toolset。use toolset components to extends 45 | - slider 46 | - line-chart 47 | - pipeline。ci pipeline 48 | - maturity。check, rating with radrar for maturity 49 | 50 | ### slide examples 51 | 52 | ```` 53 | ```toolset 54 | - 用户体验 55 | - 时间 56 | - 成本 57 | - 安全 58 | - 范围 59 | 60 | config: {"type": "slider"} 61 | ``` 62 | ```` 63 | 64 | ## Usage 65 | 66 | ### Use with Web Components 67 | 68 | 1. import styles 69 | 70 | ```html 71 | 72 | ``` 73 | 74 | 2. import code 75 | 76 | ```html 77 |
78 | 86 | ``` 87 | 88 | 3. import script 89 | 90 | ```html 91 | 92 | 93 | 94 | ``` 95 | 96 | ### Use in Angular 97 | 98 | 1.install: `yarn add @ledge-framework/render` 99 | 2.import module 100 | 101 | ``` 102 | import { LedgeRenderModule } from '@ledge-framework/render'; 103 | 104 | @NgModule({ 105 | imports: [ 106 | ... 107 | LedgeRenderModule, 108 | ] 109 | ... 110 | }) 111 | ``` 112 | 113 | 3. import styles 114 | 115 | ``` 116 | @import "~@ledge-framework/render/prebuild-theme/index.css"; 117 | ``` 118 | 119 | or import in `angular.json` 120 | 121 | 4.use it 122 | 123 | ``` 124 |12 | {{ cell }} 13 |
14 |