├── .babelrc
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
├── build.js
├── check-versions.js
├── dev-client.js
├── dev-server.js
├── utils.js
├── vue-loader.conf.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
└── prod.env.js
├── dist
├── index.html
└── static
│ ├── css
│ ├── app.b8a96cfdfc41fc31b20c241864d5cf56.css
│ ├── app.b8a96cfdfc41fc31b20c241864d5cf56.css.map
│ ├── atom-one-dark.min.css
│ ├── github-markdown.css
│ └── reset.scss
│ └── js
│ ├── app.912d741ee45a23187c6f.js
│ ├── app.912d741ee45a23187c6f.js.map
│ ├── highlight.min.js
│ ├── manifest.b26844df2548cfeeb839.js
│ ├── manifest.b26844df2548cfeeb839.js.map
│ ├── rangeFn.js
│ ├── vendor.0c5398add9621bc4c0a5.js
│ └── vendor.0c5398add9621bc4c0a5.js.map
├── docs
├── index.html
└── static
│ ├── css
│ ├── app.b8a96cfdfc41fc31b20c241864d5cf56.css
│ ├── app.b8a96cfdfc41fc31b20c241864d5cf56.css.map
│ ├── atom-one-dark.min.css
│ ├── github-markdown.css
│ └── reset.scss
│ └── js
│ ├── app.912d741ee45a23187c6f.js
│ ├── app.912d741ee45a23187c6f.js.map
│ ├── highlight.min.js
│ ├── manifest.b26844df2548cfeeb839.js
│ ├── manifest.b26844df2548cfeeb839.js.map
│ ├── rangeFn.js
│ ├── vendor.0c5398add9621bc4c0a5.js
│ └── vendor.0c5398add9621bc4c0a5.js.map
├── index.html
├── package.json
├── src
├── App.vue
├── assets
│ └── logo.png
├── components
│ ├── index.vue
│ └── markdown.vue
├── main.js
└── router
│ └── index.js
└── static
├── .gitkeep
├── css
├── atom-one-dark.min.css
├── github-markdown.css
└── reset.scss
└── js
├── highlight.min.js
└── rangeFn.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", { "modules": false }],
4 | "stage-2"
5 | ],
6 | "plugins": ["transform-runtime"],
7 | "comments": false,
8 | "env": {
9 | "test": {
10 | "presets": ["env", "stage-2"],
11 | "plugins": [ "istanbul" ]
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | npm-debug.log
4 | yarn-error.log
5 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserlist" field in package.json
6 | "autoprefixer": {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-mdeditor
2 |
3 | > 基于VUE的markdown文本编辑器
4 |
5 | ## 更新历史
6 |
7 | * 2017/08/08
8 | * 修复组件配置属性的判定错误,感谢[Imprevia](https://github.com/Imprevia)
9 | * 2017/03/29
10 | * 编辑器双向同步滚动功能
11 | * 支持配置左上角版权标志(吃水不忘挖井人,谢过了),
12 | * 优化表格快捷输入
13 | * 其他优化
14 | * 2017/03/27
15 | * 新增顶部窗口配置
16 | * 优化参数配置可能出现的bug
17 | * 优化组件传值,增加html格式的输出内容,便于用户上传
18 | * 修复文档部分错误
19 | * 2017/03/24
20 | * 初始化项目
21 | * 完成基本的功能,包括:
22 | * H1-H6标题等快捷输入
23 | * 编辑区域tab缩进
24 | * 编译后文件预览并高亮
25 | * VUE组件传值,配置输入和输出等
26 |
27 | ## DEMO案例
28 | > 我知道你想先看看效果,特意准备了在线DEMO,点进去看看吧
29 |
30 | **传送门** ======> [vue-mdeditor](https://ovenslove.github.io/vue-mdEditor/)
31 |
32 | ## 运行实例
33 |
34 | ``` bash
35 | # 安装依赖
36 | cnpm install
37 |
38 | # 开启热更新服务器s在 localhost:4397 (4397为自定义端口,如果需要修改,请前往/config/index.js:26(port:4397)修改)
39 | cnpm run dev
40 |
41 | # 打包压缩项目,并输出生产模式文件
42 | cnpm run build
43 |
44 | # 打包压缩文件,过程带输出信息
45 | cnpm run build --report
46 | ```
47 | ## 使用方法
48 | > 使用前必知
49 |
50 | 本markdown组件采用vue-cli模式开发,适用于此类开发模式,其他模式请自行修改。
51 |
52 | > 安装依赖
53 | ```bash
54 | # 本组件css采用sass编写,亦可修改为css(请自行修改),核心依赖marked组件,请务必安装,谢谢
55 | # markdown编译依赖 marked 地址:https://www.npmjs.com/package/marked
56 | # 同步滚动依赖 vue-scroll 地址:https://www.npmjs.com/package/vue-scroll
57 | cnpm i marked vue-scroll --save
58 |
59 | cnpm i node-sass sass-loader --save-dev
60 | ```
61 | > 配置要求
62 | ```html
63 |
64 |
65 | ```
66 | ```javascript
67 | // 根据项目修改引入文件的路径(所需文件放在了static目录下)
68 | import Vue from 'vue'
69 | import marked from 'marked'
70 | import scroll from 'vue-scroll'
71 | Vue.use(scroll)
72 | import hljs from '../../static/js/highlight.min.js'
73 | import range from '../../static/js/rangeFn.js'
74 | ```
75 | ```css
76 | /*根据项目修改引入文件的路径(所需文件放在了static目录下)*/
77 | /*引入reset文件*/
78 | @import "../../static/css/reset";
79 | /*引入github的markdown样式文件*/
80 | @import "../../static/css/github-markdown.css";
81 | /*引入atom的代码高亮样式文件*/
82 | @import "../../static/css/atom-one-dark.min.css";
83 |
84 | ```
85 |
86 | > 父组件中
87 |
88 | ```html
89 |
90 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | ```
109 | ```javascript
110 | // 引入markdown组件
111 | import markdown from '../components/markdown'
112 | export default {
113 | name: 'index',
114 | data() {
115 | return {
116 | msg: {
117 | mdValue:'## Vue-markdownEditor'
118 | }
119 | //初始化markdown编辑器的内容,通过props传入子组件
120 | }
121 | },
122 | components: {
123 | markdown // 声明mardown组件
124 | },
125 | methods: {
126 | // 监听事件,接收子组件传过来的数据
127 | childEventHandler:function(res){
128 | // res会传回一个data,包含属性mdValue和htmlValue,具体含义请自行翻译
129 | this.msg=res;
130 | }
131 | }
132 | }
133 | ```
134 | ## 效果展示
135 |
136 | 
137 |
138 | ## 后期更新
139 |
140 | 1. 更多的语法支持
141 | 2. 更丰富的API文档
142 | 3. 更人性化的使用体验
143 | 4. 更傻瓜式的配置方式
144 |
145 | > 喜欢就关注一下吧。@_@!!!
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | require('./check-versions')()
2 |
3 | process.env.NODE_ENV = 'production'
4 |
5 | var ora = require('ora')
6 | var rm = require('rimraf')
7 | var path = require('path')
8 | var chalk = require('chalk')
9 | var webpack = require('webpack')
10 | var config = require('../config')
11 | var webpackConfig = require('./webpack.prod.conf')
12 |
13 | var spinner = ora('building for production...')
14 | spinner.start()
15 |
16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
17 | if (err) throw err
18 | webpack(webpackConfig, function (err, stats) {
19 | spinner.stop()
20 | if (err) throw err
21 | process.stdout.write(stats.toString({
22 | colors: true,
23 | modules: false,
24 | children: false,
25 | chunks: false,
26 | chunkModules: false
27 | }) + '\n\n')
28 |
29 | console.log(chalk.cyan(' Build complete.\n'))
30 | console.log(chalk.yellow(
31 | ' Tip: built files are meant to be served over an HTTP server.\n' +
32 | ' Opening index.html over file:// won\'t work.\n'
33 | ))
34 | })
35 | })
36 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | var chalk = require('chalk')
2 | var semver = require('semver')
3 | var packageConfig = require('../package.json')
4 |
5 | function exec (cmd) {
6 | return require('child_process').execSync(cmd).toString().trim()
7 | }
8 |
9 | var versionRequirements = [
10 | {
11 | name: 'node',
12 | currentVersion: semver.clean(process.version),
13 | versionRequirement: packageConfig.engines.node
14 | },
15 | {
16 | name: 'npm',
17 | currentVersion: exec('npm --version'),
18 | versionRequirement: packageConfig.engines.npm
19 | }
20 | ]
21 |
22 | module.exports = function () {
23 | var warnings = []
24 | for (var i = 0; i < versionRequirements.length; i++) {
25 | var mod = versionRequirements[i]
26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
27 | warnings.push(mod.name + ': ' +
28 | chalk.red(mod.currentVersion) + ' should be ' +
29 | chalk.green(mod.versionRequirement)
30 | )
31 | }
32 | }
33 |
34 | if (warnings.length) {
35 | console.log('')
36 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
37 | console.log()
38 | for (var i = 0; i < warnings.length; i++) {
39 | var warning = warnings[i]
40 | console.log(' ' + warning)
41 | }
42 | console.log()
43 | process.exit(1)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/build/dev-client.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | require('eventsource-polyfill')
3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
4 |
5 | hotClient.subscribe(function (event) {
6 | if (event.action === 'reload') {
7 | window.location.reload()
8 | }
9 | })
10 |
--------------------------------------------------------------------------------
/build/dev-server.js:
--------------------------------------------------------------------------------
1 | require('./check-versions')()
2 |
3 | var config = require('../config')
4 | if (!process.env.NODE_ENV) {
5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
6 | }
7 |
8 | var opn = require('opn')
9 | var path = require('path')
10 | var express = require('express')
11 | var webpack = require('webpack')
12 | var proxyMiddleware = require('http-proxy-middleware')
13 | var webpackConfig = require('./webpack.dev.conf')
14 |
15 | // default port where dev server listens for incoming traffic
16 | var port = process.env.PORT || config.dev.port
17 | // automatically open browser, if not set will be false
18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser
19 | // Define HTTP proxies to your custom API backend
20 | // https://github.com/chimurai/http-proxy-middleware
21 | var proxyTable = config.dev.proxyTable
22 |
23 | var app = express()
24 | var compiler = webpack(webpackConfig)
25 |
26 | var devMiddleware = require('webpack-dev-middleware')(compiler, {
27 | publicPath: webpackConfig.output.publicPath,
28 | quiet: true
29 | })
30 |
31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, {
32 | log: () => {}
33 | })
34 | // force page reload when html-webpack-plugin template changes
35 | compiler.plugin('compilation', function (compilation) {
36 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
37 | hotMiddleware.publish({ action: 'reload' })
38 | cb()
39 | })
40 | })
41 |
42 | // proxy api requests
43 | Object.keys(proxyTable).forEach(function (context) {
44 | var options = proxyTable[context]
45 | if (typeof options === 'string') {
46 | options = { target: options }
47 | }
48 | app.use(proxyMiddleware(options.filter || context, options))
49 | })
50 |
51 | // handle fallback for HTML5 history API
52 | app.use(require('connect-history-api-fallback')())
53 |
54 | // serve webpack bundle output
55 | app.use(devMiddleware)
56 |
57 | // enable hot-reload and state-preserving
58 | // compilation error display
59 | app.use(hotMiddleware)
60 |
61 | // serve pure static assets
62 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
63 | app.use(staticPath, express.static('./static'))
64 |
65 | var uri = 'http://localhost:' + port
66 |
67 | var _resolve
68 | var readyPromise = new Promise(resolve => {
69 | _resolve = resolve
70 | })
71 |
72 | console.log('> Starting dev server...')
73 | devMiddleware.waitUntilValid(() => {
74 | console.log('> Listening at ' + uri + '\n')
75 | // when env is testing, don't need open it
76 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
77 | opn(uri)
78 | }
79 | _resolve()
80 | })
81 |
82 | var server = app.listen(port)
83 |
84 | module.exports = {
85 | ready: readyPromise,
86 | close: () => {
87 | server.close()
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var config = require('../config')
3 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
4 |
5 | exports.assetsPath = function (_path) {
6 | var assetsSubDirectory = process.env.NODE_ENV === 'production'
7 | ? config.build.assetsSubDirectory
8 | : config.dev.assetsSubDirectory
9 | return path.posix.join(assetsSubDirectory, _path)
10 | }
11 |
12 | exports.cssLoaders = function (options) {
13 | options = options || {}
14 |
15 | var cssLoader = {
16 | loader: 'css-loader',
17 | options: {
18 | minimize: process.env.NODE_ENV === 'production',
19 | sourceMap: options.sourceMap
20 | }
21 | }
22 |
23 | // generate loader string to be used with extract text plugin
24 | function generateLoaders (loader, loaderOptions) {
25 | var loaders = [cssLoader]
26 | if (loader) {
27 | loaders.push({
28 | loader: loader + '-loader',
29 | options: Object.assign({}, loaderOptions, {
30 | sourceMap: options.sourceMap
31 | })
32 | })
33 | }
34 |
35 | // Extract CSS when that option is specified
36 | // (which is the case during production build)
37 | if (options.extract) {
38 | return ExtractTextPlugin.extract({
39 | use: loaders,
40 | fallback: 'vue-style-loader'
41 | })
42 | } else {
43 | return ['vue-style-loader'].concat(loaders)
44 | }
45 | }
46 |
47 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
48 | return {
49 | css: generateLoaders(),
50 | postcss: generateLoaders(),
51 | less: generateLoaders('less'),
52 | sass: generateLoaders('sass', { indentedSyntax: true }),
53 | scss: generateLoaders('sass'),
54 | stylus: generateLoaders('stylus'),
55 | styl: generateLoaders('stylus')
56 | }
57 | }
58 |
59 | // Generate loaders for standalone style files (outside of .vue)
60 | exports.styleLoaders = function (options) {
61 | var output = []
62 | var loaders = exports.cssLoaders(options)
63 | for (var extension in loaders) {
64 | var loader = loaders[extension]
65 | output.push({
66 | test: new RegExp('\\.' + extension + '$'),
67 | use: loader
68 | })
69 | }
70 | return output
71 | }
72 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | var utils = require('./utils')
2 | var config = require('../config')
3 | var isProduction = process.env.NODE_ENV === 'production'
4 |
5 | module.exports = {
6 | loaders: utils.cssLoaders({
7 | sourceMap: isProduction
8 | ? config.build.productionSourceMap
9 | : config.dev.cssSourceMap,
10 | extract: isProduction
11 | })
12 | }
13 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var utils = require('./utils')
3 | var config = require('../config')
4 | var vueLoaderConfig = require('./vue-loader.conf')
5 |
6 | function resolve(dir) {
7 | return path.join(__dirname, '..', dir)
8 | }
9 |
10 | module.exports = {
11 | entry: {
12 | app: './src/main.js'
13 | },
14 | output: {
15 | path: config.build.assetsRoot,
16 | filename: '[name].js',
17 | publicPath: process.env.NODE_ENV === 'production' ?
18 | config.build.assetsPublicPath : config.dev.assetsPublicPath
19 | },
20 | resolve: {
21 | extensions: ['.js', '.vue', '.json'],
22 | alias: {
23 | 'vue$': 'vue/dist/vue.esm.js',
24 | '@': resolve('src'),
25 | }
26 | },
27 | module: {
28 | rules: [{
29 | test: /\.vue$/,
30 | loader: 'vue-loader',
31 | options: vueLoaderConfig
32 | },
33 | {
34 | test: /\.js$/,
35 | loader: 'babel-loader',
36 | include: [resolve('src'), resolve('test')]
37 | },
38 | {
39 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
40 | loader: 'url-loader',
41 | query: {
42 | limit: 10000,
43 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
44 | }
45 | },
46 | {
47 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
48 | loader: 'url-loader',
49 | query: {
50 | limit: 10000,
51 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
52 | }
53 | },
54 | {
55 | test: /\.scss$/,
56 | loader: 'style!css!sass?sourceMap'
57 | },
58 |
59 | {
60 | test: /\.jade$/,
61 | loader: "jade"
62 | },
63 | {
64 | test: /\.pug$/,
65 | loader: 'pug'
66 | }
67 | ]
68 | }
69 | }
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | var utils = require('./utils')
2 | var webpack = require('webpack')
3 | var config = require('../config')
4 | var merge = require('webpack-merge')
5 | var baseWebpackConfig = require('./webpack.base.conf')
6 | var HtmlWebpackPlugin = require('html-webpack-plugin')
7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
8 |
9 | // add hot-reload related code to entry chunks
10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) {
11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
12 | })
13 |
14 | module.exports = merge(baseWebpackConfig, {
15 | module: {
16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
17 | },
18 | // cheap-module-eval-source-map is faster for development
19 | devtool: '#cheap-module-eval-source-map',
20 | plugins: [
21 | new webpack.DefinePlugin({
22 | 'process.env': config.dev.env
23 | }),
24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
25 | new webpack.HotModuleReplacementPlugin(),
26 | new webpack.NoEmitOnErrorsPlugin(),
27 | // https://github.com/ampedandwired/html-webpack-plugin
28 | new HtmlWebpackPlugin({
29 | filename: 'index.html',
30 | template: 'index.html',
31 | inject: true
32 | }),
33 | new FriendlyErrorsPlugin()
34 | ]
35 | })
36 |
--------------------------------------------------------------------------------
/build/webpack.prod.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var utils = require('./utils')
3 | var webpack = require('webpack')
4 | var config = require('../config')
5 | var merge = require('webpack-merge')
6 | var baseWebpackConfig = require('./webpack.base.conf')
7 | var CopyWebpackPlugin = require('copy-webpack-plugin')
8 | var HtmlWebpackPlugin = require('html-webpack-plugin')
9 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
10 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
11 |
12 | var env = config.build.env
13 |
14 | var webpackConfig = merge(baseWebpackConfig, {
15 | module: {
16 | rules: utils.styleLoaders({
17 | sourceMap: config.build.productionSourceMap,
18 | extract: true
19 | })
20 | },
21 | devtool: config.build.productionSourceMap ? '#source-map' : false,
22 | output: {
23 | path: config.build.assetsRoot,
24 | filename: utils.assetsPath('js/[name].[chunkhash].js'),
25 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
26 | },
27 | plugins: [
28 | // http://vuejs.github.io/vue-loader/en/workflow/production.html
29 | new webpack.DefinePlugin({
30 | 'process.env': env
31 | }),
32 | new webpack.optimize.UglifyJsPlugin({
33 | compress: {
34 | warnings: false
35 | },
36 | sourceMap: true
37 | }),
38 | // extract css into its own file
39 | new ExtractTextPlugin({
40 | filename: utils.assetsPath('css/[name].[contenthash].css')
41 | }),
42 | // Compress extracted CSS. We are using this plugin so that possible
43 | // duplicated CSS from different components can be deduped.
44 | new OptimizeCSSPlugin({
45 | cssProcessorOptions: {
46 | safe: true
47 | }
48 | }),
49 | // generate dist index.html with correct asset hash for caching.
50 | // you can customize output by editing /index.html
51 | // see https://github.com/ampedandwired/html-webpack-plugin
52 | new HtmlWebpackPlugin({
53 | filename: config.build.index,
54 | template: 'index.html',
55 | inject: true,
56 | minify: {
57 | removeComments: true,
58 | collapseWhitespace: true,
59 | removeAttributeQuotes: true
60 | // more options:
61 | // https://github.com/kangax/html-minifier#options-quick-reference
62 | },
63 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin
64 | chunksSortMode: 'dependency'
65 | }),
66 | // split vendor js into its own file
67 | new webpack.optimize.CommonsChunkPlugin({
68 | name: 'vendor',
69 | minChunks: function (module, count) {
70 | // any required modules inside node_modules are extracted to vendor
71 | return (
72 | module.resource &&
73 | /\.js$/.test(module.resource) &&
74 | module.resource.indexOf(
75 | path.join(__dirname, '../node_modules')
76 | ) === 0
77 | )
78 | }
79 | }),
80 | // extract webpack runtime and module manifest to its own file in order to
81 | // prevent vendor hash from being updated whenever app bundle is updated
82 | new webpack.optimize.CommonsChunkPlugin({
83 | name: 'manifest',
84 | chunks: ['vendor']
85 | }),
86 | // copy custom static assets
87 | new CopyWebpackPlugin([
88 | {
89 | from: path.resolve(__dirname, '../static'),
90 | to: config.build.assetsSubDirectory,
91 | ignore: ['.*']
92 | }
93 | ])
94 | ]
95 | })
96 |
97 | if (config.build.productionGzip) {
98 | var CompressionWebpackPlugin = require('compression-webpack-plugin')
99 |
100 | webpackConfig.plugins.push(
101 | new CompressionWebpackPlugin({
102 | asset: '[path].gz[query]',
103 | algorithm: 'gzip',
104 | test: new RegExp(
105 | '\\.(' +
106 | config.build.productionGzipExtensions.join('|') +
107 | ')$'
108 | ),
109 | threshold: 10240,
110 | minRatio: 0.8
111 | })
112 | )
113 | }
114 |
115 | if (config.build.bundleAnalyzerReport) {
116 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
117 | webpackConfig.plugins.push(new BundleAnalyzerPlugin())
118 | }
119 |
120 | module.exports = webpackConfig
121 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var prodEnv = require('./prod.env')
3 |
4 | module.exports = merge(prodEnv, {
5 | NODE_ENV: '"development"'
6 | })
7 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | // see http://vuejs-templates.github.io/webpack for documentation.
2 | var path = require('path')
3 |
4 | module.exports = {
5 | build: {
6 | env: require('./prod.env'),
7 | index: path.resolve(__dirname, '../dist/index.html'),
8 | assetsRoot: path.resolve(__dirname, '../dist'),
9 | assetsSubDirectory: 'static',
10 | assetsPublicPath: '/',
11 | productionSourceMap: true,
12 | // Gzip off by default as many popular static hosts such as
13 | // Surge or Netlify already gzip all static assets for you.
14 | // Before setting to `true`, make sure to:
15 | // npm install --save-dev compression-webpack-plugin
16 | productionGzip: false,
17 | productionGzipExtensions: ['js', 'css'],
18 | // Run the build command with an extra argument to
19 | // View the bundle analyzer report after build finishes:
20 | // `npm run build --report`
21 | // Set to `true` or `false` to always turn it on or off
22 | bundleAnalyzerReport: process.env.npm_config_report
23 | },
24 | dev: {
25 | env: require('./dev.env'),
26 | port: 4397,
27 | autoOpenBrowser: true,
28 | assetsSubDirectory: 'static',
29 | assetsPublicPath: '/',
30 | proxyTable: {},
31 | // CSS Sourcemaps off by default because relative paths are "buggy"
32 | // with this option, according to the CSS-Loader README
33 | // (https://github.com/webpack/css-loader#sourcemaps)
34 | // In our experience, they generally work as expected,
35 | // just be aware of this issue when enabling this option.
36 | cssSourceMap: false
37 | }
38 | }
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
vue-mdeditor
--------------------------------------------------------------------------------
/dist/static/css/app.b8a96cfdfc41fc31b20c241864d5cf56.css:
--------------------------------------------------------------------------------
1 | #app,body,html{height:100%;width:100%}.show[data-v-b74131ec]{position:absolute;left:0;top:0}.indexContainer[data-v-b74131ec]{width:100%;height:100%;background:#ddd;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.btnsContainer[data-v-b74131ec],.indexContainer[data-v-b74131ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnsContainer[data-v-b74131ec]{position:absolute;z-index:10;left:65px;top:5px;height:25px;min-width:300px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btnsContainer .btn[data-v-b74131ec]{display:inline-block;border:1px solid #ccc;margin-right:10px;box-sizing:border-box;padding:0 10px;background:#fff;font-size:12px;height:25px;line-height:25px;cursor:pointer;moz-user-select:-moz-none;-moz-user-select:none;-o-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btnsContainer .btn[data-v-b74131ec]:active{opacity:.8;background:#add8e6}.maskContainer[data-v-b74131ec]{position:absolute;left:0;top:0;height:100%;width:100%;height:100vh;width:100vw;background:rgba(0,0,0,.5);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.maskContainer .contentContainer[data-v-b74131ec]{width:60%;height:60%;background:#fefefe;padding:20px;box-sizing:border-box;position:relative}.maskContainer .contentContainer .showAreaContainer[data-v-b74131ec]{height:100%;width:100%;outline:none;background:#eee;display:block;resize:none;padding:10px;box-sizing:border-box}.maskContainer .contentContainer .closeBtnContainer[data-v-b74131ec]{position:absolute;height:30px;width:30px;right:-40px;top:-40px;border:1px solid #fff;border-radius:50%}.maskContainer .contentContainer .closeBtnContainer[data-v-b74131ec]:before{content:"";position:absolute;width:70%;height:2px;display:bblock;background:#fff;left:15%;top:calc(50% - 1px);transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg)}.maskContainer .contentContainer .closeBtnContainer[data-v-b74131ec]:after{content:"";position:absolute;width:70%;height:2px;display:bblock;background:#fff;left:15%;top:calc(50% - 1px);transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg)}.editorContainer[data-v-b74131ec]{width:90%;height:90%;border:1px solid #ddd}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#969896}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0086b3}.markdown-body .pl-e,.markdown-body .pl-en{color:#795da3}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#333}.markdown-body .pl-ent{color:#63a35c}.markdown-body .pl-k{color:#a71d5d}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#183691}.markdown-body .pl-v{color:#ed6a43}.markdown-body .pl-id{color:#b52a1d}.markdown-body .pl-ii{color:#f8f8f8;background-color:#b52a1d}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#63a35c}.markdown-body .pl-ml{color:#693a17}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#1d3e81}.markdown-body .pl-mq{color:teal}.markdown-body .pl-mi{font-style:italic;color:#333}.markdown-body .pl-mb{font-weight:700;color:#333}.markdown-body .pl-md{color:#bd2c00;background-color:#ffecec}.markdown-body .pl-mi1{color:#55a532;background-color:#eaffea}.markdown-body .pl-mdr{font-weight:700;color:#795da3}.markdown-body .pl-mo{color:#1d3e81}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#4078c0;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #ddd}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body input{-webkit-font-feature-settings:"liga" 0;font-feature-settings:"liga" 0}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{padding:0 1em;color:#777;border-left:.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{font-size:11px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#777}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\A0"}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:3px!important}.markdown-body .pl-2{padding-left:6px!important}.markdown-body .pl-3{padding-left:12px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:36px!important}.markdown-body .pl-6{padding-left:48px!important}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
2 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */*{margin:0;padding:0;border:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body,html{height:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.clearfix{overflow:hidden;_zoom:1}.mdContainer{width:100%;height:100%;background:#add8e6}.mdContainer.fullPage{position:fixed;z-index:1000;left:0;top:0}.mdContainer .navContainer{width:100%;height:36px;background:#fff;box-sizing:border-box;border-bottom:1px solid #eee;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px}.mdContainer .navContainer .nameContainer{color:#add8e6;margin-right:10px;cursor:pointer}.mdContainer .navContainer .markContainer{width:auto;height:100%;margin-left:0}.mdContainer .navContainer .markContainer ul.markListGroup{height:100%;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mdContainer .navContainer .markContainer ul.markListGroup li.markListItem{list-style:none;width:20px;height:20px;margin:0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;font-size:12px;color:#333}.mdContainer .navContainer .markContainer ul.markListGroup li.markListItem:hover{background:#eee}.mdContainer .mdBodyContainer{width:100%;height:calc(100% - 36px);background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box}.mdContainer .mdBodyContainer.noMenu{height:100%}.editContainer{height:100%;width:100%;box-sizing:border-box;border-right:1px solid #ddd;background:#333;color:#fff;padding:10px}.editContainer .mdEditor{height:100%;width:100%;background:transparent;outline:none;color:#fff;resize:none}.previewContainer{width:100%;height:100%;box-sizing:border-box;background:#fff;overflow:auto;padding:10px}
--------------------------------------------------------------------------------
/dist/static/css/atom-one-dark.min.css:
--------------------------------------------------------------------------------
1 | .hljs{display:block;overflow-x:auto;padding:0.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}
--------------------------------------------------------------------------------
/dist/static/css/github-markdown.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: octicons-link;
3 | src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
4 | }
5 |
6 | .markdown-body {
7 | -ms-text-size-adjust: 100%;
8 | -webkit-text-size-adjust: 100%;
9 | line-height: 1.5;
10 | color: #333;
11 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
12 | font-size: 16px;
13 | line-height: 1.5;
14 | word-wrap: break-word;
15 | }
16 |
17 | .markdown-body .pl-c {
18 | color: #969896;
19 | }
20 |
21 | .markdown-body .pl-c1,
22 | .markdown-body .pl-s .pl-v {
23 | color: #0086b3;
24 | }
25 |
26 | .markdown-body .pl-e,
27 | .markdown-body .pl-en {
28 | color: #795da3;
29 | }
30 |
31 | .markdown-body .pl-smi,
32 | .markdown-body .pl-s .pl-s1 {
33 | color: #333;
34 | }
35 |
36 | .markdown-body .pl-ent {
37 | color: #63a35c;
38 | }
39 |
40 | .markdown-body .pl-k {
41 | color: #a71d5d;
42 | }
43 |
44 | .markdown-body .pl-s,
45 | .markdown-body .pl-pds,
46 | .markdown-body .pl-s .pl-pse .pl-s1,
47 | .markdown-body .pl-sr,
48 | .markdown-body .pl-sr .pl-cce,
49 | .markdown-body .pl-sr .pl-sre,
50 | .markdown-body .pl-sr .pl-sra {
51 | color: #183691;
52 | }
53 |
54 | .markdown-body .pl-v {
55 | color: #ed6a43;
56 | }
57 |
58 | .markdown-body .pl-id {
59 | color: #b52a1d;
60 | }
61 |
62 | .markdown-body .pl-ii {
63 | color: #f8f8f8;
64 | background-color: #b52a1d;
65 | }
66 |
67 | .markdown-body .pl-sr .pl-cce {
68 | font-weight: bold;
69 | color: #63a35c;
70 | }
71 |
72 | .markdown-body .pl-ml {
73 | color: #693a17;
74 | }
75 |
76 | .markdown-body .pl-mh,
77 | .markdown-body .pl-mh .pl-en,
78 | .markdown-body .pl-ms {
79 | font-weight: bold;
80 | color: #1d3e81;
81 | }
82 |
83 | .markdown-body .pl-mq {
84 | color: #008080;
85 | }
86 |
87 | .markdown-body .pl-mi {
88 | font-style: italic;
89 | color: #333;
90 | }
91 |
92 | .markdown-body .pl-mb {
93 | font-weight: bold;
94 | color: #333;
95 | }
96 |
97 | .markdown-body .pl-md {
98 | color: #bd2c00;
99 | background-color: #ffecec;
100 | }
101 |
102 | .markdown-body .pl-mi1 {
103 | color: #55a532;
104 | background-color: #eaffea;
105 | }
106 |
107 | .markdown-body .pl-mdr {
108 | font-weight: bold;
109 | color: #795da3;
110 | }
111 |
112 | .markdown-body .pl-mo {
113 | color: #1d3e81;
114 | }
115 |
116 | .markdown-body .octicon {
117 | display: inline-block;
118 | vertical-align: text-top;
119 | fill: currentColor;
120 | }
121 |
122 | .markdown-body a {
123 | background-color: transparent;
124 | -webkit-text-decoration-skip: objects;
125 | }
126 |
127 | .markdown-body a:active,
128 | .markdown-body a:hover {
129 | outline-width: 0;
130 | }
131 |
132 | .markdown-body strong {
133 | font-weight: inherit;
134 | }
135 |
136 | .markdown-body strong {
137 | font-weight: bolder;
138 | }
139 |
140 | .markdown-body h1 {
141 | font-size: 2em;
142 | margin: 0.67em 0;
143 | }
144 |
145 | .markdown-body img {
146 | border-style: none;
147 | }
148 |
149 | .markdown-body svg:not(:root) {
150 | overflow: hidden;
151 | }
152 |
153 | .markdown-body code,
154 | .markdown-body kbd,
155 | .markdown-body pre {
156 | font-family: monospace, monospace;
157 | font-size: 1em;
158 | }
159 |
160 | .markdown-body hr {
161 | box-sizing: content-box;
162 | height: 0;
163 | overflow: visible;
164 | }
165 |
166 | .markdown-body input {
167 | font: inherit;
168 | margin: 0;
169 | }
170 |
171 | .markdown-body input {
172 | overflow: visible;
173 | }
174 |
175 | .markdown-body [type="checkbox"] {
176 | box-sizing: border-box;
177 | padding: 0;
178 | }
179 |
180 | .markdown-body * {
181 | box-sizing: border-box;
182 | }
183 |
184 | .markdown-body input {
185 | font-family: inherit;
186 | font-size: inherit;
187 | line-height: inherit;
188 | }
189 |
190 | .markdown-body a {
191 | color: #4078c0;
192 | text-decoration: none;
193 | }
194 |
195 | .markdown-body a:hover,
196 | .markdown-body a:active {
197 | text-decoration: underline;
198 | }
199 |
200 | .markdown-body strong {
201 | font-weight: 600;
202 | }
203 |
204 | .markdown-body hr {
205 | height: 0;
206 | margin: 15px 0;
207 | overflow: hidden;
208 | background: transparent;
209 | border: 0;
210 | border-bottom: 1px solid #ddd;
211 | }
212 |
213 | .markdown-body hr::before {
214 | display: table;
215 | content: "";
216 | }
217 |
218 | .markdown-body hr::after {
219 | display: table;
220 | clear: both;
221 | content: "";
222 | }
223 |
224 | .markdown-body table {
225 | border-spacing: 0;
226 | border-collapse: collapse;
227 | }
228 |
229 | .markdown-body td,
230 | .markdown-body th {
231 | padding: 0;
232 | }
233 |
234 | .markdown-body h1,
235 | .markdown-body h2,
236 | .markdown-body h3,
237 | .markdown-body h4,
238 | .markdown-body h5,
239 | .markdown-body h6 {
240 | margin-top: 0;
241 | margin-bottom: 0;
242 | }
243 |
244 | .markdown-body h1 {
245 | font-size: 32px;
246 | font-weight: 600;
247 | }
248 |
249 | .markdown-body h2 {
250 | font-size: 24px;
251 | font-weight: 600;
252 | }
253 |
254 | .markdown-body h3 {
255 | font-size: 20px;
256 | font-weight: 600;
257 | }
258 |
259 | .markdown-body h4 {
260 | font-size: 16px;
261 | font-weight: 600;
262 | }
263 |
264 | .markdown-body h5 {
265 | font-size: 14px;
266 | font-weight: 600;
267 | }
268 |
269 | .markdown-body h6 {
270 | font-size: 12px;
271 | font-weight: 600;
272 | }
273 |
274 | .markdown-body p {
275 | margin-top: 0;
276 | margin-bottom: 10px;
277 | }
278 |
279 | .markdown-body blockquote {
280 | margin: 0;
281 | }
282 |
283 | .markdown-body ul,
284 | .markdown-body ol {
285 | padding-left: 0;
286 | margin-top: 0;
287 | margin-bottom: 0;
288 | }
289 |
290 | .markdown-body ol ol,
291 | .markdown-body ul ol {
292 | list-style-type: lower-roman;
293 | }
294 |
295 | .markdown-body ul ul ol,
296 | .markdown-body ul ol ol,
297 | .markdown-body ol ul ol,
298 | .markdown-body ol ol ol {
299 | list-style-type: lower-alpha;
300 | }
301 |
302 | .markdown-body dd {
303 | margin-left: 0;
304 | }
305 |
306 | .markdown-body code {
307 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
308 | font-size: 12px;
309 | }
310 |
311 | .markdown-body pre {
312 | margin-top: 0;
313 | margin-bottom: 0;
314 | font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
315 | }
316 |
317 | .markdown-body .octicon {
318 | vertical-align: text-bottom;
319 | }
320 |
321 | .markdown-body input {
322 | -webkit-font-feature-settings: "liga" 0;
323 | font-feature-settings: "liga" 0;
324 | }
325 |
326 | .markdown-body::before {
327 | display: table;
328 | content: "";
329 | }
330 |
331 | .markdown-body::after {
332 | display: table;
333 | clear: both;
334 | content: "";
335 | }
336 |
337 | .markdown-body>*:first-child {
338 | margin-top: 0 !important;
339 | }
340 |
341 | .markdown-body>*:last-child {
342 | margin-bottom: 0 !important;
343 | }
344 |
345 | .markdown-body a:not([href]) {
346 | color: inherit;
347 | text-decoration: none;
348 | }
349 |
350 | .markdown-body .anchor {
351 | float: left;
352 | padding-right: 4px;
353 | margin-left: -20px;
354 | line-height: 1;
355 | }
356 |
357 | .markdown-body .anchor:focus {
358 | outline: none;
359 | }
360 |
361 | .markdown-body p,
362 | .markdown-body blockquote,
363 | .markdown-body ul,
364 | .markdown-body ol,
365 | .markdown-body dl,
366 | .markdown-body table,
367 | .markdown-body pre {
368 | margin-top: 0;
369 | margin-bottom: 16px;
370 | }
371 |
372 | .markdown-body hr {
373 | height: 0.25em;
374 | padding: 0;
375 | margin: 24px 0;
376 | background-color: #e7e7e7;
377 | border: 0;
378 | }
379 |
380 | .markdown-body blockquote {
381 | padding: 0 1em;
382 | color: #777;
383 | border-left: 0.25em solid #ddd;
384 | }
385 |
386 | .markdown-body blockquote>:first-child {
387 | margin-top: 0;
388 | }
389 |
390 | .markdown-body blockquote>:last-child {
391 | margin-bottom: 0;
392 | }
393 |
394 | .markdown-body kbd {
395 | display: inline-block;
396 | padding: 3px 5px;
397 | font-size: 11px;
398 | line-height: 10px;
399 | color: #555;
400 | vertical-align: middle;
401 | background-color: #fcfcfc;
402 | border: solid 1px #ccc;
403 | border-bottom-color: #bbb;
404 | border-radius: 3px;
405 | box-shadow: inset 0 -1px 0 #bbb;
406 | }
407 |
408 | .markdown-body h1,
409 | .markdown-body h2,
410 | .markdown-body h3,
411 | .markdown-body h4,
412 | .markdown-body h5,
413 | .markdown-body h6 {
414 | margin-top: 24px;
415 | margin-bottom: 16px;
416 | font-weight: 600;
417 | line-height: 1.25;
418 | }
419 |
420 | .markdown-body h1 .octicon-link,
421 | .markdown-body h2 .octicon-link,
422 | .markdown-body h3 .octicon-link,
423 | .markdown-body h4 .octicon-link,
424 | .markdown-body h5 .octicon-link,
425 | .markdown-body h6 .octicon-link {
426 | color: #000;
427 | vertical-align: middle;
428 | visibility: hidden;
429 | }
430 |
431 | .markdown-body h1:hover .anchor,
432 | .markdown-body h2:hover .anchor,
433 | .markdown-body h3:hover .anchor,
434 | .markdown-body h4:hover .anchor,
435 | .markdown-body h5:hover .anchor,
436 | .markdown-body h6:hover .anchor {
437 | text-decoration: none;
438 | }
439 |
440 | .markdown-body h1:hover .anchor .octicon-link,
441 | .markdown-body h2:hover .anchor .octicon-link,
442 | .markdown-body h3:hover .anchor .octicon-link,
443 | .markdown-body h4:hover .anchor .octicon-link,
444 | .markdown-body h5:hover .anchor .octicon-link,
445 | .markdown-body h6:hover .anchor .octicon-link {
446 | visibility: visible;
447 | }
448 |
449 | .markdown-body h1 {
450 | padding-bottom: 0.3em;
451 | font-size: 2em;
452 | border-bottom: 1px solid #eee;
453 | }
454 |
455 | .markdown-body h2 {
456 | padding-bottom: 0.3em;
457 | font-size: 1.5em;
458 | border-bottom: 1px solid #eee;
459 | }
460 |
461 | .markdown-body h3 {
462 | font-size: 1.25em;
463 | }
464 |
465 | .markdown-body h4 {
466 | font-size: 1em;
467 | }
468 |
469 | .markdown-body h5 {
470 | font-size: 0.875em;
471 | }
472 |
473 | .markdown-body h6 {
474 | font-size: 0.85em;
475 | color: #777;
476 | }
477 |
478 | .markdown-body ul,
479 | .markdown-body ol {
480 | padding-left: 2em;
481 | }
482 |
483 | .markdown-body ul ul,
484 | .markdown-body ul ol,
485 | .markdown-body ol ol,
486 | .markdown-body ol ul {
487 | margin-top: 0;
488 | margin-bottom: 0;
489 | }
490 |
491 | .markdown-body li>p {
492 | margin-top: 16px;
493 | }
494 |
495 | .markdown-body li+li {
496 | margin-top: 0.25em;
497 | }
498 |
499 | .markdown-body dl {
500 | padding: 0;
501 | }
502 |
503 | .markdown-body dl dt {
504 | padding: 0;
505 | margin-top: 16px;
506 | font-size: 1em;
507 | font-style: italic;
508 | font-weight: bold;
509 | }
510 |
511 | .markdown-body dl dd {
512 | padding: 0 16px;
513 | margin-bottom: 16px;
514 | }
515 |
516 | .markdown-body table {
517 | display: block;
518 | width: 100%;
519 | overflow: auto;
520 | }
521 |
522 | .markdown-body table th {
523 | font-weight: bold;
524 | }
525 |
526 | .markdown-body table th,
527 | .markdown-body table td {
528 | padding: 6px 13px;
529 | border: 1px solid #ddd;
530 | }
531 |
532 | .markdown-body table tr {
533 | background-color: #fff;
534 | border-top: 1px solid #ccc;
535 | }
536 |
537 | .markdown-body table tr:nth-child(2n) {
538 | background-color: #f8f8f8;
539 | }
540 |
541 | .markdown-body img {
542 | max-width: 100%;
543 | box-sizing: content-box;
544 | background-color: #fff;
545 | }
546 |
547 | .markdown-body code {
548 | padding: 0;
549 | padding-top: 0.2em;
550 | padding-bottom: 0.2em;
551 | margin: 0;
552 | font-size: 85%;
553 | background-color: rgba(0,0,0,0.04);
554 | border-radius: 3px;
555 | }
556 |
557 | .markdown-body code::before,
558 | .markdown-body code::after {
559 | letter-spacing: -0.2em;
560 | content: "\00a0";
561 | }
562 |
563 | .markdown-body pre {
564 | word-wrap: normal;
565 | }
566 |
567 | .markdown-body pre>code {
568 | padding: 0;
569 | margin: 0;
570 | font-size: 100%;
571 | word-break: normal;
572 | white-space: pre;
573 | background: transparent;
574 | border: 0;
575 | }
576 |
577 | .markdown-body .highlight {
578 | margin-bottom: 16px;
579 | }
580 |
581 | .markdown-body .highlight pre {
582 | margin-bottom: 0;
583 | word-break: normal;
584 | }
585 |
586 | .markdown-body .highlight pre,
587 | .markdown-body pre {
588 | padding: 16px;
589 | overflow: auto;
590 | font-size: 85%;
591 | line-height: 1.45;
592 | background-color: #f7f7f7;
593 | border-radius: 3px;
594 | }
595 |
596 | .markdown-body pre code {
597 | display: inline;
598 | max-width: auto;
599 | padding: 0;
600 | margin: 0;
601 | overflow: visible;
602 | line-height: inherit;
603 | word-wrap: normal;
604 | background-color: transparent;
605 | border: 0;
606 | }
607 |
608 | .markdown-body pre code::before,
609 | .markdown-body pre code::after {
610 | content: normal;
611 | }
612 |
613 | .markdown-body .pl-0 {
614 | padding-left: 0 !important;
615 | }
616 |
617 | .markdown-body .pl-1 {
618 | padding-left: 3px !important;
619 | }
620 |
621 | .markdown-body .pl-2 {
622 | padding-left: 6px !important;
623 | }
624 |
625 | .markdown-body .pl-3 {
626 | padding-left: 12px !important;
627 | }
628 |
629 | .markdown-body .pl-4 {
630 | padding-left: 24px !important;
631 | }
632 |
633 | .markdown-body .pl-5 {
634 | padding-left: 36px !important;
635 | }
636 |
637 | .markdown-body .pl-6 {
638 | padding-left: 48px !important;
639 | }
640 |
641 | .markdown-body .full-commit .btn-outline:not(:disabled):hover {
642 | color: #4078c0;
643 | border: 1px solid #4078c0;
644 | }
645 |
646 | .markdown-body kbd {
647 | display: inline-block;
648 | padding: 3px 5px;
649 | font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
650 | line-height: 10px;
651 | color: #555;
652 | vertical-align: middle;
653 | background-color: #fcfcfc;
654 | border: solid 1px #ccc;
655 | border-bottom-color: #bbb;
656 | border-radius: 3px;
657 | box-shadow: inset 0 -1px 0 #bbb;
658 | }
659 |
660 | .markdown-body :checked+.radio-label {
661 | position: relative;
662 | z-index: 1;
663 | border-color: #4078c0;
664 | }
665 |
666 | .markdown-body .task-list-item {
667 | list-style-type: none;
668 | }
669 |
670 | .markdown-body .task-list-item+.task-list-item {
671 | margin-top: 3px;
672 | }
673 |
674 | .markdown-body .task-list-item input {
675 | margin: 0 0.2em 0.25em -1.6em;
676 | vertical-align: middle;
677 | }
678 |
679 | .markdown-body hr {
680 | border-bottom-color: #eee;
681 | }
--------------------------------------------------------------------------------
/dist/static/css/reset.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS and IE text size adjust after device orientation change,
6 | * without disabling user zoom.
7 | */
8 |
9 | *{
10 | margin: 0;
11 | padding: 0;
12 | border: 0px;
13 | }
14 |
15 | html {
16 | font-family: sans-serif; /* 1 */
17 | -ms-text-size-adjust: 100%; /* 2 */
18 | -webkit-text-size-adjust: 100%; /* 2 */
19 | height: 100%;
20 | }
21 |
22 | /**
23 | * Remove default margin.
24 | */
25 |
26 | body {
27 | margin: 0;
28 | height: 100%;
29 |
30 | }
31 |
32 | /* HTML5 display definitions
33 | ========================================================================== */
34 |
35 | /**
36 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
37 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
38 | * and Firefox.
39 | * Correct `block` display not defined for `main` in IE 11.
40 | */
41 |
42 | article,
43 | aside,
44 | details,
45 | figcaption,
46 | figure,
47 | footer,
48 | header,
49 | main,
50 | menu,
51 | nav,
52 | section,
53 | summary {
54 | display: block;
55 | }
56 |
57 | /**
58 | * 1. Correct `inline-block` display not defined in IE 8/9.
59 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
60 | */
61 |
62 | audio,
63 | canvas,
64 | progress,
65 | video {
66 | display: inline-block; /* 1 */
67 | vertical-align: baseline; /* 2 */
68 | }
69 |
70 | /**
71 | * Prevent modern browsers from displaying `audio` without controls.
72 | * Remove excess height in iOS 5 devices.
73 | */
74 |
75 | audio:not([controls]) {
76 | display: none;
77 | height: 0;
78 | }
79 |
80 | /**
81 | * Address `[hidden]` styling not present in IE 8/9/10.
82 | * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
83 | */
84 |
85 | [hidden],
86 | template {
87 | display: none;
88 | }
89 |
90 | /* Links
91 | ========================================================================== */
92 |
93 | /**
94 | * Remove the gray background color from active links in IE 10.
95 | */
96 |
97 | a {
98 | background-color: transparent;
99 | }
100 |
101 | /**
102 | * Improve readability of focused elements when they are also in an
103 | * active/hover state.
104 | */
105 |
106 | a:active,
107 | a:hover {
108 | outline: 0;
109 | }
110 |
111 | /* Text-level semantics
112 | ========================================================================== */
113 |
114 | /**
115 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
116 | */
117 |
118 | abbr[title] {
119 | border-bottom: 1px dotted;
120 | }
121 |
122 | /**
123 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
124 | */
125 |
126 | b,
127 | strong {
128 | font-weight: bold;
129 | }
130 |
131 | /**
132 | * Address styling not present in Safari and Chrome.
133 | */
134 |
135 | dfn {
136 | font-style: italic;
137 | }
138 |
139 | /**
140 | * Address variable `h1` font-size and margin within `section` and `article`
141 | * contexts in Firefox 4+, Safari, and Chrome.
142 | */
143 |
144 | h1 {
145 | font-size: 2em;
146 | margin: 0.67em 0;
147 | }
148 |
149 | /**
150 | * Address styling not present in IE 8/9.
151 | */
152 |
153 | mark {
154 | background: #ff0;
155 | color: #000;
156 | }
157 |
158 | /**
159 | * Address inconsistent and variable font size in all browsers.
160 | */
161 |
162 | small {
163 | font-size: 80%;
164 | }
165 |
166 | /**
167 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
168 | */
169 |
170 | sub,
171 | sup {
172 | font-size: 75%;
173 | line-height: 0;
174 | position: relative;
175 | vertical-align: baseline;
176 | }
177 |
178 | sup {
179 | top: -0.5em;
180 | }
181 |
182 | sub {
183 | bottom: -0.25em;
184 | }
185 |
186 | /* Embedded content
187 | ========================================================================== */
188 |
189 | /**
190 | * Remove border when inside `a` element in IE 8/9/10.
191 | */
192 |
193 | img {
194 | border: 0;
195 | }
196 |
197 | /**
198 | * Correct overflow not hidden in IE 9/10/11.
199 | */
200 |
201 | svg:not(:root) {
202 | overflow: hidden;
203 | }
204 |
205 | /* Grouping content
206 | ========================================================================== */
207 |
208 | /**
209 | * Address margin not present in IE 8/9 and Safari.
210 | */
211 |
212 | figure {
213 | margin: 1em 40px;
214 | }
215 |
216 | /**
217 | * Address differences between Firefox and other browsers.
218 | */
219 |
220 | hr {
221 | box-sizing: content-box;
222 | height: 0;
223 | }
224 |
225 | /**
226 | * Contain overflow in all browsers.
227 | */
228 |
229 | pre {
230 | overflow: auto;
231 | }
232 |
233 | /**
234 | * Address odd `em`-unit font size rendering in all browsers.
235 | */
236 |
237 | code,
238 | kbd,
239 | pre,
240 | samp {
241 | font-family: monospace, monospace;
242 | font-size: 1em;
243 | }
244 |
245 | /* Forms
246 | ========================================================================== */
247 |
248 | /**
249 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
250 | * styling of `select`, unless a `border` property is set.
251 | */
252 |
253 | /**
254 | * 1. Correct color not being inherited.
255 | * Known issue: affects color of disabled elements.
256 | * 2. Correct font properties not being inherited.
257 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
258 | */
259 |
260 | button,
261 | input,
262 | optgroup,
263 | select,
264 | textarea {
265 | color: inherit; /* 1 */
266 | font: inherit; /* 2 */
267 | margin: 0; /* 3 */
268 | }
269 |
270 | /**
271 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
272 | */
273 |
274 | button {
275 | overflow: visible;
276 | }
277 |
278 | /**
279 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
280 | * All other form control elements do not inherit `text-transform` values.
281 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
282 | * Correct `select` style inheritance in Firefox.
283 | */
284 |
285 | button,
286 | select {
287 | text-transform: none;
288 | }
289 |
290 | /**
291 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
292 | * and `video` controls.
293 | * 2. Correct inability to style clickable `input` types in iOS.
294 | * 3. Improve usability and consistency of cursor style between image-type
295 | * `input` and others.
296 | */
297 |
298 | button,
299 | html input[type="button"], /* 1 */
300 | input[type="reset"],
301 | input[type="submit"] {
302 | -webkit-appearance: button; /* 2 */
303 | cursor: pointer; /* 3 */
304 | }
305 |
306 | /**
307 | * Re-set default cursor for disabled elements.
308 | */
309 |
310 | button[disabled],
311 | html input[disabled] {
312 | cursor: default;
313 | }
314 |
315 | /**
316 | * Remove inner padding and border in Firefox 4+.
317 | */
318 |
319 | button::-moz-focus-inner,
320 | input::-moz-focus-inner {
321 | border: 0;
322 | padding: 0;
323 | }
324 |
325 | /**
326 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
327 | * the UA stylesheet.
328 | */
329 |
330 | input {
331 | line-height: normal;
332 | }
333 |
334 | /**
335 | * It's recommended that you don't attempt to style these elements.
336 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
337 | *
338 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
339 | * 2. Remove excess padding in IE 8/9/10.
340 | */
341 |
342 | input[type="checkbox"],
343 | input[type="radio"] {
344 | box-sizing: border-box; /* 1 */
345 | padding: 0; /* 2 */
346 | }
347 |
348 | /**
349 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
350 | * `font-size` values of the `input`, it causes the cursor style of the
351 | * decrement button to change from `default` to `text`.
352 | */
353 |
354 | input[type="number"]::-webkit-inner-spin-button,
355 | input[type="number"]::-webkit-outer-spin-button {
356 | height: auto;
357 | }
358 |
359 | /**
360 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
361 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
362 | */
363 |
364 | input[type="search"] {
365 | -webkit-appearance: textfield; /* 1 */
366 | box-sizing: content-box; /* 2 */
367 | }
368 |
369 | /**
370 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
371 | * Safari (but not Chrome) clips the cancel button when the search input has
372 | * padding (and `textfield` appearance).
373 | */
374 |
375 | input[type="search"]::-webkit-search-cancel-button,
376 | input[type="search"]::-webkit-search-decoration {
377 | -webkit-appearance: none;
378 | }
379 |
380 | /**
381 | * Define consistent border, margin, and padding.
382 | */
383 |
384 | fieldset {
385 | border: 1px solid #c0c0c0;
386 | margin: 0 2px;
387 | padding: 0.35em 0.625em 0.75em;
388 | }
389 |
390 | /**
391 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
392 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
393 | */
394 |
395 | legend {
396 | border: 0; /* 1 */
397 | padding: 0; /* 2 */
398 | }
399 |
400 | /**
401 | * Remove default vertical scrollbar in IE 8/9/10/11.
402 | */
403 |
404 | textarea {
405 | overflow: auto;
406 | }
407 |
408 | /**
409 | * Don't inherit the `font-weight` (applied by a rule above).
410 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
411 | */
412 |
413 | optgroup {
414 | font-weight: bold;
415 | }
416 |
417 | /* Tables
418 | ========================================================================== */
419 |
420 | /**
421 | * Remove most spacing between table cells.
422 | */
423 |
424 | table {
425 | border-collapse: collapse;
426 | border-spacing: 0;
427 | }
428 |
429 | td,
430 | th {
431 | padding: 0;
432 | }
433 | .clearfix {
434 | overflow: hidden;
435 | _zoom: 1;
436 | }
--------------------------------------------------------------------------------
/dist/static/js/manifest.b26844df2548cfeeb839.js:
--------------------------------------------------------------------------------
1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s textLength) {
67 | startPos = textLength;
68 | }
69 | if (endPos > textLength) {
70 | endPos = textLength;
71 | }
72 | if (startPos < 0) {
73 | startPos = textLength + startPos;
74 | }
75 | if (endPos < 0) {
76 | endPos = textLength + endPos;
77 | }
78 | if (textDom.createTextRange) {
79 | // IE Support
80 | var range = textDom.createTextRange();
81 | range.moveStart("character", -textLength);
82 | range.moveEnd("character", -textLength);
83 | range.moveStart("character", startPos);
84 | range.moveEnd("character", endPos);
85 | range.select();
86 | } else {
87 | // Firefox support
88 | textDom.setSelectionRange(startPos, endPos);
89 | textDom.focus();
90 | }
91 | }
92 | }
93 |
94 | /**
95 | * 在光标后插入文本
96 | * 参数:
97 | * textDom [JavaScript DOM String] 当前对象
98 | * value [String] 要插入的文本
99 | */
100 | function insertAfterText(textDom, value) {
101 | var selectRange;
102 | if (document.selection) {
103 | // IE Support
104 | textDom.focus();
105 | selectRange = document.selection.createRange();
106 | selectRange.text = value;
107 | textDom.focus();
108 | } else if (textDom.selectionStart || textDom.selectionStart == '0') {
109 | // Firefox support
110 | var startPos = textDom.selectionStart;
111 | var endPos = textDom.selectionEnd;
112 | var scrollTop = textDom.scrollTop;
113 | textDom.value = textDom.value.substring(0, startPos) + value + textDom.value.substring(endPos, textDom.value.length);
114 | textDom.focus();
115 | textDom.selectionStart = startPos + value.length;
116 | textDom.selectionEnd = startPos + value.length;
117 | textDom.scrollTop = scrollTop;
118 | } else {
119 | textDom.value += value;
120 | textDom.focus();
121 | }
122 | }
123 |
124 | module.exports = {
125 | getCursortPosition,
126 | setCaretPosition,
127 | getSelectText,
128 | setSelectText,
129 | insertAfterText
130 | };
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | vue-mdeditor
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/static/css/app.b8a96cfdfc41fc31b20c241864d5cf56.css:
--------------------------------------------------------------------------------
1 | #app,body,html{height:100%;width:100%}.show[data-v-b74131ec]{position:absolute;left:0;top:0}.indexContainer[data-v-b74131ec]{width:100%;height:100%;background:#ddd;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.btnsContainer[data-v-b74131ec],.indexContainer[data-v-b74131ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnsContainer[data-v-b74131ec]{position:absolute;z-index:10;left:65px;top:5px;height:25px;min-width:300px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btnsContainer .btn[data-v-b74131ec]{display:inline-block;border:1px solid #ccc;margin-right:10px;box-sizing:border-box;padding:0 10px;background:#fff;font-size:12px;height:25px;line-height:25px;cursor:pointer;moz-user-select:-moz-none;-moz-user-select:none;-o-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btnsContainer .btn[data-v-b74131ec]:active{opacity:.8;background:#add8e6}.maskContainer[data-v-b74131ec]{position:absolute;left:0;top:0;height:100%;width:100%;height:100vh;width:100vw;background:rgba(0,0,0,.5);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.maskContainer .contentContainer[data-v-b74131ec]{width:60%;height:60%;background:#fefefe;padding:20px;box-sizing:border-box;position:relative}.maskContainer .contentContainer .showAreaContainer[data-v-b74131ec]{height:100%;width:100%;outline:none;background:#eee;display:block;resize:none;padding:10px;box-sizing:border-box}.maskContainer .contentContainer .closeBtnContainer[data-v-b74131ec]{position:absolute;height:30px;width:30px;right:-40px;top:-40px;border:1px solid #fff;border-radius:50%}.maskContainer .contentContainer .closeBtnContainer[data-v-b74131ec]:before{content:"";position:absolute;width:70%;height:2px;display:bblock;background:#fff;left:15%;top:calc(50% - 1px);transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg)}.maskContainer .contentContainer .closeBtnContainer[data-v-b74131ec]:after{content:"";position:absolute;width:70%;height:2px;display:bblock;background:#fff;left:15%;top:calc(50% - 1px);transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg)}.editorContainer[data-v-b74131ec]{width:90%;height:90%;border:1px solid #ddd}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#969896}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0086b3}.markdown-body .pl-e,.markdown-body .pl-en{color:#795da3}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#333}.markdown-body .pl-ent{color:#63a35c}.markdown-body .pl-k{color:#a71d5d}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#183691}.markdown-body .pl-v{color:#ed6a43}.markdown-body .pl-id{color:#b52a1d}.markdown-body .pl-ii{color:#f8f8f8;background-color:#b52a1d}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#63a35c}.markdown-body .pl-ml{color:#693a17}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#1d3e81}.markdown-body .pl-mq{color:teal}.markdown-body .pl-mi{font-style:italic;color:#333}.markdown-body .pl-mb{font-weight:700;color:#333}.markdown-body .pl-md{color:#bd2c00;background-color:#ffecec}.markdown-body .pl-mi1{color:#55a532;background-color:#eaffea}.markdown-body .pl-mdr{font-weight:700;color:#795da3}.markdown-body .pl-mo{color:#1d3e81}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#4078c0;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #ddd}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body input{-webkit-font-feature-settings:"liga" 0;font-feature-settings:"liga" 0}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{padding:0 1em;color:#777;border-left:.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{font-size:11px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#777}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\A0"}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:3px!important}.markdown-body .pl-2{padding-left:6px!important}.markdown-body .pl-3{padding-left:12px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:36px!important}.markdown-body .pl-6{padding-left:48px!important}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
2 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */*{margin:0;padding:0;border:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body,html{height:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.clearfix{overflow:hidden;_zoom:1}.mdContainer{width:100%;height:100%;background:#add8e6}.mdContainer.fullPage{position:fixed;z-index:1000;left:0;top:0}.mdContainer .navContainer{width:100%;height:36px;background:#fff;box-sizing:border-box;border-bottom:1px solid #eee;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px}.mdContainer .navContainer .nameContainer{color:#add8e6;margin-right:10px;cursor:pointer}.mdContainer .navContainer .markContainer{width:auto;height:100%;margin-left:0}.mdContainer .navContainer .markContainer ul.markListGroup{height:100%;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mdContainer .navContainer .markContainer ul.markListGroup li.markListItem{list-style:none;width:20px;height:20px;margin:0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;font-size:12px;color:#333}.mdContainer .navContainer .markContainer ul.markListGroup li.markListItem:hover{background:#eee}.mdContainer .mdBodyContainer{width:100%;height:calc(100% - 36px);background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box}.mdContainer .mdBodyContainer.noMenu{height:100%}.editContainer{height:100%;width:100%;box-sizing:border-box;border-right:1px solid #ddd;background:#333;color:#fff;padding:10px}.editContainer .mdEditor{height:100%;width:100%;background:transparent;outline:none;color:#fff;resize:none}.previewContainer{width:100%;height:100%;box-sizing:border-box;background:#fff;overflow:auto;padding:10px}
--------------------------------------------------------------------------------
/docs/static/css/atom-one-dark.min.css:
--------------------------------------------------------------------------------
1 | .hljs{display:block;overflow-x:auto;padding:0.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}
--------------------------------------------------------------------------------
/docs/static/css/github-markdown.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: octicons-link;
3 | src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
4 | }
5 |
6 | .markdown-body {
7 | -ms-text-size-adjust: 100%;
8 | -webkit-text-size-adjust: 100%;
9 | line-height: 1.5;
10 | color: #333;
11 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
12 | font-size: 16px;
13 | line-height: 1.5;
14 | word-wrap: break-word;
15 | }
16 |
17 | .markdown-body .pl-c {
18 | color: #969896;
19 | }
20 |
21 | .markdown-body .pl-c1,
22 | .markdown-body .pl-s .pl-v {
23 | color: #0086b3;
24 | }
25 |
26 | .markdown-body .pl-e,
27 | .markdown-body .pl-en {
28 | color: #795da3;
29 | }
30 |
31 | .markdown-body .pl-smi,
32 | .markdown-body .pl-s .pl-s1 {
33 | color: #333;
34 | }
35 |
36 | .markdown-body .pl-ent {
37 | color: #63a35c;
38 | }
39 |
40 | .markdown-body .pl-k {
41 | color: #a71d5d;
42 | }
43 |
44 | .markdown-body .pl-s,
45 | .markdown-body .pl-pds,
46 | .markdown-body .pl-s .pl-pse .pl-s1,
47 | .markdown-body .pl-sr,
48 | .markdown-body .pl-sr .pl-cce,
49 | .markdown-body .pl-sr .pl-sre,
50 | .markdown-body .pl-sr .pl-sra {
51 | color: #183691;
52 | }
53 |
54 | .markdown-body .pl-v {
55 | color: #ed6a43;
56 | }
57 |
58 | .markdown-body .pl-id {
59 | color: #b52a1d;
60 | }
61 |
62 | .markdown-body .pl-ii {
63 | color: #f8f8f8;
64 | background-color: #b52a1d;
65 | }
66 |
67 | .markdown-body .pl-sr .pl-cce {
68 | font-weight: bold;
69 | color: #63a35c;
70 | }
71 |
72 | .markdown-body .pl-ml {
73 | color: #693a17;
74 | }
75 |
76 | .markdown-body .pl-mh,
77 | .markdown-body .pl-mh .pl-en,
78 | .markdown-body .pl-ms {
79 | font-weight: bold;
80 | color: #1d3e81;
81 | }
82 |
83 | .markdown-body .pl-mq {
84 | color: #008080;
85 | }
86 |
87 | .markdown-body .pl-mi {
88 | font-style: italic;
89 | color: #333;
90 | }
91 |
92 | .markdown-body .pl-mb {
93 | font-weight: bold;
94 | color: #333;
95 | }
96 |
97 | .markdown-body .pl-md {
98 | color: #bd2c00;
99 | background-color: #ffecec;
100 | }
101 |
102 | .markdown-body .pl-mi1 {
103 | color: #55a532;
104 | background-color: #eaffea;
105 | }
106 |
107 | .markdown-body .pl-mdr {
108 | font-weight: bold;
109 | color: #795da3;
110 | }
111 |
112 | .markdown-body .pl-mo {
113 | color: #1d3e81;
114 | }
115 |
116 | .markdown-body .octicon {
117 | display: inline-block;
118 | vertical-align: text-top;
119 | fill: currentColor;
120 | }
121 |
122 | .markdown-body a {
123 | background-color: transparent;
124 | -webkit-text-decoration-skip: objects;
125 | }
126 |
127 | .markdown-body a:active,
128 | .markdown-body a:hover {
129 | outline-width: 0;
130 | }
131 |
132 | .markdown-body strong {
133 | font-weight: inherit;
134 | }
135 |
136 | .markdown-body strong {
137 | font-weight: bolder;
138 | }
139 |
140 | .markdown-body h1 {
141 | font-size: 2em;
142 | margin: 0.67em 0;
143 | }
144 |
145 | .markdown-body img {
146 | border-style: none;
147 | }
148 |
149 | .markdown-body svg:not(:root) {
150 | overflow: hidden;
151 | }
152 |
153 | .markdown-body code,
154 | .markdown-body kbd,
155 | .markdown-body pre {
156 | font-family: monospace, monospace;
157 | font-size: 1em;
158 | }
159 |
160 | .markdown-body hr {
161 | box-sizing: content-box;
162 | height: 0;
163 | overflow: visible;
164 | }
165 |
166 | .markdown-body input {
167 | font: inherit;
168 | margin: 0;
169 | }
170 |
171 | .markdown-body input {
172 | overflow: visible;
173 | }
174 |
175 | .markdown-body [type="checkbox"] {
176 | box-sizing: border-box;
177 | padding: 0;
178 | }
179 |
180 | .markdown-body * {
181 | box-sizing: border-box;
182 | }
183 |
184 | .markdown-body input {
185 | font-family: inherit;
186 | font-size: inherit;
187 | line-height: inherit;
188 | }
189 |
190 | .markdown-body a {
191 | color: #4078c0;
192 | text-decoration: none;
193 | }
194 |
195 | .markdown-body a:hover,
196 | .markdown-body a:active {
197 | text-decoration: underline;
198 | }
199 |
200 | .markdown-body strong {
201 | font-weight: 600;
202 | }
203 |
204 | .markdown-body hr {
205 | height: 0;
206 | margin: 15px 0;
207 | overflow: hidden;
208 | background: transparent;
209 | border: 0;
210 | border-bottom: 1px solid #ddd;
211 | }
212 |
213 | .markdown-body hr::before {
214 | display: table;
215 | content: "";
216 | }
217 |
218 | .markdown-body hr::after {
219 | display: table;
220 | clear: both;
221 | content: "";
222 | }
223 |
224 | .markdown-body table {
225 | border-spacing: 0;
226 | border-collapse: collapse;
227 | }
228 |
229 | .markdown-body td,
230 | .markdown-body th {
231 | padding: 0;
232 | }
233 |
234 | .markdown-body h1,
235 | .markdown-body h2,
236 | .markdown-body h3,
237 | .markdown-body h4,
238 | .markdown-body h5,
239 | .markdown-body h6 {
240 | margin-top: 0;
241 | margin-bottom: 0;
242 | }
243 |
244 | .markdown-body h1 {
245 | font-size: 32px;
246 | font-weight: 600;
247 | }
248 |
249 | .markdown-body h2 {
250 | font-size: 24px;
251 | font-weight: 600;
252 | }
253 |
254 | .markdown-body h3 {
255 | font-size: 20px;
256 | font-weight: 600;
257 | }
258 |
259 | .markdown-body h4 {
260 | font-size: 16px;
261 | font-weight: 600;
262 | }
263 |
264 | .markdown-body h5 {
265 | font-size: 14px;
266 | font-weight: 600;
267 | }
268 |
269 | .markdown-body h6 {
270 | font-size: 12px;
271 | font-weight: 600;
272 | }
273 |
274 | .markdown-body p {
275 | margin-top: 0;
276 | margin-bottom: 10px;
277 | }
278 |
279 | .markdown-body blockquote {
280 | margin: 0;
281 | }
282 |
283 | .markdown-body ul,
284 | .markdown-body ol {
285 | padding-left: 0;
286 | margin-top: 0;
287 | margin-bottom: 0;
288 | }
289 |
290 | .markdown-body ol ol,
291 | .markdown-body ul ol {
292 | list-style-type: lower-roman;
293 | }
294 |
295 | .markdown-body ul ul ol,
296 | .markdown-body ul ol ol,
297 | .markdown-body ol ul ol,
298 | .markdown-body ol ol ol {
299 | list-style-type: lower-alpha;
300 | }
301 |
302 | .markdown-body dd {
303 | margin-left: 0;
304 | }
305 |
306 | .markdown-body code {
307 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
308 | font-size: 12px;
309 | }
310 |
311 | .markdown-body pre {
312 | margin-top: 0;
313 | margin-bottom: 0;
314 | font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
315 | }
316 |
317 | .markdown-body .octicon {
318 | vertical-align: text-bottom;
319 | }
320 |
321 | .markdown-body input {
322 | -webkit-font-feature-settings: "liga" 0;
323 | font-feature-settings: "liga" 0;
324 | }
325 |
326 | .markdown-body::before {
327 | display: table;
328 | content: "";
329 | }
330 |
331 | .markdown-body::after {
332 | display: table;
333 | clear: both;
334 | content: "";
335 | }
336 |
337 | .markdown-body>*:first-child {
338 | margin-top: 0 !important;
339 | }
340 |
341 | .markdown-body>*:last-child {
342 | margin-bottom: 0 !important;
343 | }
344 |
345 | .markdown-body a:not([href]) {
346 | color: inherit;
347 | text-decoration: none;
348 | }
349 |
350 | .markdown-body .anchor {
351 | float: left;
352 | padding-right: 4px;
353 | margin-left: -20px;
354 | line-height: 1;
355 | }
356 |
357 | .markdown-body .anchor:focus {
358 | outline: none;
359 | }
360 |
361 | .markdown-body p,
362 | .markdown-body blockquote,
363 | .markdown-body ul,
364 | .markdown-body ol,
365 | .markdown-body dl,
366 | .markdown-body table,
367 | .markdown-body pre {
368 | margin-top: 0;
369 | margin-bottom: 16px;
370 | }
371 |
372 | .markdown-body hr {
373 | height: 0.25em;
374 | padding: 0;
375 | margin: 24px 0;
376 | background-color: #e7e7e7;
377 | border: 0;
378 | }
379 |
380 | .markdown-body blockquote {
381 | padding: 0 1em;
382 | color: #777;
383 | border-left: 0.25em solid #ddd;
384 | }
385 |
386 | .markdown-body blockquote>:first-child {
387 | margin-top: 0;
388 | }
389 |
390 | .markdown-body blockquote>:last-child {
391 | margin-bottom: 0;
392 | }
393 |
394 | .markdown-body kbd {
395 | display: inline-block;
396 | padding: 3px 5px;
397 | font-size: 11px;
398 | line-height: 10px;
399 | color: #555;
400 | vertical-align: middle;
401 | background-color: #fcfcfc;
402 | border: solid 1px #ccc;
403 | border-bottom-color: #bbb;
404 | border-radius: 3px;
405 | box-shadow: inset 0 -1px 0 #bbb;
406 | }
407 |
408 | .markdown-body h1,
409 | .markdown-body h2,
410 | .markdown-body h3,
411 | .markdown-body h4,
412 | .markdown-body h5,
413 | .markdown-body h6 {
414 | margin-top: 24px;
415 | margin-bottom: 16px;
416 | font-weight: 600;
417 | line-height: 1.25;
418 | }
419 |
420 | .markdown-body h1 .octicon-link,
421 | .markdown-body h2 .octicon-link,
422 | .markdown-body h3 .octicon-link,
423 | .markdown-body h4 .octicon-link,
424 | .markdown-body h5 .octicon-link,
425 | .markdown-body h6 .octicon-link {
426 | color: #000;
427 | vertical-align: middle;
428 | visibility: hidden;
429 | }
430 |
431 | .markdown-body h1:hover .anchor,
432 | .markdown-body h2:hover .anchor,
433 | .markdown-body h3:hover .anchor,
434 | .markdown-body h4:hover .anchor,
435 | .markdown-body h5:hover .anchor,
436 | .markdown-body h6:hover .anchor {
437 | text-decoration: none;
438 | }
439 |
440 | .markdown-body h1:hover .anchor .octicon-link,
441 | .markdown-body h2:hover .anchor .octicon-link,
442 | .markdown-body h3:hover .anchor .octicon-link,
443 | .markdown-body h4:hover .anchor .octicon-link,
444 | .markdown-body h5:hover .anchor .octicon-link,
445 | .markdown-body h6:hover .anchor .octicon-link {
446 | visibility: visible;
447 | }
448 |
449 | .markdown-body h1 {
450 | padding-bottom: 0.3em;
451 | font-size: 2em;
452 | border-bottom: 1px solid #eee;
453 | }
454 |
455 | .markdown-body h2 {
456 | padding-bottom: 0.3em;
457 | font-size: 1.5em;
458 | border-bottom: 1px solid #eee;
459 | }
460 |
461 | .markdown-body h3 {
462 | font-size: 1.25em;
463 | }
464 |
465 | .markdown-body h4 {
466 | font-size: 1em;
467 | }
468 |
469 | .markdown-body h5 {
470 | font-size: 0.875em;
471 | }
472 |
473 | .markdown-body h6 {
474 | font-size: 0.85em;
475 | color: #777;
476 | }
477 |
478 | .markdown-body ul,
479 | .markdown-body ol {
480 | padding-left: 2em;
481 | }
482 |
483 | .markdown-body ul ul,
484 | .markdown-body ul ol,
485 | .markdown-body ol ol,
486 | .markdown-body ol ul {
487 | margin-top: 0;
488 | margin-bottom: 0;
489 | }
490 |
491 | .markdown-body li>p {
492 | margin-top: 16px;
493 | }
494 |
495 | .markdown-body li+li {
496 | margin-top: 0.25em;
497 | }
498 |
499 | .markdown-body dl {
500 | padding: 0;
501 | }
502 |
503 | .markdown-body dl dt {
504 | padding: 0;
505 | margin-top: 16px;
506 | font-size: 1em;
507 | font-style: italic;
508 | font-weight: bold;
509 | }
510 |
511 | .markdown-body dl dd {
512 | padding: 0 16px;
513 | margin-bottom: 16px;
514 | }
515 |
516 | .markdown-body table {
517 | display: block;
518 | width: 100%;
519 | overflow: auto;
520 | }
521 |
522 | .markdown-body table th {
523 | font-weight: bold;
524 | }
525 |
526 | .markdown-body table th,
527 | .markdown-body table td {
528 | padding: 6px 13px;
529 | border: 1px solid #ddd;
530 | }
531 |
532 | .markdown-body table tr {
533 | background-color: #fff;
534 | border-top: 1px solid #ccc;
535 | }
536 |
537 | .markdown-body table tr:nth-child(2n) {
538 | background-color: #f8f8f8;
539 | }
540 |
541 | .markdown-body img {
542 | max-width: 100%;
543 | box-sizing: content-box;
544 | background-color: #fff;
545 | }
546 |
547 | .markdown-body code {
548 | padding: 0;
549 | padding-top: 0.2em;
550 | padding-bottom: 0.2em;
551 | margin: 0;
552 | font-size: 85%;
553 | background-color: rgba(0,0,0,0.04);
554 | border-radius: 3px;
555 | }
556 |
557 | .markdown-body code::before,
558 | .markdown-body code::after {
559 | letter-spacing: -0.2em;
560 | content: "\00a0";
561 | }
562 |
563 | .markdown-body pre {
564 | word-wrap: normal;
565 | }
566 |
567 | .markdown-body pre>code {
568 | padding: 0;
569 | margin: 0;
570 | font-size: 100%;
571 | word-break: normal;
572 | white-space: pre;
573 | background: transparent;
574 | border: 0;
575 | }
576 |
577 | .markdown-body .highlight {
578 | margin-bottom: 16px;
579 | }
580 |
581 | .markdown-body .highlight pre {
582 | margin-bottom: 0;
583 | word-break: normal;
584 | }
585 |
586 | .markdown-body .highlight pre,
587 | .markdown-body pre {
588 | padding: 16px;
589 | overflow: auto;
590 | font-size: 85%;
591 | line-height: 1.45;
592 | background-color: #f7f7f7;
593 | border-radius: 3px;
594 | }
595 |
596 | .markdown-body pre code {
597 | display: inline;
598 | max-width: auto;
599 | padding: 0;
600 | margin: 0;
601 | overflow: visible;
602 | line-height: inherit;
603 | word-wrap: normal;
604 | background-color: transparent;
605 | border: 0;
606 | }
607 |
608 | .markdown-body pre code::before,
609 | .markdown-body pre code::after {
610 | content: normal;
611 | }
612 |
613 | .markdown-body .pl-0 {
614 | padding-left: 0 !important;
615 | }
616 |
617 | .markdown-body .pl-1 {
618 | padding-left: 3px !important;
619 | }
620 |
621 | .markdown-body .pl-2 {
622 | padding-left: 6px !important;
623 | }
624 |
625 | .markdown-body .pl-3 {
626 | padding-left: 12px !important;
627 | }
628 |
629 | .markdown-body .pl-4 {
630 | padding-left: 24px !important;
631 | }
632 |
633 | .markdown-body .pl-5 {
634 | padding-left: 36px !important;
635 | }
636 |
637 | .markdown-body .pl-6 {
638 | padding-left: 48px !important;
639 | }
640 |
641 | .markdown-body .full-commit .btn-outline:not(:disabled):hover {
642 | color: #4078c0;
643 | border: 1px solid #4078c0;
644 | }
645 |
646 | .markdown-body kbd {
647 | display: inline-block;
648 | padding: 3px 5px;
649 | font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
650 | line-height: 10px;
651 | color: #555;
652 | vertical-align: middle;
653 | background-color: #fcfcfc;
654 | border: solid 1px #ccc;
655 | border-bottom-color: #bbb;
656 | border-radius: 3px;
657 | box-shadow: inset 0 -1px 0 #bbb;
658 | }
659 |
660 | .markdown-body :checked+.radio-label {
661 | position: relative;
662 | z-index: 1;
663 | border-color: #4078c0;
664 | }
665 |
666 | .markdown-body .task-list-item {
667 | list-style-type: none;
668 | }
669 |
670 | .markdown-body .task-list-item+.task-list-item {
671 | margin-top: 3px;
672 | }
673 |
674 | .markdown-body .task-list-item input {
675 | margin: 0 0.2em 0.25em -1.6em;
676 | vertical-align: middle;
677 | }
678 |
679 | .markdown-body hr {
680 | border-bottom-color: #eee;
681 | }
--------------------------------------------------------------------------------
/docs/static/css/reset.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS and IE text size adjust after device orientation change,
6 | * without disabling user zoom.
7 | */
8 |
9 | *{
10 | margin: 0;
11 | padding: 0;
12 | border: 0px;
13 | }
14 |
15 | html {
16 | font-family: sans-serif; /* 1 */
17 | -ms-text-size-adjust: 100%; /* 2 */
18 | -webkit-text-size-adjust: 100%; /* 2 */
19 | height: 100%;
20 | }
21 |
22 | /**
23 | * Remove default margin.
24 | */
25 |
26 | body {
27 | margin: 0;
28 | height: 100%;
29 |
30 | }
31 |
32 | /* HTML5 display definitions
33 | ========================================================================== */
34 |
35 | /**
36 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
37 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
38 | * and Firefox.
39 | * Correct `block` display not defined for `main` in IE 11.
40 | */
41 |
42 | article,
43 | aside,
44 | details,
45 | figcaption,
46 | figure,
47 | footer,
48 | header,
49 | main,
50 | menu,
51 | nav,
52 | section,
53 | summary {
54 | display: block;
55 | }
56 |
57 | /**
58 | * 1. Correct `inline-block` display not defined in IE 8/9.
59 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
60 | */
61 |
62 | audio,
63 | canvas,
64 | progress,
65 | video {
66 | display: inline-block; /* 1 */
67 | vertical-align: baseline; /* 2 */
68 | }
69 |
70 | /**
71 | * Prevent modern browsers from displaying `audio` without controls.
72 | * Remove excess height in iOS 5 devices.
73 | */
74 |
75 | audio:not([controls]) {
76 | display: none;
77 | height: 0;
78 | }
79 |
80 | /**
81 | * Address `[hidden]` styling not present in IE 8/9/10.
82 | * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
83 | */
84 |
85 | [hidden],
86 | template {
87 | display: none;
88 | }
89 |
90 | /* Links
91 | ========================================================================== */
92 |
93 | /**
94 | * Remove the gray background color from active links in IE 10.
95 | */
96 |
97 | a {
98 | background-color: transparent;
99 | }
100 |
101 | /**
102 | * Improve readability of focused elements when they are also in an
103 | * active/hover state.
104 | */
105 |
106 | a:active,
107 | a:hover {
108 | outline: 0;
109 | }
110 |
111 | /* Text-level semantics
112 | ========================================================================== */
113 |
114 | /**
115 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
116 | */
117 |
118 | abbr[title] {
119 | border-bottom: 1px dotted;
120 | }
121 |
122 | /**
123 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
124 | */
125 |
126 | b,
127 | strong {
128 | font-weight: bold;
129 | }
130 |
131 | /**
132 | * Address styling not present in Safari and Chrome.
133 | */
134 |
135 | dfn {
136 | font-style: italic;
137 | }
138 |
139 | /**
140 | * Address variable `h1` font-size and margin within `section` and `article`
141 | * contexts in Firefox 4+, Safari, and Chrome.
142 | */
143 |
144 | h1 {
145 | font-size: 2em;
146 | margin: 0.67em 0;
147 | }
148 |
149 | /**
150 | * Address styling not present in IE 8/9.
151 | */
152 |
153 | mark {
154 | background: #ff0;
155 | color: #000;
156 | }
157 |
158 | /**
159 | * Address inconsistent and variable font size in all browsers.
160 | */
161 |
162 | small {
163 | font-size: 80%;
164 | }
165 |
166 | /**
167 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
168 | */
169 |
170 | sub,
171 | sup {
172 | font-size: 75%;
173 | line-height: 0;
174 | position: relative;
175 | vertical-align: baseline;
176 | }
177 |
178 | sup {
179 | top: -0.5em;
180 | }
181 |
182 | sub {
183 | bottom: -0.25em;
184 | }
185 |
186 | /* Embedded content
187 | ========================================================================== */
188 |
189 | /**
190 | * Remove border when inside `a` element in IE 8/9/10.
191 | */
192 |
193 | img {
194 | border: 0;
195 | }
196 |
197 | /**
198 | * Correct overflow not hidden in IE 9/10/11.
199 | */
200 |
201 | svg:not(:root) {
202 | overflow: hidden;
203 | }
204 |
205 | /* Grouping content
206 | ========================================================================== */
207 |
208 | /**
209 | * Address margin not present in IE 8/9 and Safari.
210 | */
211 |
212 | figure {
213 | margin: 1em 40px;
214 | }
215 |
216 | /**
217 | * Address differences between Firefox and other browsers.
218 | */
219 |
220 | hr {
221 | box-sizing: content-box;
222 | height: 0;
223 | }
224 |
225 | /**
226 | * Contain overflow in all browsers.
227 | */
228 |
229 | pre {
230 | overflow: auto;
231 | }
232 |
233 | /**
234 | * Address odd `em`-unit font size rendering in all browsers.
235 | */
236 |
237 | code,
238 | kbd,
239 | pre,
240 | samp {
241 | font-family: monospace, monospace;
242 | font-size: 1em;
243 | }
244 |
245 | /* Forms
246 | ========================================================================== */
247 |
248 | /**
249 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
250 | * styling of `select`, unless a `border` property is set.
251 | */
252 |
253 | /**
254 | * 1. Correct color not being inherited.
255 | * Known issue: affects color of disabled elements.
256 | * 2. Correct font properties not being inherited.
257 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
258 | */
259 |
260 | button,
261 | input,
262 | optgroup,
263 | select,
264 | textarea {
265 | color: inherit; /* 1 */
266 | font: inherit; /* 2 */
267 | margin: 0; /* 3 */
268 | }
269 |
270 | /**
271 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
272 | */
273 |
274 | button {
275 | overflow: visible;
276 | }
277 |
278 | /**
279 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
280 | * All other form control elements do not inherit `text-transform` values.
281 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
282 | * Correct `select` style inheritance in Firefox.
283 | */
284 |
285 | button,
286 | select {
287 | text-transform: none;
288 | }
289 |
290 | /**
291 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
292 | * and `video` controls.
293 | * 2. Correct inability to style clickable `input` types in iOS.
294 | * 3. Improve usability and consistency of cursor style between image-type
295 | * `input` and others.
296 | */
297 |
298 | button,
299 | html input[type="button"], /* 1 */
300 | input[type="reset"],
301 | input[type="submit"] {
302 | -webkit-appearance: button; /* 2 */
303 | cursor: pointer; /* 3 */
304 | }
305 |
306 | /**
307 | * Re-set default cursor for disabled elements.
308 | */
309 |
310 | button[disabled],
311 | html input[disabled] {
312 | cursor: default;
313 | }
314 |
315 | /**
316 | * Remove inner padding and border in Firefox 4+.
317 | */
318 |
319 | button::-moz-focus-inner,
320 | input::-moz-focus-inner {
321 | border: 0;
322 | padding: 0;
323 | }
324 |
325 | /**
326 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
327 | * the UA stylesheet.
328 | */
329 |
330 | input {
331 | line-height: normal;
332 | }
333 |
334 | /**
335 | * It's recommended that you don't attempt to style these elements.
336 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
337 | *
338 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
339 | * 2. Remove excess padding in IE 8/9/10.
340 | */
341 |
342 | input[type="checkbox"],
343 | input[type="radio"] {
344 | box-sizing: border-box; /* 1 */
345 | padding: 0; /* 2 */
346 | }
347 |
348 | /**
349 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
350 | * `font-size` values of the `input`, it causes the cursor style of the
351 | * decrement button to change from `default` to `text`.
352 | */
353 |
354 | input[type="number"]::-webkit-inner-spin-button,
355 | input[type="number"]::-webkit-outer-spin-button {
356 | height: auto;
357 | }
358 |
359 | /**
360 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
361 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
362 | */
363 |
364 | input[type="search"] {
365 | -webkit-appearance: textfield; /* 1 */
366 | box-sizing: content-box; /* 2 */
367 | }
368 |
369 | /**
370 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
371 | * Safari (but not Chrome) clips the cancel button when the search input has
372 | * padding (and `textfield` appearance).
373 | */
374 |
375 | input[type="search"]::-webkit-search-cancel-button,
376 | input[type="search"]::-webkit-search-decoration {
377 | -webkit-appearance: none;
378 | }
379 |
380 | /**
381 | * Define consistent border, margin, and padding.
382 | */
383 |
384 | fieldset {
385 | border: 1px solid #c0c0c0;
386 | margin: 0 2px;
387 | padding: 0.35em 0.625em 0.75em;
388 | }
389 |
390 | /**
391 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
392 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
393 | */
394 |
395 | legend {
396 | border: 0; /* 1 */
397 | padding: 0; /* 2 */
398 | }
399 |
400 | /**
401 | * Remove default vertical scrollbar in IE 8/9/10/11.
402 | */
403 |
404 | textarea {
405 | overflow: auto;
406 | }
407 |
408 | /**
409 | * Don't inherit the `font-weight` (applied by a rule above).
410 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
411 | */
412 |
413 | optgroup {
414 | font-weight: bold;
415 | }
416 |
417 | /* Tables
418 | ========================================================================== */
419 |
420 | /**
421 | * Remove most spacing between table cells.
422 | */
423 |
424 | table {
425 | border-collapse: collapse;
426 | border-spacing: 0;
427 | }
428 |
429 | td,
430 | th {
431 | padding: 0;
432 | }
433 | .clearfix {
434 | overflow: hidden;
435 | _zoom: 1;
436 | }
--------------------------------------------------------------------------------
/docs/static/js/manifest.b26844df2548cfeeb839.js:
--------------------------------------------------------------------------------
1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s textLength) {
67 | startPos = textLength;
68 | }
69 | if (endPos > textLength) {
70 | endPos = textLength;
71 | }
72 | if (startPos < 0) {
73 | startPos = textLength + startPos;
74 | }
75 | if (endPos < 0) {
76 | endPos = textLength + endPos;
77 | }
78 | if (textDom.createTextRange) {
79 | // IE Support
80 | var range = textDom.createTextRange();
81 | range.moveStart("character", -textLength);
82 | range.moveEnd("character", -textLength);
83 | range.moveStart("character", startPos);
84 | range.moveEnd("character", endPos);
85 | range.select();
86 | } else {
87 | // Firefox support
88 | textDom.setSelectionRange(startPos, endPos);
89 | textDom.focus();
90 | }
91 | }
92 | }
93 |
94 | /**
95 | * 在光标后插入文本
96 | * 参数:
97 | * textDom [JavaScript DOM String] 当前对象
98 | * value [String] 要插入的文本
99 | */
100 | function insertAfterText(textDom, value) {
101 | var selectRange;
102 | if (document.selection) {
103 | // IE Support
104 | textDom.focus();
105 | selectRange = document.selection.createRange();
106 | selectRange.text = value;
107 | textDom.focus();
108 | } else if (textDom.selectionStart || textDom.selectionStart == '0') {
109 | // Firefox support
110 | var startPos = textDom.selectionStart;
111 | var endPos = textDom.selectionEnd;
112 | var scrollTop = textDom.scrollTop;
113 | textDom.value = textDom.value.substring(0, startPos) + value + textDom.value.substring(endPos, textDom.value.length);
114 | textDom.focus();
115 | textDom.selectionStart = startPos + value.length;
116 | textDom.selectionEnd = startPos + value.length;
117 | textDom.scrollTop = scrollTop;
118 | } else {
119 | textDom.value += value;
120 | textDom.focus();
121 | }
122 | }
123 |
124 | module.exports = {
125 | getCursortPosition,
126 | setCaretPosition,
127 | getSelectText,
128 | setSelectText,
129 | insertAfterText
130 | };
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | vue-mdeditor
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-mdeditor",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "ovenslove <1905997838@qq.com>",
6 | "private": true,
7 | "scripts": {
8 | "dev": "node build/dev-server.js",
9 | "build": "node build/build.js"
10 | },
11 | "dependencies": {
12 | "vue": "^2.2.2",
13 | "vue-router": "^2.2.0",
14 | "vue-scroll": "^2.0.2"
15 | },
16 | "devDependencies": {
17 | "autoprefixer": "^6.7.2",
18 | "babel-core": "^6.22.1",
19 | "babel-loader": "^6.2.10",
20 | "babel-plugin-transform-runtime": "^6.22.0",
21 | "babel-preset-env": "^1.2.1",
22 | "babel-preset-stage-2": "^6.22.0",
23 | "babel-register": "^6.22.0",
24 | "chalk": "^1.1.3",
25 | "connect-history-api-fallback": "^1.3.0",
26 | "copy-webpack-plugin": "^4.0.1",
27 | "css-loader": "^0.26.1",
28 | "eventsource-polyfill": "^0.9.6",
29 | "express": "^4.14.1",
30 | "extract-text-webpack-plugin": "^2.0.0",
31 | "file-loader": "^0.10.0",
32 | "friendly-errors-webpack-plugin": "^1.1.3",
33 | "function-bind": "^1.1.0",
34 | "html-webpack-plugin": "^2.28.0",
35 | "http-proxy-middleware": "^0.17.3",
36 | "jade": "^1.11.0",
37 | "marked": "^0.3.6",
38 | "node-sass": "^4.5.1",
39 | "opn": "^4.0.2",
40 | "optimize-css-assets-webpack-plugin": "^1.3.0",
41 | "ora": "^1.1.0",
42 | "pug": "^2.0.0-beta11",
43 | "pug-loader": "^2.3.0",
44 | "rimraf": "^2.6.0",
45 | "sass-loader": "^6.0.3",
46 | "semver": "^5.3.0",
47 | "url-loader": "^0.5.7",
48 | "vue-loader": "^11.1.4",
49 | "vue-style-loader": "^2.0.0",
50 | "vue-template-compiler": "^2.2.4",
51 | "webpack": "^2.2.1",
52 | "webpack-bundle-analyzer": ">=3.3.2",
53 | "webpack-dev-middleware": "^1.10.0",
54 | "webpack-hot-middleware": "^2.16.1",
55 | "webpack-merge": "^2.6.1"
56 | },
57 | "engines": {
58 | "node": ">= 4.0.0",
59 | "npm": ">= 3.0.0"
60 | },
61 | "browserslist": [
62 | "> 1%",
63 | "last 2 versions",
64 | "not ie <= 8"
65 | ]
66 | }
67 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
28 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ovenslove/vue-mdEditor/5e0706d5bb74c533dff7f6d777d68bebd86c29da/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
获取mdValue
5 |
获取htmlValue
6 |
7 |
13 |
14 |
23 |
24 |
25 |
26 |
27 |
64 |
65 |
--------------------------------------------------------------------------------
/src/components/markdown.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
OVEN-mdEditor
5 |
6 |
7 | - B
8 | - I
9 |
10 | - H1
11 | - H2
12 | - H3
13 | - H4
14 | - H5
15 | - H6
16 | - 一
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
281 |
282 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import router from './router'
6 |
7 | Vue.config.productionTip = false
8 |
9 | /* eslint-disable no-new */
10 | new Vue({
11 | el: '#app',
12 | router,
13 | template: '',
14 | components: { App }
15 | })
16 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import Index from '@/components/index'
4 |
5 | Vue.use(Router)
6 |
7 | export default new Router({
8 | routes: [{
9 | path: '/',
10 | name: 'index',
11 | component: Index
12 | }]
13 | })
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ovenslove/vue-mdEditor/5e0706d5bb74c533dff7f6d777d68bebd86c29da/static/.gitkeep
--------------------------------------------------------------------------------
/static/css/atom-one-dark.min.css:
--------------------------------------------------------------------------------
1 | .hljs{display:block;overflow-x:auto;padding:0.5em;color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title{color:#e6c07b}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}.hljs-link{text-decoration:underline}
--------------------------------------------------------------------------------
/static/css/github-markdown.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: octicons-link;
3 | src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
4 | }
5 |
6 | .markdown-body {
7 | -ms-text-size-adjust: 100%;
8 | -webkit-text-size-adjust: 100%;
9 | line-height: 1.5;
10 | color: #333;
11 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
12 | font-size: 16px;
13 | line-height: 1.5;
14 | word-wrap: break-word;
15 | }
16 |
17 | .markdown-body .pl-c {
18 | color: #969896;
19 | }
20 |
21 | .markdown-body .pl-c1,
22 | .markdown-body .pl-s .pl-v {
23 | color: #0086b3;
24 | }
25 |
26 | .markdown-body .pl-e,
27 | .markdown-body .pl-en {
28 | color: #795da3;
29 | }
30 |
31 | .markdown-body .pl-smi,
32 | .markdown-body .pl-s .pl-s1 {
33 | color: #333;
34 | }
35 |
36 | .markdown-body .pl-ent {
37 | color: #63a35c;
38 | }
39 |
40 | .markdown-body .pl-k {
41 | color: #a71d5d;
42 | }
43 |
44 | .markdown-body .pl-s,
45 | .markdown-body .pl-pds,
46 | .markdown-body .pl-s .pl-pse .pl-s1,
47 | .markdown-body .pl-sr,
48 | .markdown-body .pl-sr .pl-cce,
49 | .markdown-body .pl-sr .pl-sre,
50 | .markdown-body .pl-sr .pl-sra {
51 | color: #183691;
52 | }
53 |
54 | .markdown-body .pl-v {
55 | color: #ed6a43;
56 | }
57 |
58 | .markdown-body .pl-id {
59 | color: #b52a1d;
60 | }
61 |
62 | .markdown-body .pl-ii {
63 | color: #f8f8f8;
64 | background-color: #b52a1d;
65 | }
66 |
67 | .markdown-body .pl-sr .pl-cce {
68 | font-weight: bold;
69 | color: #63a35c;
70 | }
71 |
72 | .markdown-body .pl-ml {
73 | color: #693a17;
74 | }
75 |
76 | .markdown-body .pl-mh,
77 | .markdown-body .pl-mh .pl-en,
78 | .markdown-body .pl-ms {
79 | font-weight: bold;
80 | color: #1d3e81;
81 | }
82 |
83 | .markdown-body .pl-mq {
84 | color: #008080;
85 | }
86 |
87 | .markdown-body .pl-mi {
88 | font-style: italic;
89 | color: #333;
90 | }
91 |
92 | .markdown-body .pl-mb {
93 | font-weight: bold;
94 | color: #333;
95 | }
96 |
97 | .markdown-body .pl-md {
98 | color: #bd2c00;
99 | background-color: #ffecec;
100 | }
101 |
102 | .markdown-body .pl-mi1 {
103 | color: #55a532;
104 | background-color: #eaffea;
105 | }
106 |
107 | .markdown-body .pl-mdr {
108 | font-weight: bold;
109 | color: #795da3;
110 | }
111 |
112 | .markdown-body .pl-mo {
113 | color: #1d3e81;
114 | }
115 |
116 | .markdown-body .octicon {
117 | display: inline-block;
118 | vertical-align: text-top;
119 | fill: currentColor;
120 | }
121 |
122 | .markdown-body a {
123 | background-color: transparent;
124 | -webkit-text-decoration-skip: objects;
125 | }
126 |
127 | .markdown-body a:active,
128 | .markdown-body a:hover {
129 | outline-width: 0;
130 | }
131 |
132 | .markdown-body strong {
133 | font-weight: inherit;
134 | }
135 |
136 | .markdown-body strong {
137 | font-weight: bolder;
138 | }
139 |
140 | .markdown-body h1 {
141 | font-size: 2em;
142 | margin: 0.67em 0;
143 | }
144 |
145 | .markdown-body img {
146 | border-style: none;
147 | }
148 |
149 | .markdown-body svg:not(:root) {
150 | overflow: hidden;
151 | }
152 |
153 | .markdown-body code,
154 | .markdown-body kbd,
155 | .markdown-body pre {
156 | font-family: monospace, monospace;
157 | font-size: 1em;
158 | }
159 |
160 | .markdown-body hr {
161 | box-sizing: content-box;
162 | height: 0;
163 | overflow: visible;
164 | }
165 |
166 | .markdown-body input {
167 | font: inherit;
168 | margin: 0;
169 | }
170 |
171 | .markdown-body input {
172 | overflow: visible;
173 | }
174 |
175 | .markdown-body [type="checkbox"] {
176 | box-sizing: border-box;
177 | padding: 0;
178 | }
179 |
180 | .markdown-body * {
181 | box-sizing: border-box;
182 | }
183 |
184 | .markdown-body input {
185 | font-family: inherit;
186 | font-size: inherit;
187 | line-height: inherit;
188 | }
189 |
190 | .markdown-body a {
191 | color: #4078c0;
192 | text-decoration: none;
193 | }
194 |
195 | .markdown-body a:hover,
196 | .markdown-body a:active {
197 | text-decoration: underline;
198 | }
199 |
200 | .markdown-body strong {
201 | font-weight: 600;
202 | }
203 |
204 | .markdown-body hr {
205 | height: 0;
206 | margin: 15px 0;
207 | overflow: hidden;
208 | background: transparent;
209 | border: 0;
210 | border-bottom: 1px solid #ddd;
211 | }
212 |
213 | .markdown-body hr::before {
214 | display: table;
215 | content: "";
216 | }
217 |
218 | .markdown-body hr::after {
219 | display: table;
220 | clear: both;
221 | content: "";
222 | }
223 |
224 | .markdown-body table {
225 | border-spacing: 0;
226 | border-collapse: collapse;
227 | }
228 |
229 | .markdown-body td,
230 | .markdown-body th {
231 | padding: 0;
232 | }
233 |
234 | .markdown-body h1,
235 | .markdown-body h2,
236 | .markdown-body h3,
237 | .markdown-body h4,
238 | .markdown-body h5,
239 | .markdown-body h6 {
240 | margin-top: 0;
241 | margin-bottom: 0;
242 | }
243 |
244 | .markdown-body h1 {
245 | font-size: 32px;
246 | font-weight: 600;
247 | }
248 |
249 | .markdown-body h2 {
250 | font-size: 24px;
251 | font-weight: 600;
252 | }
253 |
254 | .markdown-body h3 {
255 | font-size: 20px;
256 | font-weight: 600;
257 | }
258 |
259 | .markdown-body h4 {
260 | font-size: 16px;
261 | font-weight: 600;
262 | }
263 |
264 | .markdown-body h5 {
265 | font-size: 14px;
266 | font-weight: 600;
267 | }
268 |
269 | .markdown-body h6 {
270 | font-size: 12px;
271 | font-weight: 600;
272 | }
273 |
274 | .markdown-body p {
275 | margin-top: 0;
276 | margin-bottom: 10px;
277 | }
278 |
279 | .markdown-body blockquote {
280 | margin: 0;
281 | }
282 |
283 | .markdown-body ul,
284 | .markdown-body ol {
285 | padding-left: 0;
286 | margin-top: 0;
287 | margin-bottom: 0;
288 | }
289 |
290 | .markdown-body ol ol,
291 | .markdown-body ul ol {
292 | list-style-type: lower-roman;
293 | }
294 |
295 | .markdown-body ul ul ol,
296 | .markdown-body ul ol ol,
297 | .markdown-body ol ul ol,
298 | .markdown-body ol ol ol {
299 | list-style-type: lower-alpha;
300 | }
301 |
302 | .markdown-body dd {
303 | margin-left: 0;
304 | }
305 |
306 | .markdown-body code {
307 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
308 | font-size: 12px;
309 | }
310 |
311 | .markdown-body pre {
312 | margin-top: 0;
313 | margin-bottom: 0;
314 | font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
315 | }
316 |
317 | .markdown-body .octicon {
318 | vertical-align: text-bottom;
319 | }
320 |
321 | .markdown-body input {
322 | -webkit-font-feature-settings: "liga" 0;
323 | font-feature-settings: "liga" 0;
324 | }
325 |
326 | .markdown-body::before {
327 | display: table;
328 | content: "";
329 | }
330 |
331 | .markdown-body::after {
332 | display: table;
333 | clear: both;
334 | content: "";
335 | }
336 |
337 | .markdown-body>*:first-child {
338 | margin-top: 0 !important;
339 | }
340 |
341 | .markdown-body>*:last-child {
342 | margin-bottom: 0 !important;
343 | }
344 |
345 | .markdown-body a:not([href]) {
346 | color: inherit;
347 | text-decoration: none;
348 | }
349 |
350 | .markdown-body .anchor {
351 | float: left;
352 | padding-right: 4px;
353 | margin-left: -20px;
354 | line-height: 1;
355 | }
356 |
357 | .markdown-body .anchor:focus {
358 | outline: none;
359 | }
360 |
361 | .markdown-body p,
362 | .markdown-body blockquote,
363 | .markdown-body ul,
364 | .markdown-body ol,
365 | .markdown-body dl,
366 | .markdown-body table,
367 | .markdown-body pre {
368 | margin-top: 0;
369 | margin-bottom: 16px;
370 | }
371 |
372 | .markdown-body hr {
373 | height: 0.25em;
374 | padding: 0;
375 | margin: 24px 0;
376 | background-color: #e7e7e7;
377 | border: 0;
378 | }
379 |
380 | .markdown-body blockquote {
381 | padding: 0 1em;
382 | color: #777;
383 | border-left: 0.25em solid #ddd;
384 | }
385 |
386 | .markdown-body blockquote>:first-child {
387 | margin-top: 0;
388 | }
389 |
390 | .markdown-body blockquote>:last-child {
391 | margin-bottom: 0;
392 | }
393 |
394 | .markdown-body kbd {
395 | display: inline-block;
396 | padding: 3px 5px;
397 | font-size: 11px;
398 | line-height: 10px;
399 | color: #555;
400 | vertical-align: middle;
401 | background-color: #fcfcfc;
402 | border: solid 1px #ccc;
403 | border-bottom-color: #bbb;
404 | border-radius: 3px;
405 | box-shadow: inset 0 -1px 0 #bbb;
406 | }
407 |
408 | .markdown-body h1,
409 | .markdown-body h2,
410 | .markdown-body h3,
411 | .markdown-body h4,
412 | .markdown-body h5,
413 | .markdown-body h6 {
414 | margin-top: 24px;
415 | margin-bottom: 16px;
416 | font-weight: 600;
417 | line-height: 1.25;
418 | }
419 |
420 | .markdown-body h1 .octicon-link,
421 | .markdown-body h2 .octicon-link,
422 | .markdown-body h3 .octicon-link,
423 | .markdown-body h4 .octicon-link,
424 | .markdown-body h5 .octicon-link,
425 | .markdown-body h6 .octicon-link {
426 | color: #000;
427 | vertical-align: middle;
428 | visibility: hidden;
429 | }
430 |
431 | .markdown-body h1:hover .anchor,
432 | .markdown-body h2:hover .anchor,
433 | .markdown-body h3:hover .anchor,
434 | .markdown-body h4:hover .anchor,
435 | .markdown-body h5:hover .anchor,
436 | .markdown-body h6:hover .anchor {
437 | text-decoration: none;
438 | }
439 |
440 | .markdown-body h1:hover .anchor .octicon-link,
441 | .markdown-body h2:hover .anchor .octicon-link,
442 | .markdown-body h3:hover .anchor .octicon-link,
443 | .markdown-body h4:hover .anchor .octicon-link,
444 | .markdown-body h5:hover .anchor .octicon-link,
445 | .markdown-body h6:hover .anchor .octicon-link {
446 | visibility: visible;
447 | }
448 |
449 | .markdown-body h1 {
450 | padding-bottom: 0.3em;
451 | font-size: 2em;
452 | border-bottom: 1px solid #eee;
453 | }
454 |
455 | .markdown-body h2 {
456 | padding-bottom: 0.3em;
457 | font-size: 1.5em;
458 | border-bottom: 1px solid #eee;
459 | }
460 |
461 | .markdown-body h3 {
462 | font-size: 1.25em;
463 | }
464 |
465 | .markdown-body h4 {
466 | font-size: 1em;
467 | }
468 |
469 | .markdown-body h5 {
470 | font-size: 0.875em;
471 | }
472 |
473 | .markdown-body h6 {
474 | font-size: 0.85em;
475 | color: #777;
476 | }
477 |
478 | .markdown-body ul,
479 | .markdown-body ol {
480 | padding-left: 2em;
481 | }
482 |
483 | .markdown-body ul ul,
484 | .markdown-body ul ol,
485 | .markdown-body ol ol,
486 | .markdown-body ol ul {
487 | margin-top: 0;
488 | margin-bottom: 0;
489 | }
490 |
491 | .markdown-body li>p {
492 | margin-top: 16px;
493 | }
494 |
495 | .markdown-body li+li {
496 | margin-top: 0.25em;
497 | }
498 |
499 | .markdown-body dl {
500 | padding: 0;
501 | }
502 |
503 | .markdown-body dl dt {
504 | padding: 0;
505 | margin-top: 16px;
506 | font-size: 1em;
507 | font-style: italic;
508 | font-weight: bold;
509 | }
510 |
511 | .markdown-body dl dd {
512 | padding: 0 16px;
513 | margin-bottom: 16px;
514 | }
515 |
516 | .markdown-body table {
517 | display: block;
518 | width: 100%;
519 | overflow: auto;
520 | }
521 |
522 | .markdown-body table th {
523 | font-weight: bold;
524 | }
525 |
526 | .markdown-body table th,
527 | .markdown-body table td {
528 | padding: 6px 13px;
529 | border: 1px solid #ddd;
530 | }
531 |
532 | .markdown-body table tr {
533 | background-color: #fff;
534 | border-top: 1px solid #ccc;
535 | }
536 |
537 | .markdown-body table tr:nth-child(2n) {
538 | background-color: #f8f8f8;
539 | }
540 |
541 | .markdown-body img {
542 | max-width: 100%;
543 | box-sizing: content-box;
544 | background-color: #fff;
545 | }
546 |
547 | .markdown-body code {
548 | padding: 0;
549 | padding-top: 0.2em;
550 | padding-bottom: 0.2em;
551 | margin: 0;
552 | font-size: 85%;
553 | background-color: rgba(0,0,0,0.04);
554 | border-radius: 3px;
555 | }
556 |
557 | .markdown-body code::before,
558 | .markdown-body code::after {
559 | letter-spacing: -0.2em;
560 | content: "\00a0";
561 | }
562 |
563 | .markdown-body pre {
564 | word-wrap: normal;
565 | }
566 |
567 | .markdown-body pre>code {
568 | padding: 0;
569 | margin: 0;
570 | font-size: 100%;
571 | word-break: normal;
572 | white-space: pre;
573 | background: transparent;
574 | border: 0;
575 | }
576 |
577 | .markdown-body .highlight {
578 | margin-bottom: 16px;
579 | }
580 |
581 | .markdown-body .highlight pre {
582 | margin-bottom: 0;
583 | word-break: normal;
584 | }
585 |
586 | .markdown-body .highlight pre,
587 | .markdown-body pre {
588 | padding: 16px;
589 | overflow: auto;
590 | font-size: 85%;
591 | line-height: 1.45;
592 | background-color: #f7f7f7;
593 | border-radius: 3px;
594 | }
595 |
596 | .markdown-body pre code {
597 | display: inline;
598 | max-width: auto;
599 | padding: 0;
600 | margin: 0;
601 | overflow: visible;
602 | line-height: inherit;
603 | word-wrap: normal;
604 | background-color: transparent;
605 | border: 0;
606 | }
607 |
608 | .markdown-body pre code::before,
609 | .markdown-body pre code::after {
610 | content: normal;
611 | }
612 |
613 | .markdown-body .pl-0 {
614 | padding-left: 0 !important;
615 | }
616 |
617 | .markdown-body .pl-1 {
618 | padding-left: 3px !important;
619 | }
620 |
621 | .markdown-body .pl-2 {
622 | padding-left: 6px !important;
623 | }
624 |
625 | .markdown-body .pl-3 {
626 | padding-left: 12px !important;
627 | }
628 |
629 | .markdown-body .pl-4 {
630 | padding-left: 24px !important;
631 | }
632 |
633 | .markdown-body .pl-5 {
634 | padding-left: 36px !important;
635 | }
636 |
637 | .markdown-body .pl-6 {
638 | padding-left: 48px !important;
639 | }
640 |
641 | .markdown-body .full-commit .btn-outline:not(:disabled):hover {
642 | color: #4078c0;
643 | border: 1px solid #4078c0;
644 | }
645 |
646 | .markdown-body kbd {
647 | display: inline-block;
648 | padding: 3px 5px;
649 | font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
650 | line-height: 10px;
651 | color: #555;
652 | vertical-align: middle;
653 | background-color: #fcfcfc;
654 | border: solid 1px #ccc;
655 | border-bottom-color: #bbb;
656 | border-radius: 3px;
657 | box-shadow: inset 0 -1px 0 #bbb;
658 | }
659 |
660 | .markdown-body :checked+.radio-label {
661 | position: relative;
662 | z-index: 1;
663 | border-color: #4078c0;
664 | }
665 |
666 | .markdown-body .task-list-item {
667 | list-style-type: none;
668 | }
669 |
670 | .markdown-body .task-list-item+.task-list-item {
671 | margin-top: 3px;
672 | }
673 |
674 | .markdown-body .task-list-item input {
675 | margin: 0 0.2em 0.25em -1.6em;
676 | vertical-align: middle;
677 | }
678 |
679 | .markdown-body hr {
680 | border-bottom-color: #eee;
681 | }
--------------------------------------------------------------------------------
/static/css/reset.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS and IE text size adjust after device orientation change,
6 | * without disabling user zoom.
7 | */
8 |
9 | *{
10 | margin: 0;
11 | padding: 0;
12 | border: 0px;
13 | }
14 |
15 | html {
16 | font-family: sans-serif; /* 1 */
17 | -ms-text-size-adjust: 100%; /* 2 */
18 | -webkit-text-size-adjust: 100%; /* 2 */
19 | height: 100%;
20 | }
21 |
22 | /**
23 | * Remove default margin.
24 | */
25 |
26 | body {
27 | margin: 0;
28 | height: 100%;
29 |
30 | }
31 |
32 | /* HTML5 display definitions
33 | ========================================================================== */
34 |
35 | /**
36 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
37 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
38 | * and Firefox.
39 | * Correct `block` display not defined for `main` in IE 11.
40 | */
41 |
42 | article,
43 | aside,
44 | details,
45 | figcaption,
46 | figure,
47 | footer,
48 | header,
49 | main,
50 | menu,
51 | nav,
52 | section,
53 | summary {
54 | display: block;
55 | }
56 |
57 | /**
58 | * 1. Correct `inline-block` display not defined in IE 8/9.
59 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
60 | */
61 |
62 | audio,
63 | canvas,
64 | progress,
65 | video {
66 | display: inline-block; /* 1 */
67 | vertical-align: baseline; /* 2 */
68 | }
69 |
70 | /**
71 | * Prevent modern browsers from displaying `audio` without controls.
72 | * Remove excess height in iOS 5 devices.
73 | */
74 |
75 | audio:not([controls]) {
76 | display: none;
77 | height: 0;
78 | }
79 |
80 | /**
81 | * Address `[hidden]` styling not present in IE 8/9/10.
82 | * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
83 | */
84 |
85 | [hidden],
86 | template {
87 | display: none;
88 | }
89 |
90 | /* Links
91 | ========================================================================== */
92 |
93 | /**
94 | * Remove the gray background color from active links in IE 10.
95 | */
96 |
97 | a {
98 | background-color: transparent;
99 | }
100 |
101 | /**
102 | * Improve readability of focused elements when they are also in an
103 | * active/hover state.
104 | */
105 |
106 | a:active,
107 | a:hover {
108 | outline: 0;
109 | }
110 |
111 | /* Text-level semantics
112 | ========================================================================== */
113 |
114 | /**
115 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
116 | */
117 |
118 | abbr[title] {
119 | border-bottom: 1px dotted;
120 | }
121 |
122 | /**
123 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
124 | */
125 |
126 | b,
127 | strong {
128 | font-weight: bold;
129 | }
130 |
131 | /**
132 | * Address styling not present in Safari and Chrome.
133 | */
134 |
135 | dfn {
136 | font-style: italic;
137 | }
138 |
139 | /**
140 | * Address variable `h1` font-size and margin within `section` and `article`
141 | * contexts in Firefox 4+, Safari, and Chrome.
142 | */
143 |
144 | h1 {
145 | font-size: 2em;
146 | margin: 0.67em 0;
147 | }
148 |
149 | /**
150 | * Address styling not present in IE 8/9.
151 | */
152 |
153 | mark {
154 | background: #ff0;
155 | color: #000;
156 | }
157 |
158 | /**
159 | * Address inconsistent and variable font size in all browsers.
160 | */
161 |
162 | small {
163 | font-size: 80%;
164 | }
165 |
166 | /**
167 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
168 | */
169 |
170 | sub,
171 | sup {
172 | font-size: 75%;
173 | line-height: 0;
174 | position: relative;
175 | vertical-align: baseline;
176 | }
177 |
178 | sup {
179 | top: -0.5em;
180 | }
181 |
182 | sub {
183 | bottom: -0.25em;
184 | }
185 |
186 | /* Embedded content
187 | ========================================================================== */
188 |
189 | /**
190 | * Remove border when inside `a` element in IE 8/9/10.
191 | */
192 |
193 | img {
194 | border: 0;
195 | }
196 |
197 | /**
198 | * Correct overflow not hidden in IE 9/10/11.
199 | */
200 |
201 | svg:not(:root) {
202 | overflow: hidden;
203 | }
204 |
205 | /* Grouping content
206 | ========================================================================== */
207 |
208 | /**
209 | * Address margin not present in IE 8/9 and Safari.
210 | */
211 |
212 | figure {
213 | margin: 1em 40px;
214 | }
215 |
216 | /**
217 | * Address differences between Firefox and other browsers.
218 | */
219 |
220 | hr {
221 | box-sizing: content-box;
222 | height: 0;
223 | }
224 |
225 | /**
226 | * Contain overflow in all browsers.
227 | */
228 |
229 | pre {
230 | overflow: auto;
231 | }
232 |
233 | /**
234 | * Address odd `em`-unit font size rendering in all browsers.
235 | */
236 |
237 | code,
238 | kbd,
239 | pre,
240 | samp {
241 | font-family: monospace, monospace;
242 | font-size: 1em;
243 | }
244 |
245 | /* Forms
246 | ========================================================================== */
247 |
248 | /**
249 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
250 | * styling of `select`, unless a `border` property is set.
251 | */
252 |
253 | /**
254 | * 1. Correct color not being inherited.
255 | * Known issue: affects color of disabled elements.
256 | * 2. Correct font properties not being inherited.
257 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
258 | */
259 |
260 | button,
261 | input,
262 | optgroup,
263 | select,
264 | textarea {
265 | color: inherit; /* 1 */
266 | font: inherit; /* 2 */
267 | margin: 0; /* 3 */
268 | }
269 |
270 | /**
271 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
272 | */
273 |
274 | button {
275 | overflow: visible;
276 | }
277 |
278 | /**
279 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
280 | * All other form control elements do not inherit `text-transform` values.
281 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
282 | * Correct `select` style inheritance in Firefox.
283 | */
284 |
285 | button,
286 | select {
287 | text-transform: none;
288 | }
289 |
290 | /**
291 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
292 | * and `video` controls.
293 | * 2. Correct inability to style clickable `input` types in iOS.
294 | * 3. Improve usability and consistency of cursor style between image-type
295 | * `input` and others.
296 | */
297 |
298 | button,
299 | html input[type="button"], /* 1 */
300 | input[type="reset"],
301 | input[type="submit"] {
302 | -webkit-appearance: button; /* 2 */
303 | cursor: pointer; /* 3 */
304 | }
305 |
306 | /**
307 | * Re-set default cursor for disabled elements.
308 | */
309 |
310 | button[disabled],
311 | html input[disabled] {
312 | cursor: default;
313 | }
314 |
315 | /**
316 | * Remove inner padding and border in Firefox 4+.
317 | */
318 |
319 | button::-moz-focus-inner,
320 | input::-moz-focus-inner {
321 | border: 0;
322 | padding: 0;
323 | }
324 |
325 | /**
326 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
327 | * the UA stylesheet.
328 | */
329 |
330 | input {
331 | line-height: normal;
332 | }
333 |
334 | /**
335 | * It's recommended that you don't attempt to style these elements.
336 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
337 | *
338 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
339 | * 2. Remove excess padding in IE 8/9/10.
340 | */
341 |
342 | input[type="checkbox"],
343 | input[type="radio"] {
344 | box-sizing: border-box; /* 1 */
345 | padding: 0; /* 2 */
346 | }
347 |
348 | /**
349 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
350 | * `font-size` values of the `input`, it causes the cursor style of the
351 | * decrement button to change from `default` to `text`.
352 | */
353 |
354 | input[type="number"]::-webkit-inner-spin-button,
355 | input[type="number"]::-webkit-outer-spin-button {
356 | height: auto;
357 | }
358 |
359 | /**
360 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
361 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
362 | */
363 |
364 | input[type="search"] {
365 | -webkit-appearance: textfield; /* 1 */
366 | box-sizing: content-box; /* 2 */
367 | }
368 |
369 | /**
370 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
371 | * Safari (but not Chrome) clips the cancel button when the search input has
372 | * padding (and `textfield` appearance).
373 | */
374 |
375 | input[type="search"]::-webkit-search-cancel-button,
376 | input[type="search"]::-webkit-search-decoration {
377 | -webkit-appearance: none;
378 | }
379 |
380 | /**
381 | * Define consistent border, margin, and padding.
382 | */
383 |
384 | fieldset {
385 | border: 1px solid #c0c0c0;
386 | margin: 0 2px;
387 | padding: 0.35em 0.625em 0.75em;
388 | }
389 |
390 | /**
391 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
392 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
393 | */
394 |
395 | legend {
396 | border: 0; /* 1 */
397 | padding: 0; /* 2 */
398 | }
399 |
400 | /**
401 | * Remove default vertical scrollbar in IE 8/9/10/11.
402 | */
403 |
404 | textarea {
405 | overflow: auto;
406 | }
407 |
408 | /**
409 | * Don't inherit the `font-weight` (applied by a rule above).
410 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
411 | */
412 |
413 | optgroup {
414 | font-weight: bold;
415 | }
416 |
417 | /* Tables
418 | ========================================================================== */
419 |
420 | /**
421 | * Remove most spacing between table cells.
422 | */
423 |
424 | table {
425 | border-collapse: collapse;
426 | border-spacing: 0;
427 | }
428 |
429 | td,
430 | th {
431 | padding: 0;
432 | }
433 | .clearfix {
434 | overflow: hidden;
435 | _zoom: 1;
436 | }
--------------------------------------------------------------------------------
/static/js/rangeFn.js:
--------------------------------------------------------------------------------
1 | // 获取光标位置
2 | function getCursortPosition(textDom) {
3 | var cursorPos = 0;
4 | if (document.selection) {
5 | // IE Support
6 | textDom.focus();
7 | var selectRange = document.selection.createRange();
8 | selectRange.moveStart('character', -textDom.value.length);
9 | cursorPos = selectRange.text.length;
10 | } else if (textDom.selectionStart || textDom.selectionStart == '0') {
11 | // Firefox support
12 | cursorPos = textDom.selectionStart;
13 | }
14 | return cursorPos;
15 | }
16 |
17 | // 设置光标位置
18 | function setCaretPosition(textDom, pos) {
19 | if (textDom.setSelectionRange) {
20 | // IE Support
21 | textDom.focus();
22 | textDom.setSelectionRange(pos, pos);
23 | } else if (textDom.createTextRange) {
24 | // Firefox support
25 | var range = textDom.createTextRange();
26 | range.collapse(true);
27 | range.moveEnd('character', pos);
28 | range.moveStart('character', pos);
29 | range.select();
30 | }
31 | }
32 | // 获取选中文字
33 | function getSelectText() {
34 | var userSelection, text;
35 | if (window.getSelection) {
36 | // Firefox support
37 | userSelection = window.getSelection();
38 | } else if (document.selection) {
39 | // IE Support
40 | userSelection = document.selection.createRange();
41 | }
42 | if (!(text = userSelection.text)) {
43 | text = userSelection;
44 | }
45 | return text;
46 | }
47 |
48 | /**
49 | * 选中特定范围的文本
50 | * 参数:
51 | * textDom [JavaScript DOM String] 当前对象
52 | * startPos [Int] 起始位置
53 | * endPos [Int] 终点位置
54 | */
55 | function setSelectText(textDom, startPos, endPos) {
56 | var startPos = parseInt(startPos),
57 | endPos = parseInt(endPos),
58 | textLength = textDom.value.length;
59 | if (textLength) {
60 | if (!startPos) {
61 | startPos = 0;
62 | }
63 | if (!endPos) {
64 | endPos = textLength;
65 | }
66 | if (startPos > textLength) {
67 | startPos = textLength;
68 | }
69 | if (endPos > textLength) {
70 | endPos = textLength;
71 | }
72 | if (startPos < 0) {
73 | startPos = textLength + startPos;
74 | }
75 | if (endPos < 0) {
76 | endPos = textLength + endPos;
77 | }
78 | if (textDom.createTextRange) {
79 | // IE Support
80 | var range = textDom.createTextRange();
81 | range.moveStart("character", -textLength);
82 | range.moveEnd("character", -textLength);
83 | range.moveStart("character", startPos);
84 | range.moveEnd("character", endPos);
85 | range.select();
86 | } else {
87 | // Firefox support
88 | textDom.setSelectionRange(startPos, endPos);
89 | textDom.focus();
90 | }
91 | }
92 | }
93 |
94 | /**
95 | * 在光标后插入文本
96 | * 参数:
97 | * textDom [JavaScript DOM String] 当前对象
98 | * value [String] 要插入的文本
99 | */
100 | function insertAfterText(textDom, value) {
101 | var selectRange;
102 | if (document.selection) {
103 | // IE Support
104 | textDom.focus();
105 | selectRange = document.selection.createRange();
106 | selectRange.text = value;
107 | textDom.focus();
108 | } else if (textDom.selectionStart || textDom.selectionStart == '0') {
109 | // Firefox support
110 | var startPos = textDom.selectionStart;
111 | var endPos = textDom.selectionEnd;
112 | var scrollTop = textDom.scrollTop;
113 | textDom.value = textDom.value.substring(0, startPos) + value + textDom.value.substring(endPos, textDom.value.length);
114 | textDom.focus();
115 | textDom.selectionStart = startPos + value.length;
116 | textDom.selectionEnd = startPos + value.length;
117 | textDom.scrollTop = scrollTop;
118 | } else {
119 | textDom.value += value;
120 | textDom.focus();
121 | }
122 | }
123 |
124 | module.exports = {
125 | getCursortPosition,
126 | setCaretPosition,
127 | getSelectText,
128 | setSelectText,
129 | insertAfterText
130 | };
--------------------------------------------------------------------------------