├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── logo.png ├── 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 └── test.env.js ├── dist └── vue-baberrage.js ├── docs ├── css │ ├── app.2f5a7ad3.css │ └── chunk-vendors.f055c36f.css ├── favicon.ico ├── img │ └── logo.e113043f.png ├── index.html ├── js │ ├── about.a807c8cf.js │ ├── about.a807c8cf.js.map │ ├── app.162a2c5e.js │ ├── app.162a2c5e.js.map │ ├── app.8763720e.js │ ├── app.8763720e.js.map │ ├── app.c72daff4.js │ ├── app.c72daff4.js.map │ ├── chunk-vendors.bbae5265.js │ ├── chunk-vendors.bbae5265.js.map │ ├── chunk-vendors.df1b52d7.js │ ├── chunk-vendors.df1b52d7.js.map │ ├── chunk-vendors.ff8a496d.js │ └── chunk-vendors.ff8a496d.js.map ├── logo.png └── zh │ └── README.md ├── index.html ├── package-lock.json ├── package.json ├── rollup.config.js ├── screenshot ├── demo-show.gif └── demo.gif ├── src ├── App.vue ├── assets │ ├── avatar.jpg │ └── logo.png ├── lib │ ├── components │ │ └── vue-baberrage-msg │ │ │ └── index.vue │ ├── constants │ │ └── index.js │ ├── index.js │ ├── utils │ │ └── widthCalcultor.js │ └── vue-baberrage.vue └── main.js ├── static ├── .gitkeep └── avatar.jpg ├── test └── unit │ ├── .eslintrc │ ├── jest.conf.js │ ├── setup.js │ └── specs │ └── HelloWorld.spec.js └── webpack.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ], 5 | "plugins": ["@babel/plugin-syntax-dynamic-import"] 6 | } 7 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | /test/unit/coverage/ 6 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parserOptions: { 6 | parser: 'babel-eslint' 7 | }, 8 | env: { 9 | browser: true, 10 | }, 11 | extends: [ 12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention 13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 14 | 'plugin:vue/essential', 15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md 16 | 'standard' 17 | ], 18 | // required to lint *.vue files 19 | plugins: [ 20 | 'vue' 21 | ], 22 | // add your custom rules here 23 | rules: { 24 | // allow async-await 25 | 'generator-star-spacing': 'off', 26 | // allow debugger during development 27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | /test/unit/coverage/ 7 | dist/ 8 | dist/* 9 | 10 | # Editor directories and files 11 | .idea 12 | .vscode 13 | *.suo 14 | *.ntvs* 15 | *.njsproj 16 | *.sln 17 | 18 | .history -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 |
4 | VueBaberrage 5 |
6 |
7 |

8 | 9 |

Barrage plugin for Vue.js.

10 |

11 | 12 | 13 | 14 | 15 |

16 | 17 |

18 | Overview • 19 | Overview • 20 | Demo • 21 | Installation • 22 | Usage • 23 | Plug Options • 24 | Roadmap 25 |

26 | 27 | ## Introduction 28 | 29 | Baberrage is one of the popular comment perform style in China. 30 | 31 | ## Overview 32 | 33 | ![new_version](https://raw.githubusercontent.com/superhos/vue-baberrage/master/screenshot/demo-show.gif) 34 | 35 | GIF performance is not good enough. Please refer to [DEMO](http://blog.chenhaotaishuaile.com/vue-baberrage/) page 36 | 37 | [中文文档](/docs/zh/README.md) 38 | 39 | ## Demo 40 | 41 | See the [DEMO](https://blog.chenhaotaishuaile.com/vue-baberrage/) page 42 | 43 | ## Installation 44 | 45 | 1) Install package via NPM 46 | 47 | ```bash 48 | npm i vue-baberrage 49 | ``` 50 | 2) Install plugin within project 51 | 52 | ```javascript 53 | import Vue from 'vue' 54 | import { vueBaberrage } from 'vue-baberrage' 55 | Vue.use(vueBaberrage) 56 | ``` 57 | or 58 | 59 | ```javascript 60 | const vueBaberrage = request('vue-baberrage').vueBaberrage 61 | ``` 62 | 63 | or 64 | 65 | ```html 66 | 67 | ``` 68 | 69 | ## Usage 70 | 71 | 1) Template 72 | `isShow` and `barrageList` are necessary. 73 | 74 | ```html 75 |
76 | 81 | 82 |
83 | ``` 84 | 85 | 2) Script 86 | 87 | ```javascript 88 | import { MESSAGE_TYPE } from 'vue-baberrage' 89 | 90 | export default { 91 | name: 'app', 92 | data () { 93 | return { 94 | msg: 'Hello vue-baberrage', 95 | barrageIsShow: true, 96 | currentId : 0, 97 | barrageLoop: false, 98 | barrageList: [] 99 | } 100 | }, 101 | methods:{ 102 | addToList (){ 103 | this.barrageList.push({ 104 | id: ++this.currentId, 105 | avatar: "./static/avatar.jpg", 106 | msg: this.msg, 107 | time: 5, 108 | type: MESSAGE_TYPE.NORMAL 109 | }); 110 | ... 111 | ``` 112 | 113 | 3) Already done 114 | 115 | Just two step, and add new barrage message by pushing data into the `barrageList`. You needn't concern about the management of the barrageList, it will be handled by vue-baberrage. Suggest the `barrageList` store into the Vuex. 116 | 117 | ## Custom Example 118 | 119 | New function in version 3.2.0. Support provides VNode to render the barrage. 120 | ````javascript 121 | 131 | 136 | 137 | ```` 138 | Customized your barrage UI as the slot of component.`props.item` data same as barrage data. Noticed that, if the width of barrage not fit in stage. You can add the field `extraWidth` in barrage data. 139 | ````javascript 140 | { 141 | id: ++this.currentId, 142 | avatar: "./static/avatar.jpg", 143 | msg: this.msg, 144 | data: { 145 | userName: 'more data' 146 | }, 147 | time: 5, 148 | type: MESSAGE_TYPE.NORMAL, 149 | extraWidth: 60 150 | } 151 | ```` 152 | 153 | Since vue-baberrage only count the width of length of the barrage's message. 154 | 155 | ## Plugin Options 156 | 157 | #### isShow 158 | - Default: `true` 159 | - Acceptable-Values: Boolean 160 | - Function: This is the switch that if barrage is displayed. 161 | 162 | #### barrageList 163 | - Default: `[]` 164 | - Acceptable-Values: Array 165 | - Function: The is the container for managing the all barrage messages. 166 | 167 | #### boxWidth 168 | - Default: `parent's Width` 169 | - Acceptable-Values: Number 170 | - Function: Determine the width of the stage. 171 | 172 | #### boxHeight 173 | - Default: `window's Height` 174 | - Acceptable-Values: Number 175 | - Function: Determine the height of the stage. 176 | 177 | #### messageHeight 178 | - Default: `message's Height` 179 | - Acceptable-Values: Number 180 | - Function: Determine the height of the message. 181 | 182 | #### maxWordCount 183 | - Default: 60 184 | - Acceptable-Values: Number 185 | - Function: Determine the word count of the message. 186 | 187 | #### loop 188 | - Default: `false` 189 | - Acceptable-Values: Boolean 190 | - Function: Loop or not. 191 | 192 | #### throttleGap 193 | - Default: 2000 194 | - Acceptable-Values: Number 195 | - Function: The gap time between the message 196 | 197 | #### posRender 198 | - Default: null 199 | - Acceptable-Values: Function 200 | - Function: To customize the lane of babbarrage messages. 201 | - Return: The function muse return the index of the lane. 202 | 203 | #### lanesCount 204 | - Default: 0 205 | - Acceptable-Values: Number 206 | - Function: To fixed the number of the lanes. 207 | 208 | ## Barrage Message Options 209 | 210 | #### id 211 | - Default: `null` 212 | - Acceptable-Values: Number 213 | - Function: For distinguish with other barrage messages. 214 | 215 | #### avatar 216 | - Default: `#` 217 | - Acceptable-Values: String 218 | - Function: Show the avatar of the barrage message. 219 | 220 | #### msg 221 | - Default: `null` 222 | - Acceptable-Values: String 223 | - Function: The content of the barrage message. 224 | 225 | #### barrageStyle 226 | - Default: `normal` 227 | - Acceptable-Values: String 228 | - Function: the css class name of the barrage message. 229 | 230 | #### time 231 | - Default: `10` 232 | - Acceptable-Values: Number 233 | - Function: How long does the barrage message show.(Seconds) 234 | 235 | #### type 236 | - Default: MESSAGE_TYPE.NORMAL 237 | - Acceptable-Values: Symbol 238 | - Function: The type of the barrage message. 239 | MESSAGE_TYPE.NORMAL for scroll from right to left. 240 | MESSAGE_TYPE.FROM_TOP for fixed on the top of the stage. 241 | 242 | #### extraWidth 243 | - Default: 0 244 | - Acceptable-Values: Number 245 | - Function: Add extra width to the barrage message. 246 | 247 | ## Events 248 | 249 | `barrage-list-empty` when the `barrageList` is empty will be called. 250 | 251 | ```html 252 | 258 | ``` 259 | 260 | ## Roadmap 261 | 262 | #### Version 0.0.1 263 | - Realized the basic functionality. 264 | 265 | #### Version 1.0.0 266 | - Performance improvement. 267 | 268 | #### Version 1.2.0 269 | - Code specification 270 | - Performance improvement. 271 | 272 | #### Version 2.1.2 273 | - Used ES6. 274 | - Performance improvement. 275 | 276 | #### Version 2.1.9 277 | - Added Throttling 278 | 279 | #### Version 3.1.0 280 | - Used Rollup to build. 281 | - Add `posRender` attribute for customizing the show up lane of baberrage messages. 282 | - Fixed issues. 283 | 284 | #### Version 3.2.0 285 | - Support customize baberrage. 286 | - Fixed issues. 287 | 288 | ## Future 289 | I am developing `Vue-Baberrage-Plus`, difference between `Vue-Barrage` and `Vue-Baberrage-Plus` is former will be used for a tool, and `Plus` is a baberrage system. 290 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/build/logo.png -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const config = require('../config') 4 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 5 | const packageConfig = require('../package.json') 6 | 7 | exports.assetsPath = function (_path) { 8 | const assetsSubDirectory = process.env.NODE_ENV === 'production' 9 | ? config.build.assetsSubDirectory 10 | : config.dev.assetsSubDirectory 11 | 12 | return path.posix.join(assetsSubDirectory, _path) 13 | } 14 | 15 | exports.cssLoaders = function (options) { 16 | options = options || {} 17 | 18 | const cssLoader = { 19 | loader: 'css-loader', 20 | options: { 21 | sourceMap: options.sourceMap 22 | } 23 | } 24 | 25 | const postcssLoader = { 26 | loader: 'postcss-loader', 27 | options: { 28 | sourceMap: options.sourceMap 29 | } 30 | } 31 | 32 | // generate loader string to be used with extract text plugin 33 | function generateLoaders (loader, loaderOptions) { 34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] 35 | 36 | if (loader) { 37 | loaders.push({ 38 | loader: loader + '-loader', 39 | options: Object.assign({}, loaderOptions, { 40 | sourceMap: options.sourceMap 41 | }) 42 | }) 43 | } 44 | 45 | // Extract CSS when that option is specified 46 | // (which is the case during production build) 47 | if (options.extract) { 48 | return ExtractTextPlugin.extract({ 49 | use: loaders, 50 | fallback: 'vue-style-loader' 51 | }) 52 | } else { 53 | return ['vue-style-loader'].concat(loaders) 54 | } 55 | } 56 | 57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 58 | return { 59 | css: generateLoaders(), 60 | postcss: generateLoaders(), 61 | less: generateLoaders('less'), 62 | stylus: generateLoaders('stylus'), 63 | styl: generateLoaders('stylus') 64 | } 65 | } 66 | 67 | // Generate loaders for standalone style files (outside of .vue) 68 | exports.styleLoaders = function (options) { 69 | const output = [] 70 | const loaders = exports.cssLoaders(options) 71 | 72 | for (const extension in loaders) { 73 | const loader = loaders[extension] 74 | output.push({ 75 | test: new RegExp('\\.' + extension + '$'), 76 | use: loader 77 | }) 78 | } 79 | 80 | return output 81 | } 82 | 83 | exports.createNotifierCallback = () => { 84 | const notifier = require('node-notifier') 85 | 86 | return (severity, errors) => { 87 | if (severity !== 'error') return 88 | 89 | const error = errors[0] 90 | const filename = error.file && error.file.split('!').pop() 91 | 92 | notifier.notify({ 93 | title: packageConfig.name, 94 | message: severity + ': ' + error.name, 95 | subtitle: filename || '', 96 | icon: path.join(__dirname, 'logo.png') 97 | }) 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const config = require('../config') 5 | const vueLoaderConfig = require('./vue-loader.conf') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | const createLintingRule = () => ({ 12 | test: /\.(js|vue)$/, 13 | loader: 'eslint-loader', 14 | enforce: 'pre', 15 | include: [resolve('src'), resolve('test')], 16 | options: { 17 | formatter: require('eslint-friendly-formatter'), 18 | emitWarning: !config.dev.showEslintErrorsInOverlay 19 | } 20 | }) 21 | 22 | module.exports = { 23 | context: path.resolve(__dirname, '../'), 24 | entry: { 25 | app: './src/main.js' 26 | }, 27 | output: { 28 | path: config.build.assetsRoot, 29 | filename: '[name].js', 30 | publicPath: process.env.NODE_ENV === 'production' 31 | ? config.build.assetsPublicPath 32 | : config.dev.assetsPublicPath 33 | }, 34 | resolve: { 35 | extensions: ['.js', '.vue', '.json'], 36 | alias: { 37 | 'vue$': 'vue/dist/vue.esm.js', 38 | '@': resolve('src'), 39 | } 40 | }, 41 | module: { 42 | rules: [ 43 | ...(config.dev.useEslint ? [createLintingRule()] : []), 44 | { 45 | test: /\.vue$/, 46 | loader: 'vue-loader', 47 | options: vueLoaderConfig 48 | }, 49 | { 50 | test: /\.js$/, 51 | loader: 'babel-loader', 52 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] 53 | }, 54 | { 55 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 56 | loader: 'url-loader', 57 | options: { 58 | limit: 10000, 59 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 60 | } 61 | }, 62 | { 63 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 64 | loader: 'url-loader', 65 | options: { 66 | limit: 10000, 67 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 68 | } 69 | }, 70 | { 71 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 72 | loader: 'url-loader', 73 | options: { 74 | limit: 10000, 75 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 76 | } 77 | } 78 | ] 79 | }, 80 | node: { 81 | // prevent webpack from injecting useless setImmediate polyfill because Vue 82 | // source contains it (although only uses it if it's native). 83 | setImmediate: false, 84 | // prevent webpack from injecting mocks to Node native modules 85 | // that does not make sense for the client 86 | dgram: 'empty', 87 | fs: 'empty', 88 | net: 'empty', 89 | tls: 'empty', 90 | child_process: 'empty' 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const webpack = require('webpack') 4 | const config = require('../config') 5 | const merge = require('webpack-merge') 6 | const path = require('path') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 11 | const portfinder = require('portfinder') 12 | 13 | const HOST = process.env.HOST 14 | const PORT = process.env.PORT && Number(process.env.PORT) 15 | 16 | const devWebpackConfig = merge(baseWebpackConfig, { 17 | mode: 'development', 18 | module: { 19 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) 20 | }, 21 | // cheap-module-eval-source-map is faster for development 22 | devtool: config.dev.devtool, 23 | 24 | // these devServer options should be customized in /config/index.js 25 | devServer: { 26 | clientLogLevel: 'warning', 27 | historyApiFallback: { 28 | rewrites: [ 29 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, 30 | ], 31 | }, 32 | hot: true, 33 | contentBase: false, // since we use CopyWebpackPlugin. 34 | compress: true, 35 | host: HOST || config.dev.host, 36 | port: PORT || config.dev.port, 37 | open: config.dev.autoOpenBrowser, 38 | overlay: config.dev.errorOverlay 39 | ? { warnings: false, errors: true } 40 | : false, 41 | publicPath: config.dev.assetsPublicPath, 42 | proxy: config.dev.proxyTable, 43 | quiet: true, // necessary for FriendlyErrorsPlugin 44 | watchOptions: { 45 | poll: config.dev.poll, 46 | } 47 | }, 48 | plugins: [ 49 | new webpack.DefinePlugin({ 50 | 'process.env': require('../config/dev.env') 51 | }), 52 | new webpack.HotModuleReplacementPlugin(), 53 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. 54 | new webpack.NoEmitOnErrorsPlugin(), 55 | // https://github.com/ampedandwired/html-webpack-plugin 56 | new HtmlWebpackPlugin({ 57 | filename: 'index.html', 58 | template: 'index.html', 59 | inject: true 60 | }), 61 | // copy custom static assets 62 | new CopyWebpackPlugin([ 63 | { 64 | from: path.resolve(__dirname, '../static'), 65 | to: config.dev.assetsSubDirectory, 66 | ignore: ['.*'] 67 | } 68 | ]) 69 | ] 70 | }) 71 | 72 | module.exports = new Promise((resolve, reject) => { 73 | portfinder.basePort = process.env.PORT || config.dev.port 74 | portfinder.getPort((err, port) => { 75 | if (err) { 76 | reject(err) 77 | } else { 78 | // publish the new Port, necessary for e2e tests 79 | process.env.PORT = port 80 | // add port to devServer config 81 | devWebpackConfig.devServer.port = port 82 | 83 | // Add FriendlyErrorsPlugin 84 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ 85 | compilationSuccessInfo: { 86 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], 87 | }, 88 | onErrors: config.dev.notifyOnErrors 89 | ? utils.createNotifierCallback() 90 | : undefined 91 | })) 92 | 93 | resolve(devWebpackConfig) 94 | } 95 | }) 96 | }) 97 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const webpack = require('webpack') 5 | const config = require('../config') 6 | const merge = require('webpack-merge') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 13 | 14 | const env = process.env.NODE_ENV === 'testing' 15 | ? require('../config/test.env') 16 | : require('../config/prod.env') 17 | 18 | const webpackConfig = merge(baseWebpackConfig, { 19 | mode: 'production', 20 | module: { 21 | rules: utils.styleLoaders({ 22 | sourceMap: config.build.productionSourceMap, 23 | extract: true, 24 | usePostCSS: true 25 | }) 26 | }, 27 | devtool: config.build.productionSourceMap ? config.build.devtool : false, 28 | output: { 29 | path: config.build.assetsRoot, 30 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 31 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 32 | }, 33 | plugins: [ 34 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 35 | new webpack.DefinePlugin({ 36 | 'process.env': env 37 | }), 38 | new UglifyJsPlugin({ 39 | uglifyOptions: { 40 | compress: { 41 | warnings: false 42 | } 43 | }, 44 | sourceMap: config.build.productionSourceMap, 45 | parallel: true 46 | }), 47 | // extract css into its own file 48 | new ExtractTextPlugin({ 49 | filename: utils.assetsPath('css/[name].[contenthash].css'), 50 | // Setting the following option to `false` will not extract CSS from codesplit chunks. 51 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. 52 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 53 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 54 | allChunks: true, 55 | }), 56 | // Compress extracted CSS. We are using this plugin so that possible 57 | // duplicated CSS from different components can be deduped. 58 | new OptimizeCSSPlugin({ 59 | cssProcessorOptions: config.build.productionSourceMap 60 | ? { safe: true, map: { inline: false } } 61 | : { safe: true } 62 | }), 63 | // generate dist index.html with correct asset hash for caching. 64 | // you can customize output by editing /index.html 65 | // see https://github.com/ampedandwired/html-webpack-plugin 66 | new HtmlWebpackPlugin({ 67 | filename: process.env.NODE_ENV === 'testing' 68 | ? 'index.html' 69 | : config.build.index, 70 | template: 'index.html', 71 | inject: true, 72 | minify: { 73 | removeComments: true, 74 | collapseWhitespace: true, 75 | removeAttributeQuotes: true 76 | // more options: 77 | // https://github.com/kangax/html-minifier#options-quick-reference 78 | }, 79 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 80 | chunksSortMode: 'dependency' 81 | }), 82 | // keep module.id stable when vendor modules does not change 83 | new webpack.HashedModuleIdsPlugin(), 84 | // enable scope hoisting 85 | new webpack.optimize.ModuleConcatenationPlugin(), 86 | // split vendor js into its own file 87 | new webpack.optimize.CommonsChunkPlugin({ 88 | name: 'vendor', 89 | minChunks (module) { 90 | // any required modules inside node_modules are extracted to vendor 91 | return ( 92 | module.resource && 93 | /\.js$/.test(module.resource) && 94 | module.resource.indexOf( 95 | path.join(__dirname, '../node_modules') 96 | ) === 0 97 | ) 98 | } 99 | }), 100 | // extract webpack runtime and module manifest to its own file in order to 101 | // prevent vendor hash from being updated whenever app bundle is updated 102 | new webpack.optimize.CommonsChunkPlugin({ 103 | name: 'manifest', 104 | minChunks: Infinity 105 | }), 106 | // This instance extracts shared chunks from code splitted chunks and bundles them 107 | // in a separate chunk, similar to the vendor chunk 108 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk 109 | new webpack.optimize.CommonsChunkPlugin({ 110 | name: 'app', 111 | async: 'vendor-async', 112 | children: true, 113 | minChunks: 3 114 | }), 115 | 116 | // copy custom static assets 117 | new CopyWebpackPlugin([ 118 | { 119 | from: path.resolve(__dirname, '../static'), 120 | to: config.build.assetsSubDirectory, 121 | ignore: ['.*'] 122 | } 123 | ]) 124 | ] 125 | }) 126 | 127 | if (config.build.productionGzip) { 128 | const CompressionWebpackPlugin = require('compression-webpack-plugin') 129 | 130 | webpackConfig.plugins.push( 131 | new CompressionWebpackPlugin({ 132 | asset: '[path].gz[query]', 133 | algorithm: 'gzip', 134 | test: new RegExp( 135 | '\\.(' + 136 | config.build.productionGzipExtensions.join('|') + 137 | ')$' 138 | ), 139 | threshold: 10240, 140 | minRatio: 0.8 141 | }) 142 | ) 143 | } 144 | 145 | if (config.build.bundleAnalyzerReport) { 146 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 147 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 148 | } 149 | 150 | module.exports = webpackConfig 151 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // Template version: 1.3.1 3 | // see http://vuejs-templates.github.io/webpack for documentation. 4 | 5 | const path = require('path') 6 | 7 | module.exports = { 8 | dev: { 9 | 10 | // Paths 11 | assetsSubDirectory: 'static', 12 | assetsPublicPath: '/', 13 | proxyTable: {}, 14 | 15 | // Various Dev Server settings 16 | host: 'localhost', // can be overwritten by process.env.HOST 17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined 18 | autoOpenBrowser: false, 19 | errorOverlay: true, 20 | notifyOnErrors: true, 21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 22 | 23 | // Use Eslint Loader? 24 | // If true, your code will be linted during bundling and 25 | // linting errors and warnings will be shown in the console. 26 | useEslint: true, 27 | // If true, eslint errors and warnings will also be shown in the error overlay 28 | // in the browser. 29 | showEslintErrorsInOverlay: false, 30 | 31 | /** 32 | * Source Maps 33 | */ 34 | 35 | // https://webpack.js.org/configuration/devtool/#development 36 | devtool: 'cheap-module-eval-source-map', 37 | 38 | // If you have problems debugging vue-files in devtools, 39 | // set this to false - it *may* help 40 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 41 | cacheBusting: true, 42 | 43 | cssSourceMap: true 44 | }, 45 | 46 | build: { 47 | // Template for index.html 48 | index: path.resolve(__dirname, '../dist/index.html'), 49 | 50 | // Paths 51 | assetsRoot: path.resolve(__dirname, '../dist'), 52 | assetsSubDirectory: 'static', 53 | assetsPublicPath: '/', 54 | 55 | /** 56 | * Source Maps 57 | */ 58 | 59 | productionSourceMap: true, 60 | // https://webpack.js.org/configuration/devtool/#production 61 | devtool: '#source-map', 62 | 63 | // Gzip off by default as many popular static hosts such as 64 | // Surge or Netlify already gzip all static assets for you. 65 | // Before setting to `true`, make sure to: 66 | // npm install --save-dev compression-webpack-plugin 67 | productionGzip: false, 68 | productionGzipExtensions: ['js', 'css'], 69 | 70 | // Run the build command with an extra argument to 71 | // View the bundle analyzer report after build finishes: 72 | // `npm run build --report` 73 | // Set to `true` or `false` to always turn it on or off 74 | bundleAnalyzerReport: process.env.npm_config_report 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /config/test.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const devEnv = require('./dev.env') 4 | 5 | module.exports = merge(devEnv, { 6 | NODE_ENV: '"testing"' 7 | }) 8 | -------------------------------------------------------------------------------- /dist/vue-baberrage.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("timers")):"function"==typeof define&&define.amd?define(["exports","timers"],t):t((e=e||self)["vue-baberrage"]={},e.timers)}(this,(function(e,t){"use strict";function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t>>((3&t)<<3)&255;return i}}})),s=[],o=0;o<256;++o)s[o]=(o+256).toString(16).substr(1);var u=function(e,t){var n=t||0,i=s;return[i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]]].join("")};var l=function(e,t,n){var i=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var a=(e=e||{}).random||(e.rng||r)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t)for(var s=0;s<16;++s)t[i+s]=a[s];return t||u(a)},d=/[A-Z]/g,h=/^ms-/,m={};function p(e){return"-"+e.toLowerCase()}function c(e){if(m.hasOwnProperty(e))return m[e];var t=e.replace(d,p);return m[e]=h.test(t)?"-"+t:t}var f={name:"vue-baberrage-message",props:{item:{type:Object,default:function(){return{}}}},data:function(){return{isCustom:!1}},mounted:function(){this.isCustom=!!this.$scopedSlots.default}};function b(e,t,n,i,a,r,s,o,u,l){"boolean"!=typeof s&&(u=o,o=s,s=!1);const d="function"==typeof n?n.options:n;let h;if(e&&e.render&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0,a&&(d.functional=!0)),i&&(d._scopeId=i),r?(h=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,u(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},d._ssrRegister=h):t&&(h=s?function(e){t.call(this,l(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,o(e))}),h)if(d.functional){const e=d.render;d.render=function(t,n){return h.call(n),e(t,n)}}else{const e=d.beforeCreate;d.beforeCreate=e?[].concat(e,h):[h]}return n}const g="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function A(e){return(e,t)=>function(e,t){const n=g?t.media||"default":e,i=y[n]||(y[n]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);let n=t.source;if(t.map&&(n+="\n/*# sourceURL="+t.map.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===v&&(v=document.head||document.getElementsByTagName("head")[0]),v.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(n),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{const e=i.ids.size-1,t=document.createTextNode(n),a=i.element.childNodes;a[e]&&i.element.removeChild(a[e]),a.length?i.element.insertBefore(t,a[e]):i.element.appendChild(t)}}}(e,t)}let v;const y={};const x=f;var w=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"baberrage-item",class:e.item.barrageStyle,style:e.item.style},[e.isCustom?[e._t("default")]:n("div",{staticClass:"normal"},[n("div",{staticClass:"baberrage-avatar"},[n("img",{attrs:{src:e.item.avatar}})]),e._v(" "),n("div",{staticClass:"baberrage-msg"},[e._v(e._s(e.item.msg))])])],2)};w._withStripped=!0;const C=b({render:w,staticRenderFns:[]},(function(e){e&&e("data-v-600778c7_0",{source:".baberrage-item {\n position: absolute;\n width: auto;\n display: block;\n color: #000;\n transform: translateX(500%);\n padding: 5px 0 5px 0;\n box-sizing: border-box;\n text-align: left;\n white-space: nowrap;\n}\n.baberrage-item .normal {\n display: flex;\n box-sizing: border-box;\n padding: 5px;\n}\n.baberrage-item .normal .baberrage-avatar {\n width: 30px;\n height: 30px;\n border-radius: 50px;\n overflow: hidden;\n}\n.baberrage-item .normal .baberrage-avatar img {\n width: 30px;\n}\n.baberrage-item .baberrage-msg {\n line-height: 30px;\n padding-left: 8px;\n white-space: nowrap;\n}\n.baberrage-item .normal {\n background: rgba(0, 0, 0, 0.7);\n border-radius: 100px;\n color: #FFF;\n}\n",map:{version:3,sources:["index.vue","/Users/chenhao/Documents/work/vue-baberrage/src/lib/components/vue-baberrage-msg/index.vue"],names:[],mappings:"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,cAAc;EACd,WAAW;EACX,2BAA2B;EAC3B,oBAAoB;EACpB,sBAAsB;EACtB,gBAAgB;EAChB,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,gBAAgB;AAClB;AACA;EACE,WAAW;AACb;AACA;EACE,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;AACrB;AACA;EACE,8BAA8B;ECChC,oBAAA;EACA,WAAA;AACA",file:"index.vue",sourcesContent:[".baberrage-item {\n position: absolute;\n width: auto;\n display: block;\n color: #000;\n transform: translateX(500%);\n padding: 5px 0 5px 0;\n box-sizing: border-box;\n text-align: left;\n white-space: nowrap;\n}\n.baberrage-item .normal {\n display: flex;\n box-sizing: border-box;\n padding: 5px;\n}\n.baberrage-item .normal .baberrage-avatar {\n width: 30px;\n height: 30px;\n border-radius: 50px;\n overflow: hidden;\n}\n.baberrage-item .normal .baberrage-avatar img {\n width: 30px;\n}\n.baberrage-item .baberrage-msg {\n line-height: 30px;\n padding-left: 8px;\n white-space: nowrap;\n}\n.baberrage-item .normal {\n background: rgba(0, 0, 0, 0.7);\n border-radius: 100px;\n color: #FFF;\n}\n",'\n -------------------------------------------------------------------------------- /docs/js/about.a807c8cf.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{f820:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"about"},[n("h1",[t._v("This is an about page")])])}],u=n("2877"),c={},i=Object(u["a"])(c,a,s,!1,null,null,null);e["default"]=i.exports}}]); 2 | //# sourceMappingURL=about.a807c8cf.js.map -------------------------------------------------------------------------------- /docs/js/about.a807c8cf.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/About.vue?4ba7","webpack:///./src/views/About.vue"],"names":["render","_vm","this","_h","$createElement","_self","_c","_m","staticRenderFns","staticClass","_v","script","component","Object","componentNormalizer","__webpack_exports__"],"mappings":"8GAAA,IAAAA,EAAA,WAA0B,IAAAC,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BH,EAAAI,MAAAC,GAAwB,OAAAL,EAAAM,GAAA,IACzFC,EAAA,YAAoC,IAAAP,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BE,EAAAL,EAAAI,MAAAC,IAAAH,EAAwB,OAAAG,EAAA,OAAiBG,YAAA,SAAoB,CAAAH,EAAA,MAAAL,EAAAS,GAAA,2CCAxIC,EAAA,GAKAC,EAAgBC,OAAAC,EAAA,KAAAD,CAChBF,EACEX,EACAQ,GACF,EACA,KACA,KACA,MAIeO,EAAA,WAAAH","file":"js/about.a807c8cf.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"about\"},[_c('h1',[_vm._v(\"This is an about page\")])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=1ae8a7be&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/js/app.162a2c5e.js: -------------------------------------------------------------------------------- 1 | (function(e){function t(t){for(var r,n,i=t[0],u=t[1],l=t[2],c=0,v=[];c=a?Object(v["clearInterval"])(r):e.addMessage(g[t++])},1e3)},methods:Object(i["a"])({},Object(u["b"])("baberrage",["addMessage"]),{removeList:function(){this.barrageList=[]},addToList:function(){this.addMessage({id:++this.currentId,avatar:"https://github.com/superhos/vue-baberrage/blob/master/static/avatar.jpg?raw=true",msg:this.msg,time:15,type:c["MESSAGE_TYPE"].NORMAL})},changeLang:function(e){this.$i18n.locale=e}})},m=p,b=(a("034f"),a("2877")),h=Object(b["a"])(m,o,n,!1,null,null,null),d=h.exports,f=a("8c4f"),_=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"home"},[r("img",{attrs:{alt:"Vue logo",src:a("cf05")}}),r("HelloWorld",{attrs:{msg:"Welcome to Your Vue.js App"}})],1)},j=[],w=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"hello"},[a("h1",[e._v(e._s(e.msg))]),e._m(0),a("h3",[e._v("Installed CLI Plugins")]),e._m(1),a("h3",[e._v("Essential Links")]),e._m(2),a("h3",[e._v("Ecosystem")]),e._m(3)])},C=[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("p",[e._v("\n For a guide and recipes on how to configure / customize this project,"),a("br"),e._v("\n check out the\n "),a("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-cli documentation")]),e._v(".\n ")])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[e._v("babel")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint",target:"_blank",rel:"noopener"}},[e._v("eslint")])])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Core Docs")])]),a("li",[a("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Forum")])]),a("li",[a("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Community Chat")])]),a("li",[a("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[e._v("Twitter")])]),a("li",[a("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("News")])])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-router")])]),a("li",[a("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vuex")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[e._v("vue-devtools")])]),a("li",[a("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-loader")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[e._v("awesome-vue")])])])}],y={name:"HelloWorld",props:{msg:String}},k=y,L=(a("a5e2"),Object(b["a"])(k,w,C,!1,null,"536251f0",null)),x=L.exports,E={name:"home",components:{HelloWorld:x}},O=E,$=Object(b["a"])(O,_,j,!1,null,null,null),S=$.exports;r["a"].use(f["a"]);var P=new f["a"]({mode:"history",base:"/vue-baberrage/",routes:[{path:"/",name:"home",component:S},{path:"/about",name:"about",component:function(){return a.e("about").then(a.bind(null,"f820"))}}]}),T={messageList:[]},M={messageList:function(e){return e.messageList}},V={addMessage:function(e,t){var a=e.commit;a("pushMessageToList",{message:t})}},I={pushMessageToList:function(e,t){var a=t.message;e.messageList.push(a)}},A={namespaced:!0,state:T,getters:M,actions:V,mutations:I};r["a"].use(u["a"]);var F=new u["a"].Store({modules:{baberrage:A}}),H={message:{introduce:"A Simple Vue Plugin for Baberrage.",start:"GET STARTED",doc:"DOC",title1:"Easy",content1:"Easy to use. Only a few words of code.",title2:"High Performance",content2:"100 messages also can keep on 60FPS.",title3:"Independent",content3:"You can manage the messages by yourself via Vuex"}},U={message:{introduce:"一个简单的Vue弹幕插件",start:"开始使用",doc:"查看文档",title1:"容易使用",content1:"只需几行代码,简单配置即可使用。",title2:"高性能",content2:"过百条同屏弹幕依然能保持60FPS.",title3:"独立",content3:"弹幕数据部分交还给使用者自己管理,可以配合Vuex使用"}},W={en:H,ch:U};r["a"].use(c["vueBaberrage"]),r["a"].use(s["a"]),r["a"].config.productionTip=!1;var G=new s["a"]({locale:"ch",messages:W});new r["a"]({router:P,store:F,i18n:G,render:function(e){return e(d)}}).$mount("#app")},"64a9":function(e,t,a){},a5e2:function(e,t,a){"use strict";var r=a("fc3d"),s=a.n(r);s.a},cf05:function(e,t,a){e.exports=a.p+"img/logo.e113043f.png"},fc3d:function(e,t,a){}}); 2 | //# sourceMappingURL=app.162a2c5e.js.map -------------------------------------------------------------------------------- /docs/js/app.8763720e.js: -------------------------------------------------------------------------------- 1 | (function(e){function t(t){for(var s,o,i=t[0],l=t[1],c=t[2],u=0,g=[];u=a?Object(g["clearInterval"])(s):e.addMessage(m[t++])},1e3)},methods:Object(i["a"])({},Object(l["b"])("baberrage",["addMessage"]),{removeList:function(){this.barrageList=[]},addToList:function(){this.addMessage({id:++this.currentId,avatar:"https://s2.ax1x.com/2020/02/17/3PmEyd.md.png",msg:this.msg,time:5,type:u["MESSAGE_TYPE"].NORMAL})},changeLang:function(e){this.$i18n.locale=e}})},p=d,v=(a("034f"),a("2877")),h=Object(v["a"])(p,n,o,!1,null,null,null),f=h.exports,b=a("8c4f"),_=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"home"},[s("img",{attrs:{alt:"Vue logo",src:a("cf05")}}),s("HelloWorld",{attrs:{msg:"Welcome to Your Vue.js App"}})],1)},x=[],y=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"hello"},[a("h1",[e._v(e._s(e.msg))]),e._m(0),a("h3",[e._v("Installed CLI Plugins")]),e._m(1),a("h3",[e._v("Essential Links")]),e._m(2),a("h3",[e._v("Ecosystem")]),e._m(3)])},C=[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("p",[e._v("\n For a guide and recipes on how to configure / customize this project,"),a("br"),e._v("\n check out the\n "),a("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-cli documentation")]),e._v(".\n ")])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[e._v("babel")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint",target:"_blank",rel:"noopener"}},[e._v("eslint")])])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Core Docs")])]),a("li",[a("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Forum")])]),a("li",[a("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Community Chat")])]),a("li",[a("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[e._v("Twitter")])]),a("li",[a("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("News")])])])},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ul",[a("li",[a("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-router")])]),a("li",[a("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vuex")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[e._v("vue-devtools")])]),a("li",[a("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-loader")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[e._v("awesome-vue")])])])}],j={name:"HelloWorld",props:{msg:String}},E=j,w=(a("a5e2"),Object(v["a"])(E,y,C,!1,null,"536251f0",null)),P=w.exports,k={name:"home",components:{HelloWorld:P}},L=k,O=Object(v["a"])(L,_,x,!1,null,null,null),$=O.exports;s["a"].use(b["a"]);var S=new b["a"]({mode:"history",base:"/vue-baberrage/",routes:[{path:"/",name:"home",component:$},{path:"/about",name:"about",component:function(){return a.e("about").then(a.bind(null,"f820"))}}]}),T={messageList:[]},M={messageList:function(e){return e.messageList}},V={addMessage:function(e,t){var a=e.commit;a("pushMessageToList",{message:t})}},I={pushMessageToList:function(e,t){var a=t.message;e.messageList.push(a)}},A={namespaced:!0,state:T,getters:M,actions:V,mutations:I};s["a"].use(l["a"]);var F=new l["a"].Store({modules:{baberrage:A}}),H={message:{introduce:"A Simple Vue Plugin for Baberrage.",start:"GET STARTED",doc:"DOC",title1:"Easy",content1:"Easy to use. Only a few words of code.",title2:"High Performance",content2:"100 messages also can keep on 60FPS.",title3:"Independent",content3:"You can manage the messages by yourself via Vuex"}},U={message:{introduce:"一个简单的Vue弹幕插件",start:"开始使用",doc:"查看文档",title1:"容易使用",content1:"只需几行代码,简单配置即可使用。",title2:"高性能",content2:"过百条同屏弹幕依然能保持60FPS.",title3:"独立",content3:"弹幕数据部分交还给使用者自己管理,可以配合Vuex使用"}},W={en:H,ch:U};s["a"].use(u["vueBaberrage"]),s["a"].use(r["a"]),s["a"].config.productionTip=!1;var G=new r["a"]({locale:"ch",messages:W});new s["a"]({router:S,store:F,i18n:G,render:function(e){return e(f)}}).$mount("#app")},"64a9":function(e,t,a){},a5e2:function(e,t,a){"use strict";var s=a("fc3d"),r=a.n(s);r.a},cf05:function(e,t,a){e.exports=a.p+"img/logo.e113043f.png"},fc3d:function(e,t,a){}}); 2 | //# sourceMappingURL=app.8763720e.js.map -------------------------------------------------------------------------------- /docs/js/app.8763720e.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?4241","webpack:///./src/App.vue?fb6b","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue?bff9","webpack:///./src/views/Home.vue?917b","webpack:///./src/components/HelloWorld.vue?ee73","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?4efa","webpack:///./src/components/HelloWorld.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///./src/views/Home.vue","webpack:///./src/router.js","webpack:///./src/store/modules/baberrage.js","webpack:///./src/store/index.js","webpack:///./src/languages/en.js","webpack:///./src/languages/ch.js","webpack:///./src/languages/index.js","webpack:///./src/main.js","webpack:///./src/components/HelloWorld.vue?792f","webpack:///./src/assets/logo.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","jsonpScriptSrc","p","about","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","error","Error","request","undefined","setTimeout","head","appendChild","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","Appvue_type_template_id_136f7aba_render","_vm","this","_h","$createElement","_c","_self","attrs","id","staticClass","on","click","$event","changeLang","_v","repoUrl","catColor","bgColor","_m","isShow","barrageIsShow","barrageList","messageList","loop","barrageLoop","maxWordCount","directives","rawName","expression","staticStyle","float","domProps","input","composing","msg","addToList","_s","$t","alt","href","staticRenderFns","width","Appvue_type_script_lang_js_","components","VueGithubCorners","vue2_github_corners","computed","vuex_esm","state","baberrage","currentId","mounted","_this","amount","paper","intervalId","main","addMessage","methods","objectSpread","removeList","avatar","time","vue_baberrage","NORMAL","lang","$i18n","locale","src_Appvue_type_script_lang_js_","component","componentNormalizer","App","Homevue_type_template_id_59ba5f92_render","Homevue_type_template_id_59ba5f92_staticRenderFns","HelloWorldvue_type_template_id_536251f0_scoped_true_render","HelloWorldvue_type_template_id_536251f0_scoped_true_staticRenderFns","rel","HelloWorldvue_type_script_lang_js_","props","String","components_HelloWorldvue_type_script_lang_js_","HelloWorld_component","HelloWorld","Homevue_type_script_lang_js_","views_Homevue_type_script_lang_js_","Home_component","Home","Vue","use","Router","router","base","process","routes","path","then","getters","actions","_ref","message","commit","mutations","pushMessageToList","_ref2","namespaced","Vuex","store","Store","en","introduce","start","doc","title1","content1","title2","content2","title3","content3","ch","languages","vueBaberrage","VueI18n","config","productionTip","i18n","messages","render","h","$mount","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_HelloWorld_vue_vue_type_style_index_0_id_536251f0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_HelloWorld_vue_vue_type_style_index_0_id_536251f0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"js/app.8763720e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"a807c8cf\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/vue-baberrage/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"stage\"},[_c('div',{staticClass:\"lang\"},[_c('span',{on:{\"click\":function($event){_vm.changeLang('ch')}}},[_vm._v(\"中\")]),_c('span',{on:{\"click\":function($event){_vm.changeLang('en')}}},[_vm._v(\"English\")])]),_c('VueGithubCorners',{attrs:{\"repoUrl\":_vm.repoUrl,\"catColor\":_vm.catColor,\"bgColor\":_vm.bgColor}}),_vm._m(0),_c('div',{staticClass:\"slide\"}),_c('div',{staticClass:\"slide slide-2\"}),_c('div',{staticClass:\"slide slide-3\"}),_c('vue-baberrage',{attrs:{\"isShow\":_vm.barrageIsShow,\"barrageList\":_vm.messageList,\"loop\":_vm.barrageLoop,\"maxWordCount\":60}}),_c('div',{staticClass:\"demo-control\"},[_c('div',{staticClass:\"inside\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.msg),expression:\"msg\"}],staticStyle:{\"float\":\"left\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.msg)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.msg=$event.target.value}}}),_c('button',{staticStyle:{\"float\":\"left\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.addToList}},[_vm._v(\"LAUNCH\")])])])],1),_c('div',{staticClass:\"content\"},[_c('h1',[_vm._v(_vm._s(_vm.$t(\"message.introduce\")))]),_c('img',{attrs:{\"alt\":\"\",\"src\":\"https://img.shields.io/badge/vueBaberrage.js-3.2.4-green.svg\"}}),_c('img',{attrs:{\"alt\":\"\",\"src\":\"https://img.shields.io/badge/vue.js-2.5.22-brightgreen.svg\"}}),_c('img',{attrs:{\"alt\":\"\",\"src\":\"https://img.shields.io/badge/minified size-15kB-blue.svg\"}}),_c('div',{staticClass:\"button-group\"},[_c('a',{attrs:{\"href\":_vm.repoUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"message.start\")))]),_c('a',{staticClass:\"fan\",attrs:{\"href\":_vm.repoUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"message.doc\")))])]),_c('div',{staticClass:\"box-container\"},[_c('div',{staticClass:\"box\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"message.title1\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"message.content1\")))])]),_c('div',{staticClass:\"box\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"message.title2\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"message.content2\")))])]),_c('div',{staticClass:\"box\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"message.title3\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"message.content3\")))])])])]),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"width\":\"230\",\"alt\":\"Vue-baberrage logo\",\"src\":require(\"./assets/logo.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer\"},[_c('div',[_vm._v(\"\\n MIT Licensed | Copyright @ 2019 SevensChan (\"),_c('a',{attrs:{\"href\":\"https://www.chenhaotaishuaile.com\"}},[_vm._v(\"Homepage\")]),_vm._v(\")\\n \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=136f7aba&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"},[_c('img',{attrs:{\"alt\":\"Vue logo\",\"src\":require(\"../assets/logo.png\")}}),_c('HelloWorld',{attrs:{\"msg\":\"Welcome to Your Vue.js App\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hello\"},[_c('h1',[_vm._v(_vm._s(_vm.msg))]),_vm._m(0),_c('h3',[_vm._v(\"Installed CLI Plugins\")]),_vm._m(1),_c('h3',[_vm._v(\"Essential Links\")]),_vm._m(2),_c('h3',[_vm._v(\"Ecosystem\")]),_vm._m(3)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"\\n For a guide and recipes on how to configure / customize this project,\"),_c('br'),_vm._v(\"\\n check out the\\n \"),_c('a',{attrs:{\"href\":\"https://cli.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-cli documentation\")]),_vm._v(\".\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"babel\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"eslint\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Core Docs\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://forum.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Forum\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://chat.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Community Chat\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://twitter.com/vuejs\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Twitter\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://news.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"News\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://router.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-router\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://vuex.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vuex\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-devtools#vue-devtools\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-devtools\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://vue-loader.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-loader\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/awesome-vue\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"awesome-vue\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=536251f0&scoped=true&\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HelloWorld.vue?vue&type=style&index=0&id=536251f0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"536251f0\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=59ba5f92&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Router from 'vue-router'\nimport Home from './views/Home.vue'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/',\n name: 'home',\n component: Home\n },\n {\n path: '/about',\n name: 'about',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ './views/About.vue')\n }\n ]\n})\n","// initial state\n// shape: [{ id, quantity }]\nconst state = {\n messageList: []\n}\n \n// getters\nconst getters = {\n messageList: (state) => {\n return state.messageList\n }\n}\n \n// actions\nconst actions = {\n addMessage ({ commit }, message) {\n commit('pushMessageToList', { message })\n }\n}\n \n// mutations\nconst mutations = {\n pushMessageToList (state, { message }) {\n state.messageList.push(message)\n }\n}\n \nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport baberrage from './modules/baberrage'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n modules: {\n baberrage\n }\n})","export default {\n message: {\n introduce: 'A Simple Vue Plugin for Baberrage.',\n start: 'GET STARTED',\n doc: 'DOC',\n title1: 'Easy',\n content1: 'Easy to use. Only a few words of code.',\n title2: 'High Performance',\n content2: '100 messages also can keep on 60FPS.',\n title3: 'Independent',\n content3: 'You can manage the messages by yourself via Vuex'\n }\n}","export default {\n message: {\n introduce: '一个简单的Vue弹幕插件',\n start: '开始使用',\n doc: '查看文档',\n title1: '容易使用',\n content1: '只需几行代码,简单配置即可使用。',\n title2: '高性能',\n content2: '过百条同屏弹幕依然能保持60FPS.',\n title3: '独立',\n content3: '弹幕数据部分交还给使用者自己管理,可以配合Vuex使用'\n }\n}","import en from './en.js'\nimport ch from './ch.js'\nexport default {\n en,\n ch\n}","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\nimport { vueBaberrage } from 'vue-baberrage'\n// import { vueBaberrage } from './lib/vue-baberrage'\nimport messages from './languages'\n\nVue.use(vueBaberrage)\nVue.use(VueI18n)\nVue.config.productionTip = false\n\nconst i18n = new VueI18n({\n locale: 'ch', // set locale\n messages, // set locale messages\n})\n\nnew Vue({\n router,\n store,\n i18n,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=style&index=0&id=536251f0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=style&index=0&id=536251f0&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/logo.e113043f.png\";"],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/js/app.c72daff4.js: -------------------------------------------------------------------------------- 1 | (function(t){function e(e){for(var r,n,i=e[0],u=e[1],l=e[2],c=0,v=[];c=a?Object(c["clearInterval"])(r):t.barrageList.push(l[e++])},1e3)},methods:{removeList:function(){this.barrageList=[]},addToList:function(){this.barrageList.push({id:++this.currentId,avatar:"https://github.com/superhos/vue-baberrage/blob/master/static/avatar.jpg?raw=true",msg:this.msg,time:15,type:u["MESSAGE_TYPE"].NORMAL})},changeLang:function(t){this.$i18n.locale=t}}},v=g,p=(a("034f"),a("2877")),b=Object(p["a"])(v,o,n,!1,null,null,null),h=b.exports,m=a("8c4f"),d=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"home"},[r("img",{attrs:{alt:"Vue logo",src:a("cf05")}}),r("HelloWorld",{attrs:{msg:"Welcome to Your Vue.js App"}})],1)},f=[],_=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"hello"},[a("h1",[t._v(t._s(t.msg))]),t._m(0),a("h3",[t._v("Installed CLI Plugins")]),t._m(1),a("h3",[t._v("Essential Links")]),t._m(2),a("h3",[t._v("Ecosystem")]),t._m(3)])},w=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("p",[t._v("\n For a guide and recipes on how to configure / customize this project,"),a("br"),t._v("\n check out the\n "),a("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vue-cli documentation")]),t._v(".\n ")])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[t._v("babel")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint",target:"_blank",rel:"noopener"}},[t._v("eslint")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ul",[a("li",[a("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[t._v("Core Docs")])]),a("li",[a("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("Forum")])]),a("li",[a("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("Community Chat")])]),a("li",[a("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[t._v("Twitter")])]),a("li",[a("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("News")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ul",[a("li",[a("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vue-router")])]),a("li",[a("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vuex")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[t._v("vue-devtools")])]),a("li",[a("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vue-loader")])]),a("li",[a("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[t._v("awesome-vue")])])])}],j={name:"HelloWorld",props:{msg:String}},C=j,y=(a("a5e2"),Object(p["a"])(C,_,w,!1,null,"536251f0",null)),k=y.exports,x={name:"home",components:{HelloWorld:k}},E=x,L=Object(p["a"])(E,d,f,!1,null,null,null),$=L.exports;r["a"].use(m["a"]);var S=new m["a"]({mode:"history",base:"/vue-baberrage/",routes:[{path:"/",name:"home",component:$},{path:"/about",name:"about",component:function(){return a.e("about").then(a.bind(null,"f820"))}}]}),O=a("2f62");r["a"].use(O["a"]);var P=new O["a"].Store({state:{},mutations:{},actions:{}}),T={message:{introduce:"A Simple Vue Plugin for Baberrage.",start:"GET STARTED",doc:"DOC",title1:"Easy",content1:"Easy to use. Only a few words of code.",title2:"High Performance",content2:"100 messages also can keep on 60FPS.",title3:"Independent",content3:"You can manage the messages by yourself via Vuex"}},V={message:{introduce:"一个简单的Vue弹幕插件",start:"开始使用",doc:"查看文档",title1:"容易使用",content1:"只需几行代码,简单配置即可使用。",title2:"高性能",content2:"过百条同屏弹幕依然能保持60FPS.",title3:"独立",content3:"弹幕数据部分交还给使用者自己管理,可以配合Vuex使用"}},I={en:T,ch:V};r["a"].use(u["vueBaberrage"]),r["a"].use(s["a"]),r["a"].config.productionTip=!1;var A=new s["a"]({locale:"ch",messages:I});new r["a"]({router:S,store:P,i18n:A,render:function(t){return t(h)}}).$mount("#app")},"64a9":function(t,e,a){},a5e2:function(t,e,a){"use strict";var r=a("fc3d"),s=a.n(r);s.a},cf05:function(t,e,a){t.exports=a.p+"img/logo.e113043f.png"},fc3d:function(t,e,a){}}); 2 | //# sourceMappingURL=app.c72daff4.js.map -------------------------------------------------------------------------------- /docs/js/app.c72daff4.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?4241","webpack:///./src/App.vue?2311","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue?bff9","webpack:///./src/views/Home.vue?917b","webpack:///./src/components/HelloWorld.vue?ee73","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?4efa","webpack:///./src/components/HelloWorld.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///./src/views/Home.vue","webpack:///./src/router.js","webpack:///./src/store.js","webpack:///./src/languages/en.js","webpack:///./src/languages/ch.js","webpack:///./src/languages/index.js","webpack:///./src/main.js","webpack:///./src/components/HelloWorld.vue?792f","webpack:///./src/assets/logo.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","jsonpScriptSrc","p","about","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","error","Error","request","undefined","setTimeout","head","appendChild","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","Appvue_type_template_id_21721c29_render","_vm","this","_h","$createElement","_c","_self","attrs","id","staticClass","on","click","$event","changeLang","_v","repoUrl","catColor","bgColor","_m","isShow","barrageIsShow","barrageList","loop","barrageLoop","maxWordCount","directives","rawName","expression","staticStyle","float","domProps","input","composing","msg","addToList","_s","$t","alt","href","staticRenderFns","width","Appvue_type_script_lang_js_","components","VueGithubCorners","vue2_github_corners","currentId","mounted","_this","amount","paper","intervalId","main","methods","removeList","avatar","time","vue_baberrage","NORMAL","lang","$i18n","locale","src_Appvue_type_script_lang_js_","component","componentNormalizer","App","Homevue_type_template_id_59ba5f92_render","Homevue_type_template_id_59ba5f92_staticRenderFns","HelloWorldvue_type_template_id_536251f0_scoped_true_render","HelloWorldvue_type_template_id_536251f0_scoped_true_staticRenderFns","rel","HelloWorldvue_type_script_lang_js_","props","String","components_HelloWorldvue_type_script_lang_js_","HelloWorld_component","HelloWorld","Homevue_type_script_lang_js_","views_Homevue_type_script_lang_js_","Home_component","Home","Vue","use","Router","router","base","process","routes","path","then","Vuex","store","Store","state","mutations","actions","en","message","introduce","start","doc","title1","content1","title2","content2","title3","content3","ch","languages","vueBaberrage","VueI18n","config","productionTip","i18n","messages","render","h","$mount","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_HelloWorld_vue_vue_type_style_index_0_id_536251f0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_HelloWorld_vue_vue_type_style_index_0_id_536251f0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"js/app.c72daff4.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"a807c8cf\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/vue-baberrage/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"stage\"},[_c('div',{staticClass:\"lang\"},[_c('span',{on:{\"click\":function($event){_vm.changeLang('ch')}}},[_vm._v(\"中\")]),_c('span',{on:{\"click\":function($event){_vm.changeLang('en')}}},[_vm._v(\"English\")])]),_c('VueGithubCorners',{attrs:{\"repoUrl\":_vm.repoUrl,\"catColor\":_vm.catColor,\"bgColor\":_vm.bgColor}}),_vm._m(0),_c('div',{staticClass:\"slide\"}),_c('div',{staticClass:\"slide slide-2\"}),_c('div',{staticClass:\"slide slide-3\"}),_c('vue-baberrage',{attrs:{\"isShow\":_vm.barrageIsShow,\"barrageList\":_vm.barrageList,\"loop\":_vm.barrageLoop,\"maxWordCount\":60}}),_c('div',{staticClass:\"demo-control\"},[_c('div',{staticClass:\"inside\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.msg),expression:\"msg\"}],staticStyle:{\"float\":\"left\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.msg)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.msg=$event.target.value}}}),_c('button',{staticStyle:{\"float\":\"left\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.addToList}},[_vm._v(\"LAUNCH\")])])])],1),_c('div',{staticClass:\"content\"},[_c('h1',[_vm._v(_vm._s(_vm.$t(\"message.introduce\")))]),_c('img',{attrs:{\"alt\":\"\",\"src\":\"https://img.shields.io/badge/vueBaberrage.js-2.1.2-green.svg\"}}),_c('img',{attrs:{\"alt\":\"\",\"src\":\"https://img.shields.io/badge/vue.js-2.5.22-brightgreen.svg\"}}),_c('img',{attrs:{\"alt\":\"\",\"src\":\"https://img.shields.io/badge/minified size-20kB-blue.svg\"}}),_c('div',{staticClass:\"button-group\"},[_c('a',{attrs:{\"href\":_vm.repoUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"message.start\")))]),_c('a',{staticClass:\"fan\",attrs:{\"href\":_vm.repoUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"message.doc\")))])]),_c('div',{staticClass:\"box-container\"},[_c('div',{staticClass:\"box\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"message.title1\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"message.content1\")))])]),_c('div',{staticClass:\"box\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"message.title2\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"message.content2\")))])]),_c('div',{staticClass:\"box\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"message.title3\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"message.content3\")))])])])]),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"width\":\"230\",\"alt\":\"Vue-baberrage logo\",\"src\":require(\"./assets/logo.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer\"},[_c('div',[_vm._v(\"\\n MIT Licensed | Copyright @ 2019 SevensChan (\"),_c('a',{attrs:{\"href\":\"https://www.chenhaotaishuaile.com\"}},[_vm._v(\"Homepage\")]),_vm._v(\")\\n \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=21721c29&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"},[_c('img',{attrs:{\"alt\":\"Vue logo\",\"src\":require(\"../assets/logo.png\")}}),_c('HelloWorld',{attrs:{\"msg\":\"Welcome to Your Vue.js App\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hello\"},[_c('h1',[_vm._v(_vm._s(_vm.msg))]),_vm._m(0),_c('h3',[_vm._v(\"Installed CLI Plugins\")]),_vm._m(1),_c('h3',[_vm._v(\"Essential Links\")]),_vm._m(2),_c('h3',[_vm._v(\"Ecosystem\")]),_vm._m(3)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"\\n For a guide and recipes on how to configure / customize this project,\"),_c('br'),_vm._v(\"\\n check out the\\n \"),_c('a',{attrs:{\"href\":\"https://cli.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-cli documentation\")]),_vm._v(\".\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"babel\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"eslint\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Core Docs\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://forum.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Forum\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://chat.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Community Chat\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://twitter.com/vuejs\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Twitter\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://news.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"News\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://router.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-router\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://vuex.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vuex\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-devtools#vue-devtools\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-devtools\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://vue-loader.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-loader\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/awesome-vue\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"awesome-vue\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=536251f0&scoped=true&\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HelloWorld.vue?vue&type=style&index=0&id=536251f0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"536251f0\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=59ba5f92&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Router from 'vue-router'\nimport Home from './views/Home.vue'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/',\n name: 'home',\n component: Home\n },\n {\n path: '/about',\n name: 'about',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ './views/About.vue')\n }\n ]\n})\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n\n },\n mutations: {\n\n },\n actions: {\n\n }\n})\n","export default {\n message: {\n introduce: 'A Simple Vue Plugin for Baberrage.',\n start: 'GET STARTED',\n doc: 'DOC',\n title1: 'Easy',\n content1: 'Easy to use. Only a few words of code.',\n title2: 'High Performance',\n content2: '100 messages also can keep on 60FPS.',\n title3: 'Independent',\n content3: 'You can manage the messages by yourself via Vuex'\n }\n}","export default {\n message: {\n introduce: '一个简单的Vue弹幕插件',\n start: '开始使用',\n doc: '查看文档',\n title1: '容易使用',\n content1: '只需几行代码,简单配置即可使用。',\n title2: '高性能',\n content2: '过百条同屏弹幕依然能保持60FPS.',\n title3: '独立',\n content3: '弹幕数据部分交还给使用者自己管理,可以配合Vuex使用'\n }\n}","import en from './en.js'\nimport ch from './ch.js'\nexport default {\n en,\n ch\n}","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\nimport { vueBaberrage } from 'vue-baberrage'\nimport messages from './languages'\n\nVue.use(vueBaberrage)\nVue.use(VueI18n)\nVue.config.productionTip = false\n\nconst i18n = new VueI18n({\n locale: 'ch', // set locale\n messages, // set locale messages\n})\n\nnew Vue({\n router,\n store,\n i18n,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=style&index=0&id=536251f0&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=style&index=0&id=536251f0&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/logo.e113043f.png\";"],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/docs/logo.png -------------------------------------------------------------------------------- /docs/zh/README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 |
4 | VueBaberrage 5 |
6 |
7 |

8 | 9 |

基于Vue.js弹幕插件

10 |

11 | 12 | 13 | 14 | 15 |

16 | 17 |

18 | Overview • 19 | Demo • 20 | Installation • 21 | Usage • 22 | Plug Options • 23 | Roadmap 24 |

25 | 26 | ## Introduction 27 | 28 | 弹幕是中国较受欢迎的弹幕展示方式。 29 | 30 | ## Future 31 | 32 | 目前正在开发`Vue-Baberrage-Plus`,比较两个项目,`Vue-Baberrage`的定位是即开箱即用的小插件,而`Plus`则是一套完整的弹幕解决方案,包括会提供更流畅的展示方式,更丰富的交互方式,更完善的接入方式等。(2019-01-25) 33 | 34 | ## Overview 35 | 36 | ![new_version](https://raw.githubusercontent.com/superhos/vue-baberrage/master/screenshot/demo.gif) 37 | 38 | GIF看起来效果太差了. 可以直接去 [DEMO](http://blog.chenhaotaishuaile.com/vue-baberrage/) 页看效果 39 | 40 | ## Demo 41 | 42 | [DEMO](https://blog.chenhaotaishuaile.com/vue-baberrage/) 页 43 | 44 | ## Installation 45 | 46 | 1) Install package via NPM 47 | 48 | ```bash 49 | npm install vue-baberrage 50 | ``` 51 | 2) Install plugin within project 52 | 53 | ```javascript 54 | import Vue from 'vue' 55 | import { vueBaberrage } from 'vue-baberrage' 56 | Vue.use(vueBaberrage) 57 | ``` 58 | or 59 | 60 | ```javascript 61 | const vueBaberrage = request('vue-baberrage').vueBaberrage 62 | ``` 63 | 64 | or 65 | 66 | ```html 67 | 68 | ``` 69 | 70 | ## Usage 71 | 72 | 1) Template 73 | `isShow` and `barrageList` are necessary. 74 | 75 | ```html 76 |
77 | 82 | 83 |
84 | ``` 85 | 86 | 2) Script 87 | 88 | ```javascript 89 | import { MESSAGE_TYPE } from 'vue-baberrage' 90 | 91 | export default { 92 | name: 'app', 93 | data () { 94 | return { 95 | msg: 'Hello vue-baberrage', 96 | barrageIsShow: true, 97 | currentId : 0, 98 | barrageLoop: false, 99 | barrageList: [] 100 | } 101 | }, 102 | methods:{ 103 | addToList (){ 104 | this.barrageList.push({ 105 | id: ++this.currentId, 106 | avatar: "./static/avatar.jpg", 107 | msg: this.msg, 108 | time: 5, 109 | type: MESSAGE_TYPE.NORMAL, 110 | }); 111 | ... 112 | ``` 113 | 114 | 3) Already done 115 | 116 | 两步即可, 当有新的数据加入到`barrageList`,就会以弹幕形式展现出来,建议`barrageList`放在Vuex中。 117 | 118 | 119 | ## 自定义弹幕例子 120 | 121 | 这是一个在3.2.0版本新增加的功能,你能够以slot的形式定制自己的弹幕样式。 122 | ````javascript 123 | 133 | 138 | 139 | ```` 140 | 141 | 通过组件的slot来自定义弹幕的样式。`props.item`的数据跟弹幕的数据一样。请注意,如果弹幕展现出来的宽度有所差异,请在弹幕数据中增加`extraWidth`来调整宽度。 142 | 143 | ````javascript 144 | { 145 | id: ++this.currentId, 146 | avatar: "./static/avatar.jpg", 147 | msg: this.msg, 148 | time: 5, 149 | type: MESSAGE_TYPE.NORMAL, 150 | extraWidth: 60 151 | } 152 | ```` 153 | 154 | 因为vue-baberrage只通过弹幕的文字来计算弹幕的长度。 155 | 156 | ## Plugin Options 157 | 158 | #### isShow 159 | - Default: `true` 160 | - Acceptable-Values: Boolean 161 | - Function: 是否显示弹幕 162 | 163 | #### barrageList 164 | - Default: `[]` 165 | - Acceptable-Values: Array 166 | - Function: 弹幕数据列表 167 | 168 | #### boxWidth 169 | - Default: `parent's Width` 170 | - Acceptable-Values: Number 171 | - Function: 显示弹幕区域的宽度 172 | 173 | #### boxHeight 174 | - Default: `window's Height` 175 | - Acceptable-Values: Number 176 | - Function: 显示弹幕区域的高度 177 | 178 | #### messageHeight 179 | - Default: `message's Height` 180 | - Acceptable-Values: Number 181 | - Function: 弹幕高度 182 | 183 | #### maxWordCount 184 | - Default: `60` 185 | - Acceptable-Values: Number 186 | - Function: 弹幕最大字数长度,超过则忽略(中文占2长度,英文占1长度) 187 | 188 | #### loop 189 | - Default: `false` 190 | - Acceptable-Values: Boolean 191 | - Function: 是否循环 192 | 193 | #### throttleGap 194 | - Default: 2000 195 | - Acceptable-Values: Number 196 | - Function: 弹幕之间的节流时间 197 | 198 | #### posRender 199 | - Default: null 200 | - Acceptable-Values: Function 201 | - Function: 自定义弹幕显示的泳道 202 | - Return: 需要返回泳道的索引 203 | 204 | #### lanesCount 205 | - Default: 0 206 | - Acceptable-Values: Number 207 | - Function: 泳道的数量。 208 | 209 | ## 弹幕数据选项 210 | 211 | #### id 212 | - Default: `null` 213 | - Acceptable-Values: Number 214 | - Function: 用以区分每条弹幕 215 | 216 | #### avatar 217 | - Default: `#` 218 | - Acceptable-Values: String 219 | - Function: 弹幕的头像 220 | 221 | #### msg 222 | - Default: `null` 223 | - Acceptable-Values: String 224 | - Function: 弹幕内容 225 | 226 | #### barrageStyle 227 | - Default: `normal` 228 | - Acceptable-Values: String 229 | - Function: 额外的弹幕的样式 230 | 231 | #### time 232 | - Default: `10` 233 | - Acceptable-Values: Number 234 | - Function: 弹幕展示的时间(单位:秒) 235 | 236 | #### type 237 | - Default: MESSAGE_TYPE.NORMAL 238 | - Acceptable-Values: Symbol 239 | - Function: 弹幕的类型 240 | MESSAGE_TYPE.NORMAL : 正常从右到左滚动 241 | MESSAGE_TYPE.FROM_TOP : 固定在弹幕区域上方 242 | 243 | #### position 244 | - Default: `top` 245 | - Acceptable-Values: Boolean 246 | - Function: 目前为固定值,之后功能更新。 247 | 248 | #### extraWidth 249 | - Default: 0 250 | - Acceptable-Values: Number 251 | - Function: 弹幕的额外宽度。 252 | 253 | ## Events 254 | 255 | 当 `barrageList` 为空的时候会调用 `barrage-list-empty`。 256 | 257 | ```html 258 | 264 | ``` 265 | 266 | ## Roadmap 267 | 268 | #### Version 0.0.1 269 | - 实现基本功能. 270 | 271 | #### Version 1.0.0 272 | - 性能优化。 273 | 274 | #### Version 1.2.0 275 | - 代码规范。 276 | - 性能优化。 277 | 278 | #### Version 2.1.2 279 | - 使用ES6. 280 | - 性能优化。. 281 | 282 | #### Version 2.1.9 283 | - 增加节流函数 284 | 285 | #### Version 3.1.0 286 | - 改用Rollup打包 287 | - 增加`posRender`属性 288 | - 修复部分BUG 289 | 290 | #### Version 3.2.0 291 | - 支持自定义弹幕样式 292 | - 修复部分BUG -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | vue-baberrage 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-baberrage", 3 | "version": "3.2.4", 4 | "description": "Berrage plugin for VUE.js", 5 | "author": "Sevenschan", 6 | "private": false, 7 | "main": "dist/vue-baberrage.js", 8 | "scripts": { 9 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 10 | "start": "npm run dev", 11 | "unit": "jest --config test/unit/jest.conf.js --coverage", 12 | "test": "npm run unit", 13 | "lint": "eslint --ext .js,.vue src test/unit", 14 | "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/", 15 | "build": "rollup --config rollup.config.js" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/superhos/vue-baberrage" 20 | }, 21 | "dependencies": { 22 | "hyphenate-style-name": "^1.0.3", 23 | "rollup-plugin-terser": "^5.2.0", 24 | "to-px": "^1.1.0", 25 | "uuid": "^3.4.0", 26 | "vue": "^2.6.11" 27 | }, 28 | "devDependencies": { 29 | "@babel/cli": "^7.8.4", 30 | "@babel/core": "^7.8.4", 31 | "@babel/plugin-syntax-dynamic-import": "^7.8.3", 32 | "@babel/plugin-transform-runtime": "^7.8.3", 33 | "@babel/preset-env": "^7.8.4", 34 | "atob": ">=2.1.0", 35 | "autoprefixer": "^7.2.6", 36 | "babel-eslint": "^8.2.6", 37 | "babel-helper-vue-jsx-merge-props": "^2.0.3", 38 | "babel-jest": "^21.0.2", 39 | "babel-loader": "^8.0.6", 40 | "babel-plugin-dynamic-import-node": "^1.2.0", 41 | "babel-plugin-syntax-jsx": "^6.18.0", 42 | "babel-plugin-transform-decorators-legacy": "^1.3.5", 43 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", 44 | "babel-plugin-transform-runtime": "^6.22.0", 45 | "babel-plugin-transform-vue-jsx": "^3.7.0", 46 | "babel-preset-stage-2": "^6.22.0", 47 | "chalk": "^2.4.2", 48 | "copy-webpack-plugin": "^4.6.0", 49 | "css-loader": "^0.28.11", 50 | "eslint": "^4.19.1", 51 | "eslint-config-standard": "^10.2.1", 52 | "eslint-friendly-formatter": "^3.0.0", 53 | "eslint-loader": "^2.1.1", 54 | "eslint-plugin-import": "^2.15.0", 55 | "eslint-plugin-node": "^5.2.0", 56 | "eslint-plugin-promise": "^3.8.0", 57 | "eslint-plugin-standard": "^3.1.0", 58 | "eslint-plugin-vue": "^4.7.1", 59 | "extract-text-webpack-plugin": "^3.0.0", 60 | "file-loader": "^1.1.11", 61 | "friendly-errors-webpack-plugin": "^1.7.0", 62 | "html-webpack-plugin": "^3.2.0", 63 | "jest": "^22.4.4", 64 | "jest-serializer-vue": "^0.3.0", 65 | "less": "^3.10.3", 66 | "less-loader": "^5.0.0", 67 | "merge": ">=1.2.1", 68 | "node-notifier": "^5.3.0", 69 | "optimize-css-assets-webpack-plugin": "^3.2.0", 70 | "ora": "^1.2.0", 71 | "portfinder": "^1.0.20", 72 | "postcss-import": "^11.1.0", 73 | "postcss-loader": "^2.1.6", 74 | "postcss-url": "^7.3.2", 75 | "randomatic": ">=3.0.0", 76 | "rimraf": "^2.6.3", 77 | "rollup": "^1.31.0", 78 | "rollup-plugin-babel": "^4.3.3", 79 | "rollup-plugin-commonjs": "^10.1.0", 80 | "rollup-plugin-node-resolve": "^5.2.0", 81 | "rollup-plugin-uglify": "^6.0.4", 82 | "rollup-plugin-vue": "^5.1.6", 83 | "semver": "^5.6.0", 84 | "shelljs": "^0.7.6", 85 | "uglifyjs-webpack-plugin": "^1.3.0", 86 | "url-loader": "^1.1.2", 87 | "vue-jest": "^1.0.2", 88 | "vue-loader": "^14.2.3", 89 | "vue-style-loader": "^3.1.2", 90 | "vue-template-compiler": "^2.6.11", 91 | "webpack": ">=4.29.0", 92 | "webpack-bundle-analyzer": "^3.3.2", 93 | "webpack-cli": "^3.2.1", 94 | "webpack-dev-server": ">=3.1.11", 95 | "webpack-merge": "^4.2.1" 96 | }, 97 | "engines": { 98 | "node": ">= 6.0.0", 99 | "npm": ">= 3.0.0" 100 | }, 101 | "browserslist": [ 102 | "> 1%", 103 | "last 2 versions", 104 | "not ie <= 8" 105 | ] 106 | } 107 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import vue from 'rollup-plugin-vue' 2 | import commonjs from 'rollup-plugin-commonjs' 3 | import babel from 'rollup-plugin-babel' 4 | import resolve from 'rollup-plugin-node-resolve' 5 | import { 6 | terser 7 | } from "rollup-plugin-terser" 8 | 9 | export default [{ 10 | input: "./src/lib/index.js", 11 | output: { 12 | name: "vue-baberrage", 13 | file: "./dist/vue-baberrage.js", 14 | format: "umd", 15 | }, 16 | extensions: ['.js', '.jsx', '.vue', '.json'], 17 | // ... 18 | plugins: [ 19 | // ... 20 | resolve({ 21 | browser: true, 22 | }), 23 | terser(), 24 | commonjs(), 25 | babel({ 26 | exclude: 'node_modules/**' // 排除node_modules 下的文件 27 | }), 28 | vue( /* options */ ), 29 | ], 30 | }, 31 | // SSR build. 32 | { 33 | input: "./src/lib/index.js", 34 | output: { 35 | format: 'cjs', 36 | file: "./dist/vue-baberrage.ssr.js" 37 | }, 38 | extensions: ['.js', '.jsx', '.vue', '.json'], 39 | plugins: [ 40 | commonjs(), 41 | terser(), 42 | babel({ 43 | exclude: 'node_modules/**' // 排除node_modules 下的文件 44 | }), 45 | resolve(), 46 | vue({ 47 | template: { 48 | optimizeSSR: true 49 | } 50 | }) 51 | ] 52 | } 53 | ] 54 | -------------------------------------------------------------------------------- /screenshot/demo-show.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/screenshot/demo-show.gif -------------------------------------------------------------------------------- /screenshot/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/screenshot/demo.gif -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 117 | 118 | 222 | -------------------------------------------------------------------------------- /src/assets/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/src/assets/avatar.jpg -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/src/assets/logo.png -------------------------------------------------------------------------------- /src/lib/components/vue-baberrage-msg/index.vue: -------------------------------------------------------------------------------- 1 | 12 | 31 | 32 | 74 | -------------------------------------------------------------------------------- /src/lib/constants/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Configuration the Message type. 3 | */ 4 | export const MESSAGE_TYPE = { 5 | NORMAL: Symbol('NORMAL'), // Right to Left 6 | FROM_TOP: Symbol('FROM_TOP'), // From Top 7 | FROM_BOTTOM: Symbol('FROM_BOTTOM') // From Bottom 8 | } 9 | -------------------------------------------------------------------------------- /src/lib/index.js: -------------------------------------------------------------------------------- 1 | import vueBaberrage from './vue-baberrage.vue' 2 | import { MESSAGE_TYPE } from './constants' 3 | 4 | vueBaberrage.install = (Vue, options) => { 5 | Vue.component(vueBaberrage.name, vueBaberrage) 6 | } 7 | 8 | if (typeof window !== 'undefined' && window.Vue) { 9 | window.Vue.use(vueBaberrage) 10 | } 11 | 12 | export { 13 | MESSAGE_TYPE, 14 | vueBaberrage 15 | } 16 | -------------------------------------------------------------------------------- /src/lib/utils/widthCalcultor.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 通过解析CSS计算出元素宽度 3 | */ 4 | import hyphenateStyleName from 'hyphenate-style-name' 5 | export default function WidthCalcultor (css) { 6 | if (!css) return 0 7 | const cssStyles = {} 8 | let width = 0 9 | Object.keys(css || {}).forEach(key => { 10 | cssStyles[hyphenateStyleName(key)] = !isNaN(css[key]) ? css[key] + 'px' : css[key] 11 | switch (hyphenateStyleName(key)) { 12 | case 'padding': { 13 | const item = css[key].split(' ') 14 | if (item.length === 4) { 15 | width += +item[1].replace('px', '') + +item[3].replace('px', '') 16 | } else if (item.length === 2) { 17 | width += +item[1].replace('px', '') * 2 18 | } else { 19 | width += +item[0].replace('px', '') * 2 20 | } 21 | break 22 | } 23 | case 'padding-left': 24 | case 'padding-right': 25 | width += +css[key].replace('px', '') 26 | break 27 | } 28 | }) 29 | return width 30 | } 31 | -------------------------------------------------------------------------------- /src/lib/vue-baberrage.vue: -------------------------------------------------------------------------------- 1 | 27 | 434 | 435 | 443 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import { vueBaberrage } from './lib/index.js' 4 | 5 | Vue.use(vueBaberrage) 6 | 7 | let vm = new Vue({ 8 | el: '#app', 9 | render: h => h(App) 10 | }) 11 | 12 | Vue.use({ 13 | vm 14 | }) 15 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/static/.gitkeep -------------------------------------------------------------------------------- /static/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/superhos/vue-baberrage/333d3d10658a0c932b8fa1a7a9f266f2b53a9011/static/avatar.jpg -------------------------------------------------------------------------------- /test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jest": true 4 | }, 5 | "globals": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/unit/jest.conf.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | module.exports = { 4 | rootDir: path.resolve(__dirname, '../../'), 5 | moduleFileExtensions: [ 6 | 'js', 7 | 'json', 8 | 'vue' 9 | ], 10 | moduleNameMapper: { 11 | '^@/(.*)$': '/src/$1' 12 | }, 13 | transform: { 14 | '^.+\\.js$': '/node_modules/babel-jest', 15 | '.*\\.(vue)$': '/node_modules/vue-jest' 16 | }, 17 | snapshotSerializers: ['/node_modules/jest-serializer-vue'], 18 | setupFiles: ['/test/unit/setup'], 19 | mapCoverage: true, 20 | coverageDirectory: '/test/unit/coverage', 21 | collectCoverageFrom: [ 22 | 'src/**/*.{js,vue}', 23 | '!src/main.js', 24 | '!**/node_modules/**' 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /test/unit/setup.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | Vue.config.productionTip = false 4 | -------------------------------------------------------------------------------- /test/unit/specs/HelloWorld.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import HelloWorld from '@/components/HelloWorld' 3 | 4 | describe('HelloWorld.vue', () => { 5 | it('should render correct contents', () => { 6 | const Constructor = Vue.extend(HelloWorld) 7 | const vm = new Constructor().$mount() 8 | expect(vm.$el.querySelector('.hello h1').textContent) 9 | .toEqual('Welcome to Your Vue.js App') 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const webpack = require('webpack') 3 | 4 | module.exports = { 5 | // Development Config 6 | // entry: './src/main.js', 7 | // output: { 8 | // path: path.resolve(__dirname, './dist'), 9 | // publicPath: '/dist/', 10 | // filename: 'build.js' 11 | // }, 12 | // Libirary Config 13 | mode: 'production', 14 | entry: './src/lib/index.js', 15 | output: { 16 | path: path.resolve(__dirname, './dist'), 17 | publicPath: '/dist/', 18 | filename: 'vue-baberrage.js', 19 | library: 'vue-baberrage', 20 | libraryTarget: 'umd', 21 | umdNamedDefine: true 22 | }, 23 | module: { 24 | rules: [ 25 | { 26 | test: /\.vue$/, 27 | loader: 'vue-loader', 28 | options: { 29 | loaders: { 30 | } 31 | // other vue-loader options go here 32 | } 33 | }, 34 | { 35 | test: /\.css$/, //加载样式 36 | loader: 'style-loader!css-loader' 37 | }, 38 | { 39 | test: /\.less$/, //加载less 40 | use: [ 41 | 'vue-style-loader', 42 | { 43 | loader: 'css-loader', 44 | options: { modules: true } 45 | }, 46 | 'less-loader' 47 | ] 48 | }, 49 | { 50 | test: /\.js$/, 51 | loader: 'babel-loader', 52 | exclude: /node_modules/ 53 | }, 54 | { 55 | test: /\.(png|jpg|gif|svg)$/, 56 | loader: 'file-loader', 57 | options: { 58 | name: '[name].[ext]?[hash]' 59 | } 60 | } 61 | ] 62 | }, 63 | resolve: { 64 | alias: { 65 | 'vue$': 'vue/dist/vue.esm.js' 66 | }, 67 | extensions: ['*', '.js', '.vue', '.json'] 68 | }, 69 | devServer: { 70 | historyApiFallback: true, 71 | noInfo: true 72 | }, 73 | performance: { 74 | hints: false 75 | }, 76 | devtool: '#eval-source-map' 77 | } 78 | 79 | if (process.env.NODE_ENV === 'production') { 80 | module.exports.devtool = '#source-map' 81 | // http://vue-loader.vuejs.org/en/workflow/production.html 82 | module.exports.plugins = (module.exports.plugins || []).concat([ 83 | new webpack.DefinePlugin({ 84 | 'process.env': { 85 | NODE_ENV: '"production"' 86 | } 87 | }), 88 | new webpack.optimize.UglifyJsPlugin({ 89 | sourceMap: true, 90 | compress: { 91 | warnings: false 92 | } 93 | }), 94 | new webpack.LoaderOptionsPlugin({ 95 | minimize: true 96 | }) 97 | ]) 98 | } 99 | --------------------------------------------------------------------------------