├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── index.html ├── package.json ├── src ├── App.vue ├── assets │ └── logo.png ├── common │ └── js │ │ └── util.js ├── components │ ├── Hello.vue │ ├── toolbuttons │ │ ├── colorpicker.vue │ │ ├── fontSize.vue │ │ ├── toolbtn.vue │ │ └── toolselect.vue │ └── ueditor │ │ └── ueditor.vue ├── main.js └── router │ └── index.js └── static ├── .gitkeep ├── ueditor ├── lang │ ├── en │ │ ├── en.js │ │ └── images │ │ │ ├── addimage.png │ │ │ ├── alldeletebtnhoverskin.png │ │ │ ├── alldeletebtnupskin.png │ │ │ ├── background.png │ │ │ ├── button.png │ │ │ ├── copy.png │ │ │ ├── deletedisable.png │ │ │ ├── deleteenable.png │ │ │ ├── listbackground.png │ │ │ ├── localimage.png │ │ │ ├── music.png │ │ │ ├── rotateleftdisable.png │ │ │ ├── rotateleftenable.png │ │ │ ├── rotaterightdisable.png │ │ │ ├── rotaterightenable.png │ │ │ └── upload.png │ └── zh-cn │ │ ├── images │ │ ├── copy.png │ │ ├── localimage.png │ │ ├── music.png │ │ └── upload.png │ │ └── zh-cn.js ├── themes │ ├── default │ │ ├── css │ │ │ └── ueditor.css │ │ └── images │ │ │ ├── icon_edui_indent.png │ │ │ ├── icons-all29f4d4.gif │ │ │ ├── icons29f4d4.png │ │ │ ├── sparator.png │ │ │ └── ueditor_z29f4d5.png │ └── iframe.css ├── third-party │ ├── SyntaxHighlighter │ │ ├── shCore.js │ │ └── shCoreDefault.css │ ├── codemirror │ │ ├── codemirror.css │ │ └── codemirror.js │ ├── highcharts │ │ ├── adapters │ │ │ ├── mootools-adapter.js │ │ │ ├── mootools-adapter.src.js │ │ │ ├── prototype-adapter.js │ │ │ ├── prototype-adapter.src.js │ │ │ ├── standalone-framework.js │ │ │ └── standalone-framework.src.js │ │ ├── highcharts-more.js │ │ ├── highcharts-more.src.js │ │ ├── highcharts.js │ │ ├── highcharts.src.js │ │ ├── modules │ │ │ ├── annotations.js │ │ │ ├── annotations.src.js │ │ │ ├── canvas-tools.js │ │ │ ├── canvas-tools.src.js │ │ │ ├── data.js │ │ │ ├── data.src.js │ │ │ ├── drilldown.js │ │ │ ├── drilldown.src.js │ │ │ ├── exporting.js │ │ │ ├── exporting.src.js │ │ │ ├── funnel.js │ │ │ ├── funnel.src.js │ │ │ ├── heatmap.js │ │ │ ├── heatmap.src.js │ │ │ ├── map.js │ │ │ ├── map.src.js │ │ │ ├── no-data-to-display.js │ │ │ └── no-data-to-display.src.js │ │ └── themes │ │ │ ├── dark-blue.js │ │ │ ├── dark-green.js │ │ │ ├── gray.js │ │ │ ├── grid.js │ │ │ └── skies.js │ ├── jquery-1.10.2.js │ ├── jquery-1.10.2.min.js │ ├── jquery-1.10.2.min.map │ ├── snapscreen │ │ └── UEditorSnapscreen.exe │ ├── video-js │ │ ├── font │ │ │ ├── vjs.eot │ │ │ ├── vjs.svg │ │ │ ├── vjs.ttf │ │ │ └── vjs.woff │ │ ├── video-js.css │ │ ├── video-js.min.css │ │ ├── video-js.swf │ │ ├── video.dev.js │ │ └── video.js │ ├── webuploader │ │ ├── Uploader.swf │ │ ├── webuploader.css │ │ ├── webuploader.custom.js │ │ ├── webuploader.custom.min.js │ │ ├── webuploader.flashonly.js │ │ ├── webuploader.flashonly.min.js │ │ ├── webuploader.html5only.js │ │ ├── webuploader.html5only.min.js │ │ ├── webuploader.js │ │ ├── webuploader.min.js │ │ ├── webuploader.withoutimage.js │ │ └── webuploader.withoutimage.min.js │ ├── xss.min.js │ └── zeroclipboard │ │ ├── ZeroClipboard.js │ │ ├── ZeroClipboard.min.js │ │ └── ZeroClipboard.swf ├── ueditor.all.js ├── ueditor.all.min.js └── ueditor.config.js └── video.mp4 /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["es2015", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime"], 7 | "comments": false, 8 | "ignore": [ 9 | "./static/ueditor/*"], 10 | "env": { 11 | "test": { 12 | "plugins": [ "istanbul" ] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.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/*.js 2 | config/*.js 3 | node_modules/*.* 4 | static/* 5 | src/assets/ueditor/* -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // http://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | }, 12 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 13 | extends: 'standard', 14 | // required to lint *.vue files 15 | plugins: [ 16 | 'html' 17 | ], 18 | // add your custom rules here 19 | 'rules': { 20 | // allow paren-less arrow functions 21 | 'arrow-parens': 0, 22 | // allow async-await 23 | 'generator-star-spacing': 0, 24 | // allow debugger during development 25 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 26 | 'semi': ['error', 'always'], 27 | 'no-tabs': 0, 28 | 'indent': 0, 29 | 'space-before-function-paren': 0 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-ueditor 2 | 3 | > A Vue.js demo base on UEditor, UI from Wechat Media Platform. 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8089 (if you wanna change the port, check out the file[./config/index.js](line:26)) 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # build for production and view the bundle analyzer report 18 | npm run build --report 19 | ``` 20 | ## Tips 21 | You'd better check the file(./.eslintrc.js) before cloning the demo into your project. 22 | 23 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 24 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | // https://github.com/shelljs/shelljs 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | var ora = require('ora') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var shell = require('shelljs') 10 | var webpack = require('webpack') 11 | var config = require('../config') 12 | var webpackConfig = require('./webpack.prod.conf') 13 | 14 | var spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 18 | shell.rm('-rf', assetsPath) 19 | shell.mkdir('-p', assetsPath) 20 | shell.config.silent = true 21 | shell.cp('-R', 'static/*', assetsPath) 22 | shell.config.silent = false 23 | 24 | webpack(webpackConfig, function (err, stats) { 25 | spinner.stop() 26 | if (err) throw err 27 | process.stdout.write(stats.toString({ 28 | colors: true, 29 | modules: false, 30 | children: false, 31 | chunks: false, 32 | chunkModules: false 33 | }) + '\n\n') 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 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | { 16 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = require('./webpack.dev.conf') 14 | 15 | // default port where dev server listens for incoming traffic 16 | var port = process.env.PORT || config.dev.port 17 | // automatically open browser, if not set will be false 18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 19 | // Define HTTP proxies to your custom API backend 20 | // https://github.com/chimurai/http-proxy-middleware 21 | var proxyTable = config.dev.proxyTable 22 | 23 | var app = express() 24 | var compiler = webpack(webpackConfig) 25 | 26 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 27 | publicPath: webpackConfig.output.publicPath, 28 | quiet: true 29 | }) 30 | 31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 32 | log: () => {} 33 | }) 34 | // force page reload when html-webpack-plugin template changes 35 | compiler.plugin('compilation', function (compilation) { 36 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 37 | hotMiddleware.publish({ action: 'reload' }) 38 | cb() 39 | }) 40 | }) 41 | 42 | // proxy api requests 43 | Object.keys(proxyTable).forEach(function (context) { 44 | var options = proxyTable[context] 45 | if (typeof options === 'string') { 46 | options = { target: options } 47 | } 48 | app.use(proxyMiddleware(options.filter || context, options)) 49 | }) 50 | 51 | // handle fallback for HTML5 history API 52 | app.use(require('connect-history-api-fallback')()) 53 | 54 | // serve webpack bundle output 55 | app.use(devMiddleware) 56 | 57 | // enable hot-reload and state-preserving 58 | // compilation error display 59 | app.use(hotMiddleware) 60 | 61 | // serve pure static assets 62 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 63 | app.use(staticPath, express.static('./static')) 64 | 65 | var uri = 'http://localhost:' + port 66 | 67 | devMiddleware.waitUntilValid(function () { 68 | console.log('> Listening at ' + uri + '\n') 69 | }) 70 | 71 | module.exports = app.listen(port, function (err) { 72 | if (err) { 73 | console.log(err) 74 | return 75 | } 76 | 77 | // when env is testing, don't need open it 78 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 79 | opn(uri) 80 | } 81 | }) 82 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | // Extract CSS when that option is specified 29 | // (which is the case during production build) 30 | if (options.extract) { 31 | return ExtractTextPlugin.extract({ 32 | use: sourceLoader, 33 | fallback: 'vue-style-loader' 34 | }) 35 | } else { 36 | return ['vue-style-loader', sourceLoader].join('!') 37 | } 38 | } 39 | 40 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 41 | return { 42 | css: generateLoaders(['css']), 43 | postcss: generateLoaders(['css']), 44 | less: generateLoaders(['css', 'less']), 45 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 46 | scss: generateLoaders(['css', 'sass']), 47 | stylus: generateLoaders(['css', 'stylus']), 48 | styl: generateLoaders(['css', 'stylus']) 49 | } 50 | } 51 | 52 | // Generate loaders for standalone style files (outside of .vue) 53 | exports.styleLoaders = function (options) { 54 | var output = [] 55 | var loaders = exports.cssLoaders(options) 56 | for (var extension in loaders) { 57 | var loader = loaders[extension] 58 | output.push({ 59 | test: new RegExp('\\.' + extension + '$'), 60 | loader: loader 61 | }) 62 | } 63 | return output 64 | } 65 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }), 12 | postcss: [ 13 | require('autoprefixer')({ 14 | browsers: ['last 2 versions'] 15 | }) 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./vue-loader.conf') 5 | 6 | function resolve (dir) { 7 | return path.join(__dirname, '..', dir) 8 | } 9 | 10 | module.exports = { 11 | entry: { 12 | app: './src/main.js' 13 | }, 14 | output: { 15 | path: config.build.assetsRoot, 16 | filename: '[name].js', 17 | publicPath: process.env.NODE_ENV === 'production' 18 | ? config.build.assetsPublicPath 19 | : config.dev.assetsPublicPath 20 | }, 21 | resolve: { 22 | extensions: ['.js', '.vue', '.json'], 23 | modules: [ 24 | resolve('src'), 25 | resolve('node_modules') 26 | ], 27 | alias: { 28 | 'vue$': 'vue/dist/vue.common.js', 29 | 'src': resolve('src'), 30 | 'assets': resolve('src/assets'), 31 | 'components': resolve('src/components') 32 | } 33 | }, 34 | module: { 35 | rules: [ 36 | { 37 | test: /\.(js|vue)$/, 38 | loader: 'eslint-loader', 39 | enforce: "pre", 40 | include: [resolve('src'), resolve('test')], 41 | options: { 42 | formatter: require('eslint-friendly-formatter') 43 | } 44 | }, 45 | { 46 | test: /\.vue$/, 47 | loader: 'vue-loader', 48 | options: vueLoaderConfig 49 | }, 50 | { 51 | test: /\.js$/, 52 | loader: 'babel-loader', 53 | include: [resolve('src'), resolve('test')] 54 | }, 55 | { 56 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 57 | loader: 'url-loader', 58 | query: { 59 | limit: 10000, 60 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 61 | } 62 | }, 63 | { 64 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 65 | loader: 'url-loader', 66 | query: { 67 | limit: 10000, 68 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 69 | } 70 | } 71 | ] 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin() 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var webpack = require('webpack') 4 | var config = require('../config') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var HtmlWebpackPlugin = require('html-webpack-plugin') 8 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 9 | var env = config.build.env 10 | 11 | var webpackConfig = merge(baseWebpackConfig, { 12 | module: { 13 | rules: utils.styleLoaders({ 14 | sourceMap: config.build.productionSourceMap, 15 | extract: true 16 | }) 17 | }, 18 | devtool: config.build.productionSourceMap ? '#source-map' : false, 19 | output: { 20 | path: config.build.assetsRoot, 21 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 22 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 23 | }, 24 | plugins: [ 25 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 26 | new webpack.DefinePlugin({ 27 | 'process.env': env 28 | }), 29 | new webpack.optimize.UglifyJsPlugin({ 30 | compress: { 31 | warnings: false 32 | } 33 | }), 34 | // extract css into its own file 35 | new ExtractTextPlugin({ 36 | filename: utils.assetsPath('css/[name].[contenthash].css') 37 | }), 38 | // generate dist index.html with correct asset hash for caching. 39 | // you can customize output by editing /index.html 40 | // see https://github.com/ampedandwired/html-webpack-plugin 41 | new HtmlWebpackPlugin({ 42 | filename: config.build.index, 43 | template: 'index.html', 44 | inject: true, 45 | minify: { 46 | removeComments: true, 47 | collapseWhitespace: true, 48 | removeAttributeQuotes: true 49 | // more options: 50 | // https://github.com/kangax/html-minifier#options-quick-reference 51 | }, 52 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 53 | chunksSortMode: 'dependency' 54 | }), 55 | // split vendor js into its own file 56 | new webpack.optimize.CommonsChunkPlugin({ 57 | name: 'vendor', 58 | minChunks: function (module, count) { 59 | // any required modules inside node_modules are extracted to vendor 60 | return ( 61 | module.resource && 62 | /\.js$/.test(module.resource) && 63 | module.resource.indexOf( 64 | path.join(__dirname, '../node_modules') 65 | ) === 0 66 | ) 67 | } 68 | }), 69 | // extract webpack runtime and module manifest to its own file in order to 70 | // prevent vendor hash from being updated whenever app bundle is updated 71 | new webpack.optimize.CommonsChunkPlugin({ 72 | name: 'manifest', 73 | chunks: ['vendor'] 74 | }) 75 | ] 76 | }) 77 | 78 | if (config.build.productionGzip) { 79 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 80 | 81 | webpackConfig.plugins.push( 82 | new CompressionWebpackPlugin({ 83 | asset: '[path].gz[query]', 84 | algorithm: 'gzip', 85 | test: new RegExp( 86 | '\\.(' + 87 | config.build.productionGzipExtensions.join('|') + 88 | ')$' 89 | ), 90 | threshold: 10240, 91 | minRatio: 0.8 92 | }) 93 | ) 94 | } 95 | 96 | if (config.build.bundleAnalyzerReport) { 97 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 98 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 99 | } 100 | 101 | module.exports = webpackConfig 102 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | dev: { 25 | env: require('./dev.env'), 26 | port: 8089, 27 | autoOpenBrowser: true, 28 | assetsSubDirectory: 'static', 29 | assetsPublicPath: '/', 30 | proxyTable: {}, 31 | // CSS Sourcemaps off by default because relative paths are "buggy" 32 | // with this option, according to the CSS-Loader README 33 | // (https://github.com/webpack/css-loader#sourcemaps) 34 | // In our experience, they generally work as expected, 35 | // just be aware of this issue when enabling this option. 36 | cssSourceMap: false 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | 26 | 27 | vue-ueditor 28 | 29 | 30 |
31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-ueditor", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project base on UEditor", 5 | "author": "伊吾鱼 lichin https://github.com/yiwuyu", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build": "node build/build.js", 10 | "lint": "eslint --ext .js,.vue src" 11 | }, 12 | "dependencies": { 13 | "element-ui": "^1.1.6", 14 | "vue": "^2.1.10", 15 | "vue-router": "^2.2.0" 16 | }, 17 | "devDependencies": { 18 | "autoprefixer": "^6.7.2", 19 | "babel-core": "^6.22.1", 20 | "babel-eslint": "^7.1.1", 21 | "babel-loader": "^6.2.10", 22 | "babel-plugin-transform-runtime": "^6.22.0", 23 | "babel-preset-es2015": "^6.22.0", 24 | "babel-preset-stage-2": "^6.22.0", 25 | "babel-register": "^6.22.0", 26 | "chalk": "^1.1.3", 27 | "connect-history-api-fallback": "^1.3.0", 28 | "css-loader": "^0.26.1", 29 | "eslint": "^3.14.1", 30 | "eslint-config-standard": "^6.2.1", 31 | "eslint-friendly-formatter": "^2.0.7", 32 | "eslint-loader": "^1.6.1", 33 | "eslint-plugin-html": "^2.0.0", 34 | "eslint-plugin-promise": "^3.4.0", 35 | "eslint-plugin-standard": "^2.0.1", 36 | "eventsource-polyfill": "^0.9.6", 37 | "express": "^4.14.1", 38 | "extract-text-webpack-plugin": "^2.0.0-rc.2", 39 | "file-loader": "^0.10.0", 40 | "friendly-errors-webpack-plugin": "^1.1.3", 41 | "function-bind": "^1.1.0", 42 | "html-webpack-plugin": "^2.28.0", 43 | "http-proxy-middleware": "^0.17.3", 44 | "opn": "^4.0.2", 45 | "ora": "^1.1.0", 46 | "semver": "^5.3.0", 47 | "shelljs": "^0.7.6", 48 | "stylus": "^0.54.5", 49 | "stylus-loader": "^2.4.0", 50 | "url-loader": "^0.5.7", 51 | "vue-loader": "^10.3.0", 52 | "vue-style-loader": "^2.0.0", 53 | "vue-template-compiler": "^2.1.10", 54 | "webpack": "^2.2.1", 55 | "webpack-bundle-analyzer": "^2.2.1", 56 | "webpack-dev-middleware": "^1.10.0", 57 | "webpack-hot-middleware": "^2.16.1", 58 | "webpack-merge": "^2.6.1" 59 | }, 60 | "engines": { 61 | "node": ">= 4.0.0", 62 | "npm": ">= 3.0.0" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 24 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/src/assets/logo.png -------------------------------------------------------------------------------- /src/common/js/util.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 数组去重 3 | * @createdAt 2017-02-09T21:12:41+0800 4 | * @author lichin 5 | */ 6 | export uniqueArr() { 7 | 8 | }; -------------------------------------------------------------------------------- /src/components/Hello.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 33 | 34 | 35 | 50 | -------------------------------------------------------------------------------- /src/components/toolbuttons/colorpicker.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/src/components/toolbuttons/colorpicker.vue -------------------------------------------------------------------------------- /src/components/toolbuttons/fontSize.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 78 | 137 | -------------------------------------------------------------------------------- /src/components/toolbuttons/toolbtn.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/components/toolbuttons/toolselect.vue: -------------------------------------------------------------------------------- 1 | 29 | 30 | 122 | 242 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue'; 4 | import App from './App'; 5 | import router from './router'; 6 | import ElementUI from 'element-ui'; 7 | import 'element-ui/lib/theme-default/index.css'; 8 | 9 | Vue.use(ElementUI); 10 | /* eslint-disable no-new */ 11 | new Vue({ 12 | el: '#app', 13 | router, 14 | template: '', 15 | components: { App } 16 | }); 17 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Router from 'vue-router'; 3 | import Hello from 'components/Hello'; 4 | import UEditor from 'components/ueditor/ueditor'; 5 | 6 | Vue.use(Router); 7 | 8 | export default new Router({ 9 | routes: [ 10 | { 11 | path: '/', 12 | name: 'Home', 13 | component: Hello 14 | }, 15 | { 16 | path: '/ueditor', 17 | name: 'UEditor', 18 | component: UEditor 19 | } 20 | ] 21 | }); 22 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/.gitkeep -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/addimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/addimage.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/alldeletebtnhoverskin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/alldeletebtnhoverskin.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/alldeletebtnupskin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/alldeletebtnupskin.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/background.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/button.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/copy.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/deletedisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/deletedisable.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/deleteenable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/deleteenable.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/listbackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/listbackground.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/localimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/localimage.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/music.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/rotateleftdisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/rotateleftdisable.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/rotateleftenable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/rotateleftenable.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/rotaterightdisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/rotaterightdisable.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/rotaterightenable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/rotaterightenable.png -------------------------------------------------------------------------------- /static/ueditor/lang/en/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/en/images/upload.png -------------------------------------------------------------------------------- /static/ueditor/lang/zh-cn/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/zh-cn/images/copy.png -------------------------------------------------------------------------------- /static/ueditor/lang/zh-cn/images/localimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/zh-cn/images/localimage.png -------------------------------------------------------------------------------- /static/ueditor/lang/zh-cn/images/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/zh-cn/images/music.png -------------------------------------------------------------------------------- /static/ueditor/lang/zh-cn/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/lang/zh-cn/images/upload.png -------------------------------------------------------------------------------- /static/ueditor/themes/default/css/ueditor.css: -------------------------------------------------------------------------------- 1 | /* 编辑器 */ 2 | .edui-editor { 3 | position: relative; 4 | } 5 | /* 右键菜单 */ 6 | .edui-default .edui-popup { 7 | position: absolute; 8 | -webkit-user-select: none; 9 | -moz-user-select: none; 10 | } 11 | .edui-default .edui-popup { 12 | z-index: 3000; 13 | background-color: #fff; 14 | } 15 | 16 | .edui-default .edui-popup .edui-shadow { 17 | position: absolute; 18 | z-index: -1; 19 | } 20 | .edui-default .edui-popup .edui-shadow { 21 | left: 0; 22 | top: 0; 23 | width: 100%; 24 | height: 100%; 25 | } 26 | .edui-default .edui-popup-content { 27 | border: 1px solid #e7e7eb; 28 | -webkit-background-clip: padding-box; 29 | -moz-background-clip: padding; 30 | background-clip: padding-box; 31 | padding: 5px; 32 | background: #fff; 33 | } 34 | .edui-default .edui-menu .edui-popup-content { 35 | padding: 3px; 36 | } 37 | .edui-default .edui-menu-body { 38 | _width: 150px; 39 | min-width: 170px; 40 | background: url(/static/ueditor/themes/default/images/sparator.png) repeat-y 25px; 41 | } 42 | .edui-default .edui-menuitem { 43 | height: 20px; 44 | cursor: default; 45 | vertical-align: top; 46 | } 47 | .edui-default .edui-menuseparator-inner { 48 | border-bottom: 1px solid #e2e3e3; 49 | margin-left: 29px; 50 | margin-right: 1px; 51 | } 52 | .edui-default .edui-menuseparator { 53 | margin: 2px 0; 54 | height: 1px; 55 | overflow: hidden; 56 | } 57 | .edui-default .edui-menu-body .edui-menuitem { 58 | padding: 1px; 59 | } 60 | .edui-default .edui-box { 61 | border: 0; 62 | padding: 0; 63 | margin: 0; 64 | overflow: hidden; 65 | } 66 | div.edui-box { 67 | position: relative; 68 | display: -moz-inline-box!important; 69 | display: inline-block!important; 70 | vertical-align: middle; 71 | } 72 | .edui-default .edui-menuitem .edui-icon { 73 | width: 20px!important; 74 | height: 20px!important; 75 | background: url(/static/ueditor/themes/default/images/icons29f4d4.png) 0 -4000px; 76 | background: url(/static/ueditor/themes/default/images/icons29f4d4.gif) 0 -4000px\9; 77 | } 78 | .edui-default .edui-for-justifyjustify .edui-icon { 79 | background: url(/static/ueditor/themes/default/images/ueditor_z29f4d5.png) 0 -498px no-repeat; 80 | } 81 | .edui-default .edui-hassubmenu .edui-arrow { 82 | height: 20px; 83 | width: 20px; 84 | float: right; 85 | background: url(/static/ueditor/themes/default/images/icons-all29f4d4.gif) no-repeat 10px -233px; 86 | } 87 | .edui-default .edui-label { 88 | cursor: default; 89 | } 90 | .edui-default .edui-label { 91 | font-size: 12px; 92 | line-height: 20px; 93 | height: 20px; 94 | padding-left: 10px; 95 | } 96 | .edui-default .edui-menu-body .edui-state-hover { 97 | padding: 0!important; 98 | background-color: #f4f5f9; 99 | border: 1px solid #e7e7eb; 100 | } 101 | 102 | /* toolbarbox */ 103 | .edui-editor-toolbarbox { 104 | display: none; 105 | } 106 | .edui-editor-bottomContainer { 107 | display: none; 108 | } 109 | /* 粘贴选项 */ 110 | .edui-wordpastepop { 111 | display: none; 112 | } -------------------------------------------------------------------------------- /static/ueditor/themes/default/images/icon_edui_indent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/themes/default/images/icon_edui_indent.png -------------------------------------------------------------------------------- /static/ueditor/themes/default/images/icons-all29f4d4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/themes/default/images/icons-all29f4d4.gif -------------------------------------------------------------------------------- /static/ueditor/themes/default/images/icons29f4d4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/themes/default/images/icons29f4d4.png -------------------------------------------------------------------------------- /static/ueditor/themes/default/images/sparator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/themes/default/images/sparator.png -------------------------------------------------------------------------------- /static/ueditor/themes/default/images/ueditor_z29f4d5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/themes/default/images/ueditor_z29f4d5.png -------------------------------------------------------------------------------- /static/ueditor/themes/iframe.css: -------------------------------------------------------------------------------- 1 | h1,h2,h3,h4,h5,h6{font-weight:400;font-size:16px}*{margin:0;padding:0}a{color:#607fa6;text-decoration:none}html{line-height:1.6;overflow:hidden}body{margin:0;padding:0;font-family:"Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif}.view{word-break:break-word;cursor:text;min-height:440px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:hidden}p{clear:both}img{*zoom:1;max-width:100%;*max-width:96%;height:auto!important}iframe{width:301px!important;border:0;background-color:none}blockquote{margin:0;padding-left:10px;border-left:3px solid #dbdbdb}.vote_area{display:block}.vote_iframe{height:100%;width:100%!important;*width:96%!important}.qqmusic_iframe{width:100%!important;height:75px}.audio_iframe{width:100%!important;height:82px}.video_iframe{background-color:#000;width:100%!important;*width:96%!important;position:static}.shopcard_iframe{width:100%!important;height:95px;margin:14px 0}.topic_iframe{width:100%!important;height:118px;margin:14px 0} -------------------------------------------------------------------------------- /static/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css: -------------------------------------------------------------------------------- 1 | .syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter,.syntaxhighlighter td,.syntaxhighlighter tr,.syntaxhighlighter tbody,.syntaxhighlighter thead,.syntaxhighlighter caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0!important;-webkit-border-radius:0 0 0 0!important;background:none!important;border:0!important;bottom:auto!important;float:none!important;left:auto!important;line-height:1.1em!important;margin:0!important;outline:0!important;overflow:visible!important;padding:0!important;position:static!important;right:auto!important;text-align:left!important;top:auto!important;vertical-align:baseline!important;width:auto!important;box-sizing:content-box!important;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-weight:normal!important;font-style:normal!important;min-height:inherit!important;min-height:auto!important;font-size:13px!important}.syntaxhighlighter{width:100%!important;margin:.3em 0 .3em 0!important;position:relative!important;overflow:auto!important;background-color:#f5f5f5!important;border:1px solid #ccc!important;border-radius:4px!important;border-collapse:separate!important}.syntaxhighlighter.source{overflow:hidden!important}.syntaxhighlighter .bold{font-weight:bold!important}.syntaxhighlighter .italic{font-style:italic!important}.syntaxhighlighter .gutter div{white-space:pre!important;word-wrap:normal}.syntaxhighlighter caption{text-align:left!important;padding:.5em 0 .5em 1em!important}.syntaxhighlighter td.code{width:100%!important}.syntaxhighlighter td.code .container{position:relative!important}.syntaxhighlighter td.code .container textarea{box-sizing:border-box!important;position:absolute!important;left:0!important;top:0!important;width:100%!important;border:none!important;background:white!important;padding-left:1em!important;overflow:hidden!important;white-space:pre!important}.syntaxhighlighter td.gutter .line{text-align:right!important;padding:0 .5em 0 1em!important}.syntaxhighlighter td.code .line{padding:0 1em!important}.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0!important}.syntaxhighlighter.show{display:block!important}.syntaxhighlighter.collapsed table{display:none!important}.syntaxhighlighter.collapsed .toolbar{padding:.1em .8em 0 .8em!important;font-size:1em!important;position:static!important;width:auto!important}.syntaxhighlighter.collapsed .toolbar span{display:inline!important;margin-right:1em!important}.syntaxhighlighter.collapsed .toolbar span a{padding:0!important;display:none!important}.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline!important}.syntaxhighlighter .toolbar{position:absolute!important;right:1px!important;top:1px!important;width:11px!important;height:11px!important;font-size:10px!important;z-index:10!important}.syntaxhighlighter .toolbar span.title{display:inline!important}.syntaxhighlighter .toolbar a{display:block!important;text-align:center!important;text-decoration:none!important;padding-top:1px!important}.syntaxhighlighter .toolbar a.expandSource{display:none!important}.syntaxhighlighter.ie{font-size:.9em!important;padding:1px 0 1px 0!important}.syntaxhighlighter.ie .toolbar{line-height:8px!important}.syntaxhighlighter.ie .toolbar a{padding-top:0!important}.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none!important}.syntaxhighlighter.printing .line .number{color:#bbb!important}.syntaxhighlighter.printing .line .content{color:black!important}.syntaxhighlighter.printing .toolbar{display:none!important}.syntaxhighlighter.printing a{text-decoration:none!important}.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black!important}.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200!important}.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue!important}.syntaxhighlighter.printing .keyword{color:#ff7800!important;font-weight:bold!important}.syntaxhighlighter.printing .preprocessor{color:gray!important}.syntaxhighlighter.printing .variable{color:#a70!important}.syntaxhighlighter.printing .value{color:#090!important}.syntaxhighlighter.printing .functions{color:#ff1493!important}.syntaxhighlighter.printing .constants{color:#06c!important}.syntaxhighlighter.printing .script{font-weight:bold!important}.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray!important}.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493!important}.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red!important}.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black!important}.syntaxhighlighter{background-color:#f5f5f5!important}.syntaxhighlighter .line.highlighted.number{color:black!important}.syntaxhighlighter caption{color:black!important}.syntaxhighlighter .gutter{color:#afafaf!important;background-color:#f7f7f9!important;border-right:1px solid #e1e1e8!important;padding:9.5px 0 9.5px 9.5px!important;border-top-left-radius:4px!important;border-bottom-left-radius:4px!important;user-select:none!important;-moz-user-select:none!important;-webkit-user-select:none!important}.syntaxhighlighter .gutter .line.highlighted{background-color:#6ce26c!important;color:white!important}.syntaxhighlighter.printing .line .content{border:none!important}.syntaxhighlighter.collapsed{overflow:visible!important}.syntaxhighlighter.collapsed .toolbar{color:blue!important;background:white!important;border:1px solid #6ce26c!important}.syntaxhighlighter.collapsed .toolbar a{color:blue!important}.syntaxhighlighter.collapsed .toolbar a:hover{color:red!important}.syntaxhighlighter .toolbar{color:white!important;background:#6ce26c!important;border:none!important}.syntaxhighlighter .toolbar a{color:white!important}.syntaxhighlighter .toolbar a:hover{color:black!important}.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black!important}.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#008200!important}.syntaxhighlighter .string,.syntaxhighlighter .string a{color:blue!important}.syntaxhighlighter .keyword{color:#ff7800!important}.syntaxhighlighter .preprocessor{color:gray!important}.syntaxhighlighter .variable{color:#a70!important}.syntaxhighlighter .value{color:#090!important}.syntaxhighlighter .functions{color:#ff1493!important}.syntaxhighlighter .constants{color:#06c!important}.syntaxhighlighter .script{font-weight:bold!important;color:#ff7800!important;background-color:none!important}.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray!important}.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493!important}.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red!important}.syntaxhighlighter .keyword{font-weight:bold!important} -------------------------------------------------------------------------------- /static/ueditor/third-party/codemirror/codemirror.css: -------------------------------------------------------------------------------- 1 | .CodeMirror { 2 | line-height: 1em; 3 | font-family: monospace; 4 | } 5 | 6 | .CodeMirror-scroll { 7 | overflow: auto; 8 | height: 300px; 9 | /* This is needed to prevent an IE[67] bug where the scrolled content 10 | is visible outside of the scrolling box. */ 11 | position: relative; 12 | } 13 | 14 | .CodeMirror-gutter { 15 | position: absolute; left: 0; top: 0; 16 | z-index: 10; 17 | background-color: #f7f7f7; 18 | border-right: 1px solid #eee; 19 | min-width: 2em; 20 | height: 100%; 21 | } 22 | .CodeMirror-gutter-text { 23 | color: #aaa; 24 | text-align: right; 25 | padding: .4em .2em .4em .4em; 26 | white-space: pre !important; 27 | } 28 | .CodeMirror-lines { 29 | padding: .4em; 30 | } 31 | 32 | .CodeMirror pre { 33 | -moz-border-radius: 0; 34 | -webkit-border-radius: 0; 35 | -o-border-radius: 0; 36 | border-radius: 0; 37 | border-width: 0; margin: 0; padding: 0; background: transparent; 38 | font-family: inherit; 39 | font-size: inherit; 40 | padding: 0; margin: 0; 41 | white-space: pre; 42 | word-wrap: normal; 43 | } 44 | 45 | .CodeMirror-wrap pre { 46 | word-wrap: break-word; 47 | white-space: pre-wrap; 48 | } 49 | .CodeMirror-wrap .CodeMirror-scroll { 50 | overflow-x: hidden; 51 | } 52 | 53 | .CodeMirror textarea { 54 | outline: none !important; 55 | } 56 | 57 | .CodeMirror pre.CodeMirror-cursor { 58 | z-index: 10; 59 | position: absolute; 60 | visibility: hidden; 61 | border-left: 1px solid black; 62 | } 63 | .CodeMirror-focused pre.CodeMirror-cursor { 64 | visibility: visible; 65 | } 66 | 67 | span.CodeMirror-selected { background: #d9d9d9; } 68 | .CodeMirror-focused span.CodeMirror-selected { background: #d2dcf8; } 69 | 70 | .CodeMirror-searching {background: #ffa;} 71 | 72 | /* Default theme */ 73 | 74 | .cm-s-default span.cm-keyword {color: #708;} 75 | .cm-s-default span.cm-atom {color: #219;} 76 | .cm-s-default span.cm-number {color: #164;} 77 | .cm-s-default span.cm-def {color: #00f;} 78 | .cm-s-default span.cm-variable {color: black;} 79 | .cm-s-default span.cm-variable-2 {color: #05a;} 80 | .cm-s-default span.cm-variable-3 {color: #085;} 81 | .cm-s-default span.cm-property {color: black;} 82 | .cm-s-default span.cm-operator {color: black;} 83 | .cm-s-default span.cm-comment {color: #a50;} 84 | .cm-s-default span.cm-string {color: #a11;} 85 | .cm-s-default span.cm-string-2 {color: #f50;} 86 | .cm-s-default span.cm-meta {color: #555;} 87 | .cm-s-default span.cm-error {color: #f00;} 88 | .cm-s-default span.cm-qualifier {color: #555;} 89 | .cm-s-default span.cm-builtin {color: #30a;} 90 | .cm-s-default span.cm-bracket {color: #cc7;} 91 | .cm-s-default span.cm-tag {color: #170;} 92 | .cm-s-default span.cm-attribute {color: #00c;} 93 | .cm-s-default span.cm-header {color: #a0a;} 94 | .cm-s-default span.cm-quote {color: #090;} 95 | .cm-s-default span.cm-hr {color: #999;} 96 | .cm-s-default span.cm-link {color: #00c;} 97 | 98 | span.cm-header, span.cm-strong {font-weight: bold;} 99 | span.cm-em {font-style: italic;} 100 | span.cm-emstrong {font-style: italic; font-weight: bold;} 101 | span.cm-link {text-decoration: underline;} 102 | 103 | div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} 104 | div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} 105 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/adapters/mootools-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | MooTools adapter 4 | 5 | (c) 2010-2013 Torstein Hønsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(){var e=window,h=document,f=e.MooTools.version.substring(0,3),i=f==="1.2"||f==="1.1",j=i||f==="1.3",g=e.$extend||function(){return Object.append.apply(Object,arguments)};e.HighchartsAdapter={init:function(a){var b=Fx.prototype,c=b.start,d=Fx.Morph.prototype,e=d.compute;b.start=function(b,d){var e=this.element;if(b.d)this.paths=a.init(e,e.d,this.toD);c.apply(this,arguments);return this};d.compute=function(b,c,d){var f=this.paths;if(f)this.element.attr("d",a.step(f[0],f[1],d,this.toD));else return e.apply(this, 10 | arguments)}},adapterRun:function(a,b){if(b==="width"||b==="height")return parseInt($(a).getStyle(b),10)},getScript:function(a,b){var c=h.getElementsByTagName("head")[0],d=h.createElement("script");d.type="text/javascript";d.src=a;d.onload=b;c.appendChild(d)},animate:function(a,b,c){var d=a.attr,f=c&&c.complete;if(d&&!a.setStyle)a.getStyle=a.attr,a.setStyle=function(){var a=arguments;this.attr.call(this,a[0],a[1][0])},a.$family=function(){return!0};e.HighchartsAdapter.stop(a);c=new Fx.Morph(d?a:$(a), 11 | g({transition:Fx.Transitions.Quad.easeInOut},c));if(d)c.element=a;if(b.d)c.toD=b.d;f&&c.addEvent("complete",f);c.start(b);a.fx=c},each:function(a,b){return i?$each(a,b):Array.each(a,b)},map:function(a,b){return a.map(b)},grep:function(a,b){return a.filter(b)},inArray:function(a,b,c){return b?b.indexOf(a,c):-1},offset:function(a){a=a.getPosition();return{left:a.x,top:a.y}},extendWithEvents:function(a){a.addEvent||(a.nodeName?$(a):g(a,new Events))},addEvent:function(a,b,c){typeof b==="string"&&(b=== 12 | "unload"&&(b="beforeunload"),e.HighchartsAdapter.extendWithEvents(a),a.addEvent(b,c))},removeEvent:function(a,b,c){typeof a!=="string"&&a.addEvent&&(b?(b==="unload"&&(b="beforeunload"),c?a.removeEvent(b,c):a.removeEvents&&a.removeEvents(b)):a.removeEvents())},fireEvent:function(a,b,c,d){b={type:b,target:a};b=j?new Event(b):new DOMEvent(b);b=g(b,c);if(!b.target&&b.event)b.target=b.event.target;b.preventDefault=function(){d=null};a.fireEvent&&a.fireEvent(b.type,b);d&&d(b)},washMouseEvent:function(a){if(a.page)a.pageX= 13 | a.page.x,a.pageY=a.page.y;return a},stop:function(a){a.fx&&a.fx.cancel()}}})(); 14 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/adapters/mootools-adapter.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Highcharts JS v3.0.6 (2013-10-04) 3 | * MooTools adapter 4 | * 5 | * (c) 2010-2013 Torstein Hønsi 6 | * 7 | * License: www.highcharts.com/license 8 | */ 9 | 10 | // JSLint options: 11 | /*global Fx, $, $extend, $each, $merge, Events, Event, DOMEvent */ 12 | 13 | (function () { 14 | 15 | var win = window, 16 | doc = document, 17 | mooVersion = win.MooTools.version.substring(0, 3), // Get the first three characters of the version number 18 | legacy = mooVersion === '1.2' || mooVersion === '1.1', // 1.1 && 1.2 considered legacy, 1.3 is not. 19 | legacyEvent = legacy || mooVersion === '1.3', // In versions 1.1 - 1.3 the event class is named Event, in newer versions it is named DOMEvent. 20 | $extend = win.$extend || function () { 21 | return Object.append.apply(Object, arguments); 22 | }; 23 | 24 | win.HighchartsAdapter = { 25 | /** 26 | * Initialize the adapter. This is run once as Highcharts is first run. 27 | * @param {Object} pathAnim The helper object to do animations across adapters. 28 | */ 29 | init: function (pathAnim) { 30 | var fxProto = Fx.prototype, 31 | fxStart = fxProto.start, 32 | morphProto = Fx.Morph.prototype, 33 | morphCompute = morphProto.compute; 34 | 35 | // override Fx.start to allow animation of SVG element wrappers 36 | /*jslint unparam: true*//* allow unused parameters in fx functions */ 37 | fxProto.start = function (from, to) { 38 | var fx = this, 39 | elem = fx.element; 40 | 41 | // special for animating paths 42 | if (from.d) { 43 | //this.fromD = this.element.d.split(' '); 44 | fx.paths = pathAnim.init( 45 | elem, 46 | elem.d, 47 | fx.toD 48 | ); 49 | } 50 | fxStart.apply(fx, arguments); 51 | 52 | return this; // chainable 53 | }; 54 | 55 | // override Fx.step to allow animation of SVG element wrappers 56 | morphProto.compute = function (from, to, delta) { 57 | var fx = this, 58 | paths = fx.paths; 59 | 60 | if (paths) { 61 | fx.element.attr( 62 | 'd', 63 | pathAnim.step(paths[0], paths[1], delta, fx.toD) 64 | ); 65 | } else { 66 | return morphCompute.apply(fx, arguments); 67 | } 68 | }; 69 | /*jslint unparam: false*/ 70 | }, 71 | 72 | /** 73 | * Run a general method on the framework, following jQuery syntax 74 | * @param {Object} el The HTML element 75 | * @param {String} method Which method to run on the wrapped element 76 | */ 77 | adapterRun: function (el, method) { 78 | 79 | // This currently works for getting inner width and height. If adding 80 | // more methods later, we need a conditional implementation for each. 81 | if (method === 'width' || method === 'height') { 82 | return parseInt($(el).getStyle(method), 10); 83 | } 84 | }, 85 | 86 | /** 87 | * Downloads a script and executes a callback when done. 88 | * @param {String} scriptLocation 89 | * @param {Function} callback 90 | */ 91 | getScript: function (scriptLocation, callback) { 92 | // We cannot assume that Assets class from mootools-more is available so instead insert a script tag to download script. 93 | var head = doc.getElementsByTagName('head')[0]; 94 | var script = doc.createElement('script'); 95 | 96 | script.type = 'text/javascript'; 97 | script.src = scriptLocation; 98 | script.onload = callback; 99 | 100 | head.appendChild(script); 101 | }, 102 | 103 | /** 104 | * Animate a HTML element or SVG element wrapper 105 | * @param {Object} el 106 | * @param {Object} params 107 | * @param {Object} options jQuery-like animation options: duration, easing, callback 108 | */ 109 | animate: function (el, params, options) { 110 | var isSVGElement = el.attr, 111 | effect, 112 | complete = options && options.complete; 113 | 114 | if (isSVGElement && !el.setStyle) { 115 | // add setStyle and getStyle methods for internal use in Moo 116 | el.getStyle = el.attr; 117 | el.setStyle = function () { // property value is given as array in Moo - break it down 118 | var args = arguments; 119 | this.attr.call(this, args[0], args[1][0]); 120 | }; 121 | // dirty hack to trick Moo into handling el as an element wrapper 122 | el.$family = function () { return true; }; 123 | } 124 | 125 | // stop running animations 126 | win.HighchartsAdapter.stop(el); 127 | 128 | // define and run the effect 129 | effect = new Fx.Morph( 130 | isSVGElement ? el : $(el), 131 | $extend({ 132 | transition: Fx.Transitions.Quad.easeInOut 133 | }, options) 134 | ); 135 | 136 | // Make sure that the element reference is set when animating svg elements 137 | if (isSVGElement) { 138 | effect.element = el; 139 | } 140 | 141 | // special treatment for paths 142 | if (params.d) { 143 | effect.toD = params.d; 144 | } 145 | 146 | // jQuery-like events 147 | if (complete) { 148 | effect.addEvent('complete', complete); 149 | } 150 | 151 | // run 152 | effect.start(params); 153 | 154 | // record for use in stop method 155 | el.fx = effect; 156 | }, 157 | 158 | /** 159 | * MooTool's each function 160 | * 161 | */ 162 | each: function (arr, fn) { 163 | return legacy ? 164 | $each(arr, fn) : 165 | Array.each(arr, fn); 166 | }, 167 | 168 | /** 169 | * Map an array 170 | * @param {Array} arr 171 | * @param {Function} fn 172 | */ 173 | map: function (arr, fn) { 174 | return arr.map(fn); 175 | }, 176 | 177 | /** 178 | * Grep or filter an array 179 | * @param {Array} arr 180 | * @param {Function} fn 181 | */ 182 | grep: function (arr, fn) { 183 | return arr.filter(fn); 184 | }, 185 | 186 | /** 187 | * Return the index of an item in an array, or -1 if not matched 188 | */ 189 | inArray: function (item, arr, from) { 190 | return arr ? arr.indexOf(item, from) : -1; 191 | }, 192 | 193 | /** 194 | * Get the offset of an element relative to the top left corner of the web page 195 | */ 196 | offset: function (el) { 197 | var offsets = el.getPosition(); // #1496 198 | return { 199 | left: offsets.x, 200 | top: offsets.y 201 | }; 202 | }, 203 | 204 | /** 205 | * Extends an object with Events, if its not done 206 | */ 207 | extendWithEvents: function (el) { 208 | // if the addEvent method is not defined, el is a custom Highcharts object 209 | // like series or point 210 | if (!el.addEvent) { 211 | if (el.nodeName) { 212 | el = $(el); // a dynamically generated node 213 | } else { 214 | $extend(el, new Events()); // a custom object 215 | } 216 | } 217 | }, 218 | 219 | /** 220 | * Add an event listener 221 | * @param {Object} el HTML element or custom object 222 | * @param {String} type Event type 223 | * @param {Function} fn Event handler 224 | */ 225 | addEvent: function (el, type, fn) { 226 | if (typeof type === 'string') { // chart broke due to el being string, type function 227 | 228 | if (type === 'unload') { // Moo self destructs before custom unload events 229 | type = 'beforeunload'; 230 | } 231 | 232 | win.HighchartsAdapter.extendWithEvents(el); 233 | 234 | el.addEvent(type, fn); 235 | } 236 | }, 237 | 238 | removeEvent: function (el, type, fn) { 239 | if (typeof el === 'string') { 240 | // el.removeEvents below apperantly calls this method again. Do not quite understand why, so for now just bail out. 241 | return; 242 | } 243 | 244 | if (el.addEvent) { // If el doesn't have an addEvent method, there are no events to remove 245 | if (type) { 246 | if (type === 'unload') { // Moo self destructs before custom unload events 247 | type = 'beforeunload'; 248 | } 249 | 250 | if (fn) { 251 | el.removeEvent(type, fn); 252 | } else if (el.removeEvents) { // #958 253 | el.removeEvents(type); 254 | } 255 | } else { 256 | el.removeEvents(); 257 | } 258 | } 259 | }, 260 | 261 | fireEvent: function (el, event, eventArguments, defaultFunction) { 262 | var eventArgs = { 263 | type: event, 264 | target: el 265 | }; 266 | // create an event object that keeps all functions 267 | event = legacyEvent ? new Event(eventArgs) : new DOMEvent(eventArgs); 268 | event = $extend(event, eventArguments); 269 | 270 | // When running an event on the Chart.prototype, MooTools nests the target in event.event 271 | if (!event.target && event.event) { 272 | event.target = event.event.target; 273 | } 274 | 275 | // override the preventDefault function to be able to use 276 | // this for custom events 277 | event.preventDefault = function () { 278 | defaultFunction = null; 279 | }; 280 | // if fireEvent is not available on the object, there hasn't been added 281 | // any events to it above 282 | if (el.fireEvent) { 283 | el.fireEvent(event.type, event); 284 | } 285 | 286 | // fire the default if it is passed and it is not prevented above 287 | if (defaultFunction) { 288 | defaultFunction(event); 289 | } 290 | }, 291 | 292 | /** 293 | * Set back e.pageX and e.pageY that MooTools has abstracted away. #1165, #1346. 294 | */ 295 | washMouseEvent: function (e) { 296 | if (e.page) { 297 | e.pageX = e.page.x; 298 | e.pageY = e.page.y; 299 | } 300 | return e; 301 | }, 302 | 303 | /** 304 | * Stop running animations on the object 305 | */ 306 | stop: function (el) { 307 | if (el.fx) { 308 | el.fx.cancel(); 309 | } 310 | } 311 | }; 312 | 313 | }()); 314 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/adapters/prototype-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Prototype adapter 4 | 5 | @author Michael Nelson, Torstein Hønsi. 6 | 7 | Feel free to use and modify this script. 8 | Highcharts license: www.highcharts.com/license. 9 | */ 10 | var HighchartsAdapter=function(){var f=typeof Effect!=="undefined";return{init:function(a){if(f)Effect.HighchartsTransition=Class.create(Effect.Base,{initialize:function(b,c,d,g){var e;this.element=b;this.key=c;e=b.attr?b.attr(c):$(b).getStyle(c);if(c==="d")this.paths=a.init(b,b.d,d),this.toD=d,e=0,d=1;this.start(Object.extend(g||{},{from:e,to:d,attribute:c}))},setup:function(){HighchartsAdapter._extend(this.element);if(!this.element._highchart_animation)this.element._highchart_animation={};this.element._highchart_animation[this.key]= 11 | this},update:function(b){var c=this.paths,d=this.element;c&&(b=a.step(c[0],c[1],b,this.toD));d.attr?d.element&&d.attr(this.options.attribute,b):(c={},c[this.options.attribute]=b,$(d).setStyle(c))},finish:function(){this.element&&this.element._highchart_animation&&delete this.element._highchart_animation[this.key]}})},adapterRun:function(a,b){return parseInt($(a).getStyle(b),10)},getScript:function(a,b){var c=$$("head")[0];c&&c.appendChild((new Element("script",{type:"text/javascript",src:a})).observe("load", 12 | b))},addNS:function(a){var b=/^(?:click|mouse(?:down|up|over|move|out))$/;return/^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/.test(a)||b.test(a)?a:"h:"+a},addEvent:function(a,b,c){a.addEventListener||a.attachEvent?Event.observe($(a),HighchartsAdapter.addNS(b),c):(HighchartsAdapter._extend(a),a._highcharts_observe(b,c))},animate:function(a,b,c){var d,c=c||{};c.delay=0;c.duration=(c.duration||500)/1E3;c.afterFinish=c.complete;if(f)for(d in b)new Effect.HighchartsTransition($(a), 13 | d,b[d],c);else{if(a.attr)for(d in b)a.attr(d,b[d]);c.complete&&c.complete()}a.attr||$(a).setStyle(b)},stop:function(a){var b;if(a._highcharts_extended&&a._highchart_animation)for(b in a._highchart_animation)a._highchart_animation[b].cancel()},each:function(a,b){$A(a).each(b)},inArray:function(a,b,c){return b?b.indexOf(a,c):-1},offset:function(a){return $(a).cumulativeOffset()},fireEvent:function(a,b,c,d){a.fire?a.fire(HighchartsAdapter.addNS(b),c):a._highcharts_extended&&(c=c||{},a._highcharts_fire(b, 14 | c));c&&c.defaultPrevented&&(d=null);d&&d(c)},removeEvent:function(a,b,c){$(a).stopObserving&&(b&&(b=HighchartsAdapter.addNS(b)),$(a).stopObserving(b,c));window===a?Event.stopObserving(a,b,c):(HighchartsAdapter._extend(a),a._highcharts_stop_observing(b,c))},washMouseEvent:function(a){return a},grep:function(a,b){return a.findAll(b)},map:function(a,b){return a.map(b)},_extend:function(a){a._highcharts_extended||Object.extend(a,{_highchart_events:{},_highchart_animation:null,_highcharts_extended:!0, 15 | _highcharts_observe:function(b,a){this._highchart_events[b]=[this._highchart_events[b],a].compact().flatten()},_highcharts_stop_observing:function(b,a){b?a?this._highchart_events[b]=[this._highchart_events[b]].compact().flatten().without(a):delete this._highchart_events[b]:this._highchart_events={}},_highcharts_fire:function(a,c){var d=this;(this._highchart_events[a]||[]).each(function(a){if(!c.stopped)c.preventDefault=function(){c.defaultPrevented=!0},c.target=d,a.bind(this)(c)===!1&&c.preventDefault()}.bind(this))}})}}}(); 16 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/adapters/prototype-adapter.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Highcharts JS v3.0.6 (2013-10-04) 3 | * Prototype adapter 4 | * 5 | * @author Michael Nelson, Torstein Hønsi. 6 | * 7 | * Feel free to use and modify this script. 8 | * Highcharts license: www.highcharts.com/license. 9 | */ 10 | 11 | // JSLint options: 12 | /*global Effect, Class, Event, Element, $, $$, $A */ 13 | 14 | // Adapter interface between prototype and the Highcharts charting library 15 | var HighchartsAdapter = (function () { 16 | 17 | var hasEffect = typeof Effect !== 'undefined'; 18 | 19 | return { 20 | 21 | /** 22 | * Initialize the adapter. This is run once as Highcharts is first run. 23 | * @param {Object} pathAnim The helper object to do animations across adapters. 24 | */ 25 | init: function (pathAnim) { 26 | if (hasEffect) { 27 | /** 28 | * Animation for Highcharts SVG element wrappers only 29 | * @param {Object} element 30 | * @param {Object} attribute 31 | * @param {Object} to 32 | * @param {Object} options 33 | */ 34 | Effect.HighchartsTransition = Class.create(Effect.Base, { 35 | initialize: function (element, attr, to, options) { 36 | var from, 37 | opts; 38 | 39 | this.element = element; 40 | this.key = attr; 41 | from = element.attr ? element.attr(attr) : $(element).getStyle(attr); 42 | 43 | // special treatment for paths 44 | if (attr === 'd') { 45 | this.paths = pathAnim.init( 46 | element, 47 | element.d, 48 | to 49 | ); 50 | this.toD = to; 51 | 52 | 53 | // fake values in order to read relative position as a float in update 54 | from = 0; 55 | to = 1; 56 | } 57 | 58 | opts = Object.extend((options || {}), { 59 | from: from, 60 | to: to, 61 | attribute: attr 62 | }); 63 | this.start(opts); 64 | }, 65 | setup: function () { 66 | HighchartsAdapter._extend(this.element); 67 | // If this is the first animation on this object, create the _highcharts_animation helper that 68 | // contain pointers to the animation objects. 69 | if (!this.element._highchart_animation) { 70 | this.element._highchart_animation = {}; 71 | } 72 | 73 | // Store a reference to this animation instance. 74 | this.element._highchart_animation[this.key] = this; 75 | }, 76 | update: function (position) { 77 | var paths = this.paths, 78 | element = this.element, 79 | obj; 80 | 81 | if (paths) { 82 | position = pathAnim.step(paths[0], paths[1], position, this.toD); 83 | } 84 | 85 | if (element.attr) { // SVGElement 86 | 87 | if (element.element) { // If not, it has been destroyed (#1405) 88 | element.attr(this.options.attribute, position); 89 | } 90 | 91 | } else { // HTML, #409 92 | obj = {}; 93 | obj[this.options.attribute] = position; 94 | $(element).setStyle(obj); 95 | } 96 | 97 | }, 98 | finish: function () { 99 | // Delete the property that holds this animation now that it is finished. 100 | // Both canceled animations and complete ones gets a 'finish' call. 101 | if (this.element && this.element._highchart_animation) { // #1405 102 | delete this.element._highchart_animation[this.key]; 103 | } 104 | } 105 | }); 106 | } 107 | }, 108 | 109 | /** 110 | * Run a general method on the framework, following jQuery syntax 111 | * @param {Object} el The HTML element 112 | * @param {String} method Which method to run on the wrapped element 113 | */ 114 | adapterRun: function (el, method) { 115 | 116 | // This currently works for getting inner width and height. If adding 117 | // more methods later, we need a conditional implementation for each. 118 | return parseInt($(el).getStyle(method), 10); 119 | 120 | }, 121 | 122 | /** 123 | * Downloads a script and executes a callback when done. 124 | * @param {String} scriptLocation 125 | * @param {Function} callback 126 | */ 127 | getScript: function (scriptLocation, callback) { 128 | var head = $$('head')[0]; // Returns an array, so pick the first element. 129 | if (head) { 130 | // Append a new 'script' element, set its type and src attributes, add a 'load' handler that calls the callback 131 | head.appendChild(new Element('script', { type: 'text/javascript', src: scriptLocation}).observe('load', callback)); 132 | } 133 | }, 134 | 135 | /** 136 | * Custom events in prototype needs to be namespaced. This method adds a namespace 'h:' in front of 137 | * events that are not recognized as native. 138 | */ 139 | addNS: function (eventName) { 140 | var HTMLEvents = /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/, 141 | MouseEvents = /^(?:click|mouse(?:down|up|over|move|out))$/; 142 | return (HTMLEvents.test(eventName) || MouseEvents.test(eventName)) ? 143 | eventName : 144 | 'h:' + eventName; 145 | }, 146 | 147 | // el needs an event to be attached. el is not necessarily a dom element 148 | addEvent: function (el, event, fn) { 149 | if (el.addEventListener || el.attachEvent) { 150 | Event.observe($(el), HighchartsAdapter.addNS(event), fn); 151 | 152 | } else { 153 | HighchartsAdapter._extend(el); 154 | el._highcharts_observe(event, fn); 155 | } 156 | }, 157 | 158 | // motion makes things pretty. use it if effects is loaded, if not... still get to the end result. 159 | animate: function (el, params, options) { 160 | var key, 161 | fx; 162 | 163 | // default options 164 | options = options || {}; 165 | options.delay = 0; 166 | options.duration = (options.duration || 500) / 1000; 167 | options.afterFinish = options.complete; 168 | 169 | // animate wrappers and DOM elements 170 | if (hasEffect) { 171 | for (key in params) { 172 | // The fx variable is seemingly thrown away here, but the Effect.setup will add itself to the _highcharts_animation object 173 | // on the element itself so its not really lost. 174 | fx = new Effect.HighchartsTransition($(el), key, params[key], options); 175 | } 176 | } else { 177 | if (el.attr) { // #409 without effects 178 | for (key in params) { 179 | el.attr(key, params[key]); 180 | } 181 | } 182 | if (options.complete) { 183 | options.complete(); 184 | } 185 | } 186 | 187 | if (!el.attr) { // HTML element, #409 188 | $(el).setStyle(params); 189 | } 190 | }, 191 | 192 | // this only occurs in higcharts 2.0+ 193 | stop: function (el) { 194 | var key; 195 | if (el._highcharts_extended && el._highchart_animation) { 196 | for (key in el._highchart_animation) { 197 | // Cancel the animation 198 | // The 'finish' function in the Effect object will remove the reference 199 | el._highchart_animation[key].cancel(); 200 | } 201 | } 202 | }, 203 | 204 | // um.. each 205 | each: function (arr, fn) { 206 | $A(arr).each(fn); 207 | }, 208 | 209 | inArray: function (item, arr, from) { 210 | return arr ? arr.indexOf(item, from) : -1; 211 | }, 212 | 213 | /** 214 | * Get the cumulative offset relative to the top left of the page. This method, unlike its 215 | * jQuery and MooTools counterpart, still suffers from issue #208 regarding the position 216 | * of a chart within a fixed container. 217 | */ 218 | offset: function (el) { 219 | return $(el).cumulativeOffset(); 220 | }, 221 | 222 | // fire an event based on an event name (event) and an object (el). 223 | // again, el may not be a dom element 224 | fireEvent: function (el, event, eventArguments, defaultFunction) { 225 | if (el.fire) { 226 | el.fire(HighchartsAdapter.addNS(event), eventArguments); 227 | } else if (el._highcharts_extended) { 228 | eventArguments = eventArguments || {}; 229 | el._highcharts_fire(event, eventArguments); 230 | } 231 | 232 | if (eventArguments && eventArguments.defaultPrevented) { 233 | defaultFunction = null; 234 | } 235 | 236 | if (defaultFunction) { 237 | defaultFunction(eventArguments); 238 | } 239 | }, 240 | 241 | removeEvent: function (el, event, handler) { 242 | if ($(el).stopObserving) { 243 | if (event) { 244 | event = HighchartsAdapter.addNS(event); 245 | } 246 | $(el).stopObserving(event, handler); 247 | } if (window === el) { 248 | Event.stopObserving(el, event, handler); 249 | } else { 250 | HighchartsAdapter._extend(el); 251 | el._highcharts_stop_observing(event, handler); 252 | } 253 | }, 254 | 255 | washMouseEvent: function (e) { 256 | return e; 257 | }, 258 | 259 | // um, grep 260 | grep: function (arr, fn) { 261 | return arr.findAll(fn); 262 | }, 263 | 264 | // um, map 265 | map: function (arr, fn) { 266 | return arr.map(fn); 267 | }, 268 | 269 | // extend an object to handle highchart events (highchart objects, not svg elements). 270 | // this is a very simple way of handling events but whatever, it works (i think) 271 | _extend: function (object) { 272 | if (!object._highcharts_extended) { 273 | Object.extend(object, { 274 | _highchart_events: {}, 275 | _highchart_animation: null, 276 | _highcharts_extended: true, 277 | _highcharts_observe: function (name, fn) { 278 | this._highchart_events[name] = [this._highchart_events[name], fn].compact().flatten(); 279 | }, 280 | _highcharts_stop_observing: function (name, fn) { 281 | if (name) { 282 | if (fn) { 283 | this._highchart_events[name] = [this._highchart_events[name]].compact().flatten().without(fn); 284 | } else { 285 | delete this._highchart_events[name]; 286 | } 287 | } else { 288 | this._highchart_events = {}; 289 | } 290 | }, 291 | _highcharts_fire: function (name, args) { 292 | var target = this; 293 | (this._highchart_events[name] || []).each(function (fn) { 294 | // args is never null here 295 | if (args.stopped) { 296 | return; // "throw $break" wasn't working. i think because of the scope of 'this'. 297 | } 298 | 299 | // Attach a simple preventDefault function to skip default handler if called 300 | args.preventDefault = function () { 301 | args.defaultPrevented = true; 302 | }; 303 | args.target = target; 304 | 305 | // If the event handler return false, prevent the default handler from executing 306 | if (fn.bind(this)(args) === false) { 307 | args.preventDefault(); 308 | } 309 | } 310 | .bind(this)); 311 | } 312 | }); 313 | } 314 | } 315 | }; 316 | }()); 317 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/adapters/standalone-framework.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | 4 | Standalone Highcharts Framework 5 | 6 | License: MIT License 7 | */ 8 | var HighchartsAdapter=function(){function o(c){function a(a,b,d){a.removeEventListener(b,d,!1)}function d(a,b,d){d=a.HCProxiedMethods[d.toString()];a.detachEvent("on"+b,d)}function b(b,c){var f=b.HCEvents,i,g,k,j;if(b.removeEventListener)i=a;else if(b.attachEvent)i=d;else return;c?(g={},g[c]=!0):g=f;for(j in g)if(f[j])for(k=f[j].length;k--;)i(b,j,f[j][k])}c.HCExtended||Highcharts.extend(c,{HCExtended:!0,HCEvents:{},bind:function(b,a){var d=this,c=this.HCEvents,g;if(d.addEventListener)d.addEventListener(b, 9 | a,!1);else if(d.attachEvent){g=function(b){a.call(d,b)};if(!d.HCProxiedMethods)d.HCProxiedMethods={};d.HCProxiedMethods[a.toString()]=g;d.attachEvent("on"+b,g)}c[b]===r&&(c[b]=[]);c[b].push(a)},unbind:function(c,h){var f,i;c?(f=this.HCEvents[c]||[],h?(i=HighchartsAdapter.inArray(h,f),i>-1&&(f.splice(i,1),this.HCEvents[c]=f),this.removeEventListener?a(this,c,h):this.attachEvent&&d(this,c,h)):(b(this,c),this.HCEvents[c]=[])):(b(this),this.HCEvents={})},trigger:function(b,a){var d=this.HCEvents[b]|| 10 | [],c=d.length,g,k,j;k=function(){a.defaultPrevented=!0};for(g=0;g=b.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();a=this.options.curAnim[this.prop]= 14 | !0;for(e in b.curAnim)b.curAnim[e]!==!0&&(a=!1);a&&b.complete&&b.complete.call(this.elem);b=!1}else e=c-this.startTime,this.state=e/b.duration,this.pos=b.easing(e,0,1,b.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update(),b=!0;return b}};this.animate=function(a,d,b){var e,h="",f,i,g;a.stopAnimation=!1;if(typeof b!=="object"||b===null)e=arguments,b={duration:e[2],easing:e[3],complete:e[4]};if(typeof b.duration!=="number")b.duration=400;b.easing=Math[b.easing]||Math.easeInOutSine; 15 | b.curAnim=Highcharts.extend({},d);for(g in d)i=new n(a,b,g),f=null,g==="d"?(i.paths=c.init(a,a.d,d.d),i.toD=d.d,e=0,f=1):a.attr?e=a.attr(g):(e=parseFloat(HighchartsAdapter._getStyle(a,g))||0,g!=="opacity"&&(h="px")),f||(f=parseFloat(d[g])),i.custom(e,f,h)}},_getStyle:function(c,a){return window.getComputedStyle(c).getPropertyValue(a)},getScript:function(c,a){var d=l.getElementsByTagName("head")[0],b=l.createElement("script");b.type="text/javascript";b.src=c;b.onload=a;d.appendChild(b)},inArray:function(c, 16 | a){return a.indexOf?a.indexOf(c):p.indexOf.call(a,c)},adapterRun:function(c,a){return parseInt(HighchartsAdapter._getStyle(c,a),10)},grep:function(c,a){return p.filter.call(c,a)},map:function(c,a){for(var d=[],b=0,e=c.length;b -1) { 121 | events.splice(index, 1); 122 | this.HCEvents[name] = events; 123 | } 124 | if (this.removeEventListener) { 125 | removeOneEvent(this, name, fn); 126 | } else if (this.attachEvent) { 127 | IERemoveOneEvent(this, name, fn); 128 | } 129 | } else { 130 | removeAllEvents(this, name); 131 | this.HCEvents[name] = []; 132 | } 133 | } else { 134 | removeAllEvents(this); 135 | this.HCEvents = {}; 136 | } 137 | }, 138 | 139 | trigger: function (name, args) { 140 | var events = this.HCEvents[name] || [], 141 | target = this, 142 | len = events.length, 143 | i, 144 | preventDefault, 145 | fn; 146 | 147 | // Attach a simple preventDefault function to skip default handler if called 148 | preventDefault = function () { 149 | args.defaultPrevented = true; 150 | }; 151 | 152 | for (i = 0; i < len; i++) { 153 | fn = events[i]; 154 | 155 | // args is never null here 156 | if (args.stopped) { 157 | return; 158 | } 159 | 160 | args.preventDefault = preventDefault; 161 | args.target = target; 162 | args.type = name; // #2297 163 | 164 | // If the event handler return false, prevent the default handler from executing 165 | if (fn.call(this, args) === false) { 166 | args.preventDefault(); 167 | } 168 | } 169 | } 170 | }); 171 | } 172 | 173 | return obj; 174 | } 175 | 176 | 177 | return { 178 | /** 179 | * Initialize the adapter. This is run once as Highcharts is first run. 180 | */ 181 | init: function (pathAnim) { 182 | 183 | /** 184 | * Compatibility section to add support for legacy IE. This can be removed if old IE 185 | * support is not needed. 186 | */ 187 | if (!doc.defaultView) { 188 | this._getStyle = function (el, prop) { 189 | var val; 190 | if (el.style[prop]) { 191 | return el.style[prop]; 192 | } else { 193 | if (prop === 'opacity') { 194 | prop = 'filter'; 195 | } 196 | /*jslint unparam: true*/ 197 | val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b) { return b.toUpperCase(); })]; 198 | if (prop === 'filter') { 199 | val = val.replace( 200 | /alpha\(opacity=([0-9]+)\)/, 201 | function (a, b) { 202 | return b / 100; 203 | } 204 | ); 205 | } 206 | /*jslint unparam: false*/ 207 | return val === '' ? 1 : val; 208 | } 209 | }; 210 | this.adapterRun = function (elem, method) { 211 | var alias = { width: 'clientWidth', height: 'clientHeight' }[method]; 212 | 213 | if (alias) { 214 | elem.style.zoom = 1; 215 | return elem[alias] - 2 * parseInt(HighchartsAdapter._getStyle(elem, 'padding'), 10); 216 | } 217 | }; 218 | } 219 | 220 | if (!Array.prototype.forEach) { 221 | this.each = function (arr, fn) { // legacy 222 | var i = 0, 223 | len = arr.length; 224 | for (; i < len; i++) { 225 | if (fn.call(arr[i], arr[i], i, arr) === false) { 226 | return i; 227 | } 228 | } 229 | }; 230 | } 231 | 232 | if (!Array.prototype.indexOf) { 233 | this.inArray = function (item, arr) { 234 | var len, 235 | i = 0; 236 | 237 | if (arr) { 238 | len = arr.length; 239 | 240 | for (; i < len; i++) { 241 | if (arr[i] === item) { 242 | return i; 243 | } 244 | } 245 | } 246 | 247 | return -1; 248 | }; 249 | } 250 | 251 | if (!Array.prototype.filter) { 252 | this.grep = function (elements, callback) { 253 | var ret = [], 254 | i = 0, 255 | length = elements.length; 256 | 257 | for (; i < length; i++) { 258 | if (!!callback(elements[i], i)) { 259 | ret.push(elements[i]); 260 | } 261 | } 262 | 263 | return ret; 264 | }; 265 | } 266 | 267 | //--- End compatibility section --- 268 | 269 | 270 | /** 271 | * Start of animation specific code 272 | */ 273 | Fx = function (elem, options, prop) { 274 | this.options = options; 275 | this.elem = elem; 276 | this.prop = prop; 277 | }; 278 | Fx.prototype = { 279 | 280 | update: function () { 281 | var styles, 282 | paths = this.paths, 283 | elem = this.elem, 284 | elemelem = elem.element; // if destroyed, it is null 285 | 286 | // Animating a path definition on SVGElement 287 | if (paths && elemelem) { 288 | elem.attr('d', pathAnim.step(paths[0], paths[1], this.now, this.toD)); 289 | 290 | // Other animations on SVGElement 291 | } else if (elem.attr) { 292 | if (elemelem) { 293 | elem.attr(this.prop, this.now); 294 | } 295 | 296 | // HTML styles 297 | } else { 298 | styles = {}; 299 | styles[elem] = this.now + this.unit; 300 | Highcharts.css(elem, styles); 301 | } 302 | 303 | if (this.options.step) { 304 | this.options.step.call(this.elem, this.now, this); 305 | } 306 | 307 | }, 308 | custom: function (from, to, unit) { 309 | var self = this, 310 | t = function (gotoEnd) { 311 | return self.step(gotoEnd); 312 | }, 313 | i; 314 | 315 | this.startTime = +new Date(); 316 | this.start = from; 317 | this.end = to; 318 | this.unit = unit; 319 | this.now = this.start; 320 | this.pos = this.state = 0; 321 | 322 | t.elem = this.elem; 323 | 324 | if (t() && timers.push(t) === 1) { 325 | timerId = setInterval(function () { 326 | 327 | for (i = 0; i < timers.length; i++) { 328 | if (!timers[i]()) { 329 | timers.splice(i--, 1); 330 | } 331 | } 332 | 333 | if (!timers.length) { 334 | clearInterval(timerId); 335 | } 336 | }, 13); 337 | } 338 | }, 339 | 340 | step: function (gotoEnd) { 341 | var t = +new Date(), 342 | ret, 343 | done, 344 | options = this.options, 345 | i; 346 | 347 | if (this.elem.stopAnimation) { 348 | ret = false; 349 | 350 | } else if (gotoEnd || t >= options.duration + this.startTime) { 351 | this.now = this.end; 352 | this.pos = this.state = 1; 353 | this.update(); 354 | 355 | this.options.curAnim[this.prop] = true; 356 | 357 | done = true; 358 | for (i in options.curAnim) { 359 | if (options.curAnim[i] !== true) { 360 | done = false; 361 | } 362 | } 363 | 364 | if (done) { 365 | if (options.complete) { 366 | options.complete.call(this.elem); 367 | } 368 | } 369 | ret = false; 370 | 371 | } else { 372 | var n = t - this.startTime; 373 | this.state = n / options.duration; 374 | this.pos = options.easing(n, 0, 1, options.duration); 375 | this.now = this.start + ((this.end - this.start) * this.pos); 376 | this.update(); 377 | ret = true; 378 | } 379 | return ret; 380 | } 381 | }; 382 | 383 | /** 384 | * The adapter animate method 385 | */ 386 | this.animate = function (el, prop, opt) { 387 | var start, 388 | unit = '', 389 | end, 390 | fx, 391 | args, 392 | name; 393 | 394 | el.stopAnimation = false; // ready for new 395 | 396 | if (typeof opt !== 'object' || opt === null) { 397 | args = arguments; 398 | opt = { 399 | duration: args[2], 400 | easing: args[3], 401 | complete: args[4] 402 | }; 403 | } 404 | if (typeof opt.duration !== 'number') { 405 | opt.duration = 400; 406 | } 407 | opt.easing = Math[opt.easing] || Math.easeInOutSine; 408 | opt.curAnim = Highcharts.extend({}, prop); 409 | 410 | for (name in prop) { 411 | fx = new Fx(el, opt, name); 412 | end = null; 413 | 414 | if (name === 'd') { 415 | fx.paths = pathAnim.init( 416 | el, 417 | el.d, 418 | prop.d 419 | ); 420 | fx.toD = prop.d; 421 | start = 0; 422 | end = 1; 423 | } else if (el.attr) { 424 | start = el.attr(name); 425 | } else { 426 | start = parseFloat(HighchartsAdapter._getStyle(el, name)) || 0; 427 | if (name !== 'opacity') { 428 | unit = 'px'; 429 | } 430 | } 431 | 432 | if (!end) { 433 | end = parseFloat(prop[name]); 434 | } 435 | fx.custom(start, end, unit); 436 | } 437 | }; 438 | }, 439 | 440 | /** 441 | * Internal method to return CSS value for given element and property 442 | */ 443 | _getStyle: function (el, prop) { 444 | return window.getComputedStyle(el).getPropertyValue(prop); 445 | }, 446 | 447 | /** 448 | * Downloads a script and executes a callback when done. 449 | * @param {String} scriptLocation 450 | * @param {Function} callback 451 | */ 452 | getScript: function (scriptLocation, callback) { 453 | // We cannot assume that Assets class from mootools-more is available so instead insert a script tag to download script. 454 | var head = doc.getElementsByTagName('head')[0], 455 | script = doc.createElement('script'); 456 | 457 | script.type = 'text/javascript'; 458 | script.src = scriptLocation; 459 | script.onload = callback; 460 | 461 | head.appendChild(script); 462 | }, 463 | 464 | /** 465 | * Return the index of an item in an array, or -1 if not found 466 | */ 467 | inArray: function (item, arr) { 468 | return arr.indexOf ? arr.indexOf(item) : emptyArray.indexOf.call(arr, item); 469 | }, 470 | 471 | 472 | /** 473 | * A direct link to adapter methods 474 | */ 475 | adapterRun: function (elem, method) { 476 | return parseInt(HighchartsAdapter._getStyle(elem, method), 10); 477 | }, 478 | 479 | /** 480 | * Filter an array 481 | */ 482 | grep: function (elements, callback) { 483 | return emptyArray.filter.call(elements, callback); 484 | }, 485 | 486 | /** 487 | * Map an array 488 | */ 489 | map: function (arr, fn) { 490 | var results = [], i = 0, len = arr.length; 491 | 492 | for (; i < len; i++) { 493 | results[i] = fn.call(arr[i], arr[i], i, arr); 494 | } 495 | 496 | return results; 497 | }, 498 | 499 | offset: function (el) { 500 | var left = 0, 501 | top = 0; 502 | 503 | while (el) { 504 | left += el.offsetLeft; 505 | top += el.offsetTop; 506 | el = el.offsetParent; 507 | } 508 | 509 | return { 510 | left: left, 511 | top: top 512 | }; 513 | }, 514 | 515 | /** 516 | * Add an event listener 517 | */ 518 | addEvent: function (el, type, fn) { 519 | augment(el).bind(type, fn); 520 | }, 521 | 522 | /** 523 | * Remove event added with addEvent 524 | */ 525 | removeEvent: function (el, type, fn) { 526 | augment(el).unbind(type, fn); 527 | }, 528 | 529 | /** 530 | * Fire an event on a custom object 531 | */ 532 | fireEvent: function (el, type, eventArguments, defaultFunction) { 533 | var e; 534 | 535 | if (doc.createEvent && (el.dispatchEvent || el.fireEvent)) { 536 | e = doc.createEvent('Events'); 537 | e.initEvent(type, true, true); 538 | e.target = el; 539 | 540 | Highcharts.extend(e, eventArguments); 541 | 542 | if (el.dispatchEvent) { 543 | el.dispatchEvent(e); 544 | } else { 545 | el.fireEvent(type, e); 546 | } 547 | 548 | } else if (el.HCExtended === true) { 549 | eventArguments = eventArguments || {}; 550 | el.trigger(type, eventArguments); 551 | } 552 | 553 | if (eventArguments && eventArguments.defaultPrevented) { 554 | defaultFunction = null; 555 | } 556 | 557 | if (defaultFunction) { 558 | defaultFunction(eventArguments); 559 | } 560 | }, 561 | 562 | washMouseEvent: function (e) { 563 | return e; 564 | }, 565 | 566 | 567 | /** 568 | * Stop running animation 569 | */ 570 | stop: function (el) { 571 | el.stopAnimation = true; 572 | }, 573 | 574 | /** 575 | * Utility for iterating over an array. Parameters are reversed compared to jQuery. 576 | * @param {Array} arr 577 | * @param {Function} fn 578 | */ 579 | each: function (arr, fn) { // modern browsers 580 | return Array.prototype.forEach.call(arr, fn); 581 | } 582 | }; 583 | }()); 584 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/annotations.js: -------------------------------------------------------------------------------- 1 | (function(i,C){function m(a){return typeof a==="number"}function n(a){return a!==D&&a!==null}var D,p,r,s=i.Chart,t=i.extend,z=i.each;r=["path","rect","circle"];p={top:0,left:0,center:0.5,middle:0.5,bottom:1,right:1};var u=C.inArray,A=i.merge,B=function(){this.init.apply(this,arguments)};B.prototype={init:function(a,d){var c=d.shape&&d.shape.type;this.chart=a;var b,f;f={xAxis:0,yAxis:0,title:{style:{},text:"",x:0,y:0},shape:{params:{stroke:"#000000",fill:"transparent",strokeWidth:2}}};b={circle:{params:{x:0, 2 | y:0}}};if(b[c])f.shape=A(f.shape,b[c]);this.options=A({},f,d)},render:function(a){var d=this.chart,c=this.chart.renderer,b=this.group,f=this.title,e=this.shape,h=this.options,i=h.title,l=h.shape;if(!b)b=this.group=c.g();if(!e&&l&&u(l.type,r)!==-1)e=this.shape=c[h.shape.type](l.params),e.add(b);if(!f&&i)f=this.title=c.label(i),f.add(b);b.add(d.annotations.group);this.linkObjects();a!==!1&&this.redraw()},redraw:function(){var a=this.options,d=this.chart,c=this.group,b=this.title,f=this.shape,e=this.linkedObject, 3 | h=d.xAxis[a.xAxis],v=d.yAxis[a.yAxis],l=a.width,w=a.height,x=p[a.anchorY],y=p[a.anchorX],j,o,g,q;if(e)j=e instanceof i.Point?"point":e instanceof i.Series?"series":null,j==="point"?(a.xValue=e.x,a.yValue=e.y,o=e.series):j==="series"&&(o=e),c.visibility!==o.group.visibility&&c.attr({visibility:o.group.visibility});e=n(a.xValue)?h.toPixels(a.xValue+h.minPointOffset)-h.minPixelPadding:a.x;j=n(a.yValue)?v.toPixels(a.yValue):a.y;if(!isNaN(e)&&!isNaN(j)&&m(e)&&m(j)){b&&(b.attr(a.title),b.css(a.title.style)); 4 | if(f){b=t({},a.shape.params);if(a.units==="values"){for(g in b)u(g,["width","x"])>-1?b[g]=h.translate(b[g]):u(g,["height","y"])>-1&&(b[g]=v.translate(b[g]));b.width&&(b.width-=h.toPixels(0)-h.left);b.x&&(b.x+=h.minPixelPadding);if(a.shape.type==="path"){g=b.d;o=e;for(var r=j,s=g.length,k=0;k-1&&d.splice(c,1);z(["title","shape","group"],function(b){a[b]&&(a[b].destroy(),a[b]=null)});a.group=a.title=a.shape=a.chart=a.options=null},update:function(a,d){t(this.options,a);this.linkObjects();this.render(d)}, 6 | linkObjects:function(){var a=this.chart,d=this.linkedObject,c=d&&(d.id||d.options.id),b=this.options.linkedTo;if(n(b)){if(!n(d)||b!==c)this.linkedObject=a.get(b)}else this.linkedObject=null}};t(s.prototype,{annotations:{add:function(a,d){var c=this.allItems,b=this.chart,f,e;Object.prototype.toString.call(a)==="[object Array]"||(a=[a]);for(e=a.length;e--;)f=new B(b,a[e]),c.push(f),f.render(d)},redraw:function(){z(this.allItems,function(a){a.redraw()})}}});s.prototype.callbacks.push(function(a){var d= 7 | a.options.annotations,c;c=a.renderer.g("annotations");c.attr({zIndex:7});c.add();a.annotations.allItems=[];a.annotations.chart=a;a.annotations.group=c;Object.prototype.toString.call(d)==="[object Array]"&&d.length>0&&a.annotations.add(a.options.annotations);i.addEvent(a,"redraw",function(){a.annotations.redraw()})})})(Highcharts,HighchartsAdapter); 8 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/annotations.src.js: -------------------------------------------------------------------------------- 1 | (function (Highcharts, HighchartsAdapter) { 2 | 3 | var UNDEFINED, 4 | ALIGN_FACTOR, 5 | ALLOWED_SHAPES, 6 | Chart = Highcharts.Chart, 7 | extend = Highcharts.extend, 8 | each = Highcharts.each; 9 | 10 | ALLOWED_SHAPES = ["path", "rect", "circle"]; 11 | 12 | ALIGN_FACTOR = { 13 | top: 0, 14 | left: 0, 15 | center: 0.5, 16 | middle: 0.5, 17 | bottom: 1, 18 | right: 1 19 | }; 20 | 21 | 22 | // Highcharts helper methods 23 | var inArray = HighchartsAdapter.inArray, 24 | merge = Highcharts.merge; 25 | 26 | function defaultOptions(shapeType) { 27 | var shapeOptions, 28 | options; 29 | 30 | options = { 31 | xAxis: 0, 32 | yAxis: 0, 33 | title: { 34 | style: {}, 35 | text: "", 36 | x: 0, 37 | y: 0 38 | }, 39 | shape: { 40 | params: { 41 | stroke: "#000000", 42 | fill: "transparent", 43 | strokeWidth: 2 44 | } 45 | } 46 | }; 47 | 48 | shapeOptions = { 49 | circle: { 50 | params: { 51 | x: 0, 52 | y: 0 53 | } 54 | } 55 | }; 56 | 57 | if (shapeOptions[shapeType]) { 58 | options.shape = merge(options.shape, shapeOptions[shapeType]); 59 | } 60 | 61 | return options; 62 | } 63 | 64 | function isArray(obj) { 65 | return Object.prototype.toString.call(obj) === '[object Array]'; 66 | } 67 | 68 | function isNumber(n) { 69 | return typeof n === 'number'; 70 | } 71 | 72 | function defined(obj) { 73 | return obj !== UNDEFINED && obj !== null; 74 | } 75 | 76 | function translatePath(d, xAxis, yAxis, xOffset, yOffset) { 77 | var len = d.length, 78 | i = 0; 79 | 80 | while (i < len) { 81 | if (typeof d[i] === 'number' && typeof d[i + 1] === 'number') { 82 | d[i] = xAxis.toPixels(d[i]) - xOffset; 83 | d[i + 1] = yAxis.toPixels(d[i + 1]) - yOffset; 84 | i += 2; 85 | } else { 86 | i += 1; 87 | } 88 | } 89 | 90 | return d; 91 | } 92 | 93 | 94 | // Define annotation prototype 95 | var Annotation = function () { 96 | this.init.apply(this, arguments); 97 | }; 98 | Annotation.prototype = { 99 | /* 100 | * Initialize the annotation 101 | */ 102 | init: function (chart, options) { 103 | var shapeType = options.shape && options.shape.type; 104 | 105 | this.chart = chart; 106 | this.options = merge({}, defaultOptions(shapeType), options); 107 | }, 108 | 109 | /* 110 | * Render the annotation 111 | */ 112 | render: function (redraw) { 113 | var annotation = this, 114 | chart = this.chart, 115 | renderer = annotation.chart.renderer, 116 | group = annotation.group, 117 | title = annotation.title, 118 | shape = annotation.shape, 119 | options = annotation.options, 120 | titleOptions = options.title, 121 | shapeOptions = options.shape; 122 | 123 | if (!group) { 124 | group = annotation.group = renderer.g(); 125 | } 126 | 127 | 128 | if (!shape && shapeOptions && inArray(shapeOptions.type, ALLOWED_SHAPES) !== -1) { 129 | shape = annotation.shape = renderer[options.shape.type](shapeOptions.params); 130 | shape.add(group); 131 | } 132 | 133 | if (!title && titleOptions) { 134 | title = annotation.title = renderer.label(titleOptions); 135 | title.add(group); 136 | } 137 | 138 | group.add(chart.annotations.group); 139 | 140 | // link annotations to point or series 141 | annotation.linkObjects(); 142 | 143 | if (redraw !== false) { 144 | annotation.redraw(); 145 | } 146 | }, 147 | 148 | /* 149 | * Redraw the annotation title or shape after options update 150 | */ 151 | redraw: function () { 152 | var options = this.options, 153 | chart = this.chart, 154 | group = this.group, 155 | title = this.title, 156 | shape = this.shape, 157 | linkedTo = this.linkedObject, 158 | xAxis = chart.xAxis[options.xAxis], 159 | yAxis = chart.yAxis[options.yAxis], 160 | width = options.width, 161 | height = options.height, 162 | anchorY = ALIGN_FACTOR[options.anchorY], 163 | anchorX = ALIGN_FACTOR[options.anchorX], 164 | resetBBox = false, 165 | shapeParams, 166 | linkType, 167 | series, 168 | param, 169 | bbox, 170 | x, 171 | y; 172 | 173 | if (linkedTo) { 174 | linkType = (linkedTo instanceof Highcharts.Point) ? 'point' : 175 | (linkedTo instanceof Highcharts.Series) ? 'series' : null; 176 | 177 | if (linkType === 'point') { 178 | options.xValue = linkedTo.x; 179 | options.yValue = linkedTo.y; 180 | series = linkedTo.series; 181 | } else if (linkType === 'series') { 182 | series = linkedTo; 183 | } 184 | 185 | if (group.visibility !== series.group.visibility) { 186 | group.attr({ 187 | visibility: series.group.visibility 188 | }); 189 | } 190 | } 191 | 192 | 193 | // Based on given options find annotation pixel position 194 | x = (defined(options.xValue) ? xAxis.toPixels(options.xValue + xAxis.minPointOffset) - xAxis.minPixelPadding : options.x); 195 | y = defined(options.yValue) ? yAxis.toPixels(options.yValue) : options.y; 196 | 197 | if (isNaN(x) || isNaN(y) || !isNumber(x) || !isNumber(y)) { 198 | return; 199 | } 200 | 201 | 202 | if (title) { 203 | title.attr(options.title); 204 | title.css(options.title.style); 205 | resetBBox = true; 206 | } 207 | 208 | if (shape) { 209 | shapeParams = extend({}, options.shape.params); 210 | 211 | if (options.units === 'values') { 212 | for (param in shapeParams) { 213 | if (inArray(param, ['width', 'x']) > -1) { 214 | shapeParams[param] = xAxis.translate(shapeParams[param]); 215 | } else if (inArray(param, ['height', 'y']) > -1) { 216 | shapeParams[param] = yAxis.translate(shapeParams[param]); 217 | } 218 | } 219 | 220 | if (shapeParams.width) { 221 | shapeParams.width -= xAxis.toPixels(0) - xAxis.left; 222 | } 223 | 224 | if (shapeParams.x) { 225 | shapeParams.x += xAxis.minPixelPadding; 226 | } 227 | 228 | if (options.shape.type === 'path') { 229 | translatePath(shapeParams.d, xAxis, yAxis, x, y); 230 | } 231 | } 232 | 233 | // move the center of the circle to shape x/y 234 | if (options.shape.type === 'circle') { 235 | shapeParams.x += shapeParams.r; 236 | shapeParams.y += shapeParams.r; 237 | } 238 | 239 | resetBBox = true; 240 | shape.attr(shapeParams); 241 | } 242 | 243 | group.bBox = null; 244 | 245 | // If annotation width or height is not defined in options use bounding box size 246 | if (!isNumber(width)) { 247 | bbox = group.getBBox(); 248 | width = bbox.width; 249 | } 250 | 251 | if (!isNumber(height)) { 252 | // get bbox only if it wasn't set before 253 | if (!bbox) { 254 | bbox = group.getBBox(); 255 | } 256 | 257 | height = bbox.height; 258 | } 259 | 260 | // Calculate anchor point 261 | if (!isNumber(anchorX)) { 262 | anchorX = ALIGN_FACTOR.center; 263 | } 264 | 265 | if (!isNumber(anchorY)) { 266 | anchorY = ALIGN_FACTOR.center; 267 | } 268 | 269 | // Translate group according to its dimension and anchor point 270 | x = x - width * anchorX; 271 | y = y - height * anchorY; 272 | 273 | if (chart.animation && defined(group.translateX) && defined(group.translateY)) { 274 | group.animate({ 275 | translateX: x, 276 | translateY: y 277 | }); 278 | } else { 279 | group.translate(x, y); 280 | } 281 | }, 282 | 283 | /* 284 | * Destroy the annotation 285 | */ 286 | destroy: function () { 287 | var annotation = this, 288 | chart = this.chart, 289 | allItems = chart.annotations.allItems, 290 | index = allItems.indexOf(annotation); 291 | 292 | if (index > -1) { 293 | allItems.splice(index, 1); 294 | } 295 | 296 | each(['title', 'shape', 'group'], function (element) { 297 | if (annotation[element]) { 298 | annotation[element].destroy(); 299 | annotation[element] = null; 300 | } 301 | }); 302 | 303 | annotation.group = annotation.title = annotation.shape = annotation.chart = annotation.options = null; 304 | }, 305 | 306 | /* 307 | * Update the annotation with a given options 308 | */ 309 | update: function (options, redraw) { 310 | extend(this.options, options); 311 | 312 | // update link to point or series 313 | this.linkObjects(); 314 | 315 | this.render(redraw); 316 | }, 317 | 318 | linkObjects: function () { 319 | var annotation = this, 320 | chart = annotation.chart, 321 | linkedTo = annotation.linkedObject, 322 | linkedId = linkedTo && (linkedTo.id || linkedTo.options.id), 323 | options = annotation.options, 324 | id = options.linkedTo; 325 | 326 | if (!defined(id)) { 327 | annotation.linkedObject = null; 328 | } else if (!defined(linkedTo) || id !== linkedId) { 329 | annotation.linkedObject = chart.get(id); 330 | } 331 | } 332 | }; 333 | 334 | 335 | // Add annotations methods to chart prototype 336 | extend(Chart.prototype, { 337 | annotations: { 338 | /* 339 | * Unified method for adding annotations to the chart 340 | */ 341 | add: function (options, redraw) { 342 | var annotations = this.allItems, 343 | chart = this.chart, 344 | item, 345 | len; 346 | 347 | if (!isArray(options)) { 348 | options = [options]; 349 | } 350 | 351 | len = options.length; 352 | 353 | while (len--) { 354 | item = new Annotation(chart, options[len]); 355 | annotations.push(item); 356 | item.render(redraw); 357 | } 358 | }, 359 | 360 | /** 361 | * Redraw all annotations, method used in chart events 362 | */ 363 | redraw: function () { 364 | each(this.allItems, function (annotation) { 365 | annotation.redraw(); 366 | }); 367 | } 368 | } 369 | }); 370 | 371 | 372 | // Initialize on chart load 373 | Chart.prototype.callbacks.push(function (chart) { 374 | var options = chart.options.annotations, 375 | group; 376 | 377 | group = chart.renderer.g("annotations"); 378 | group.attr({ 379 | zIndex: 7 380 | }); 381 | group.add(); 382 | 383 | // initialize empty array for annotations 384 | chart.annotations.allItems = []; 385 | 386 | // link chart object to annotations 387 | chart.annotations.chart = chart; 388 | 389 | // link annotations group element to the chart 390 | chart.annotations.group = group; 391 | 392 | if (isArray(options) && options.length > 0) { 393 | chart.annotations.add(chart.options.annotations); 394 | } 395 | 396 | // update annotations after chart redraw 397 | Highcharts.addEvent(chart, 'redraw', function () { 398 | chart.annotations.redraw(); 399 | }); 400 | }); 401 | }(Highcharts, HighchartsAdapter)); 402 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/data.js: -------------------------------------------------------------------------------- 1 | /* 2 | Data plugin for Highcharts 3 | 4 | (c) 2012-2013 Torstein Hønsi 5 | Last revision 2013-06-07 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(h){var k=h.each,m=function(b,a){this.init(b,a)};h.extend(m.prototype,{init:function(b,a){this.options=b;this.chartOptions=a;this.columns=b.columns||this.rowsToColumns(b.rows)||[];this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){var b=this.chartOptions,a=b&&b.chart&&b.chart.type,c=[];k(b&&b.series||[],function(b){c.push((h.seriesTypes[b.type||a||"line"].prototype.pointArrayMap||[0]).length)});this.valueCount= 10 | {global:(h.seriesTypes[a||"line"].prototype.pointArrayMap||[0]).length,individual:c}},dataFound:function(){this.parseTypes();this.findHeaderRow();this.parsed();this.complete()},parseCSV:function(){var b=this,a=this.options,c=a.csv,d=this.columns,f=a.startRow||0,i=a.endRow||Number.MAX_VALUE,j=a.startColumn||0,e=a.endColumn||Number.MAX_VALUE,g=0;c&&(c=c.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(a.lineDelimiter||"\n"),k(c,function(c,h){var n=b.trim(c),p=n.indexOf("#")===0;h>=f&&h<=i&&!p&&n!==""&& 11 | (n=c.split(a.itemDelimiter||","),k(n,function(b,a){a>=j&&a<=e&&(d[a-j]||(d[a-j]=[]),d[a-j][g]=b)}),g+=1)}),this.dataFound())},parseTable:function(){var b=this.options,a=b.table,c=this.columns,d=b.startRow||0,f=b.endRow||Number.MAX_VALUE,i=b.startColumn||0,j=b.endColumn||Number.MAX_VALUE,e;a&&(typeof a==="string"&&(a=document.getElementById(a)),k(a.getElementsByTagName("tr"),function(a,b){e=0;b>=d&&b<=f&&k(a.childNodes,function(a){if((a.tagName==="TD"||a.tagName==="TH")&&e>=i&&e<=j)c[e]||(c[e]=[]), 12 | c[e][b-d]=a.innerHTML,e+=1})}),this.dataFound())},parseGoogleSpreadsheet:function(){var b=this,a=this.options,c=a.googleSpreadsheetKey,d=this.columns,f=a.startRow||0,i=a.endRow||Number.MAX_VALUE,j=a.startColumn||0,e=a.endColumn||Number.MAX_VALUE,g,h;c&&jQuery.getJSON("https://spreadsheets.google.com/feeds/cells/"+c+"/"+(a.googleSpreadsheetWorksheet||"od6")+"/public/values?alt=json-in-script&callback=?",function(a){var a=a.feed.entry,c,k=a.length,m=0,o=0,l;for(l=0;l=j&&l<=e)d[l-j]=[],d[l-j].length=Math.min(o,i-f);for(l=0;l=j&&h<=e&&g>=f&&g<=i)d[h-j][g-f]=c.content.$t;b.dataFound()})},findHeaderRow:function(){k(this.columns,function(){});this.headerRow=0},trim:function(b){return typeof b==="string"?b.replace(/^\s+|\s+$/g,""):b},parseTypes:function(){for(var b=this.columns,a=b.length,c,d,f,i;a--;)for(c=b[a].length;c--;)d=b[a][c],f=parseFloat(d),i=this.trim(d), 14 | i==f?(b[a][c]=f,f>31536E6?b[a].isDatetime=!0:b[a].isNumeric=!0):(d=this.parseDate(d),a===0&&typeof d==="number"&&!isNaN(d)?(b[a][c]=d,b[a].isDatetime=!0):b[a][c]=i===""?null:i)},dateFormats:{"YYYY-mm-dd":{regex:"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",parser:function(b){return Date.UTC(+b[1],b[2]-1,+b[3])}}},parseDate:function(b){var a=this.options.parseDate,c,d,f;a&&(c=a(b));if(typeof b==="string")for(d in this.dateFormats)a=this.dateFormats[d],(f=b.match(a.regex))&&(c=a.parser(f));return c},rowsToColumns:function(b){var a, 15 | c,d,f,i;if(b){i=[];c=b.length;for(a=0;a1&&(a=b.shift(),this.headerRow===0&&a.shift(),a.isDatetime?c="datetime":a.isNumeric||(c="category"));for(e=0;e1&&j[g].push(b[e+1][g]!==void 0?b[e+1][g]:null),f>2&&j[g].push(b[e+2][g]!==void 0?b[e+2][g]:null),f>3&&j[g].push(b[e+3][g]!==void 0?b[e+3][g]:null),f>4&&j[g].push(b[e+4][g]!==void 0?b[e+4][g]:null);i[k]={name:b[e].name,data:j};e+=f}d.complete({xAxis:{type:c},series:i})}}});h.Data=m;h.data=function(b,a){return new m(b,a)};h.wrap(h.Chart.prototype, 17 | "init",function(b,a,c){var d=this;a&&a.data?h.data(h.extend(a.data,{complete:function(f){a.series&&k(a.series,function(b,c){a.series[c]=h.merge(b,f.series[c])});a=h.merge(f,a);b.call(d,a,c)}}),a):b.call(d,a,c)})})(Highcharts); 18 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/drilldown.js: -------------------------------------------------------------------------------- 1 | (function(e){function q(b,a,c){return"rgba("+[Math.round(b[0]+(a[0]-b[0])*c),Math.round(b[1]+(a[1]-b[1])*c),Math.round(b[2]+(a[2]-b[2])*c),b[3]+(a[3]-b[3])*c].join(",")+")"}var m=function(){},j=e.getOptions(),g=e.each,n=e.extend,o=e.wrap,h=e.Chart,i=e.seriesTypes,k=i.pie,l=i.column,r=HighchartsAdapter.fireEvent;n(j.lang,{drillUpText:"◁ Back to {series.name}"});j.drilldown={activeAxisLabelStyle:{cursor:"pointer",color:"#039",fontWeight:"bold",textDecoration:"underline"},activeDataLabelStyle:{cursor:"pointer", 2 | color:"#039",fontWeight:"bold",textDecoration:"underline"},animation:{duration:500},drillUpButton:{position:{align:"right",x:-10,y:10}}};e.SVGRenderer.prototype.Element.prototype.fadeIn=function(){this.attr({opacity:0.1,visibility:"visible"}).animate({opacity:1},{duration:250})};h.prototype.drilldownLevels=[];h.prototype.addSeriesAsDrilldown=function(b,a){var c=b.series,d=c.xAxis,f=c.yAxis,e;e=b.color||c.color;var g,a=n({color:e},a);g=HighchartsAdapter.inArray(this,c.points);this.drilldownLevels.push({seriesOptions:c.userOptions, 3 | shapeArgs:b.shapeArgs,bBox:b.graphic.getBBox(),color:e,newSeries:a,pointOptions:c.options.data[g],pointIndex:g,oldExtremes:{xMin:d&&d.userMin,xMax:d&&d.userMax,yMin:f&&f.userMin,yMax:f&&f.userMax}});e=this.addSeries(a,!1);if(d)d.oldPos=d.pos,d.userMin=d.userMax=null,f.userMin=f.userMax=null;if(c.type===e.type)e.animate=e.animateDrilldown||m,e.options.animation=!0;c.remove(!1);this.redraw();this.showDrillUpButton()};h.prototype.getDrilldownBackText=function(){return this.options.lang.drillUpText.replace("{series.name}", 4 | this.drilldownLevels[this.drilldownLevels.length-1].seriesOptions.name)};h.prototype.showDrillUpButton=function(){var b=this,a=this.getDrilldownBackText(),c=b.options.drilldown.drillUpButton;this.drillUpButton?this.drillUpButton.attr({text:a}).align():this.drillUpButton=this.renderer.button(a,null,null,function(){b.drillUp()}).attr(n({align:c.position.align,zIndex:9},c.theme)).add().align(c.position,!1,c.relativeTo||"plotBox")};h.prototype.drillUp=function(){var b=this.drilldownLevels.pop(),a=this.series[0], 5 | c=b.oldExtremes,d=this.addSeries(b.seriesOptions,!1);r(this,"drillup",{seriesOptions:b.seriesOptions});if(d.type===a.type)d.drilldownLevel=b,d.animate=d.animateDrillupTo||m,d.options.animation=!0,a.animateDrillupFrom&&a.animateDrillupFrom(b);a.remove(!1);d.xAxis&&(d.xAxis.setExtremes(c.xMin,c.xMax,!1),d.yAxis.setExtremes(c.yMin,c.yMax,!1));this.redraw();this.drilldownLevels.length===0?this.drillUpButton=this.drillUpButton.destroy():this.drillUpButton.attr({text:this.getDrilldownBackText()}).align()}; 6 | k.prototype.animateDrilldown=function(b){var a=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],c=this.chart.options.drilldown.animation,d=a.shapeArgs,f=d.start,s=(d.end-f)/this.points.length,h=e.Color(a.color).rgba;b||g(this.points,function(a,b){var g=e.Color(a.color).rgba;a.graphic.attr(e.merge(d,{start:f+b*s,end:f+(b+1)*s})).animate(a.shapeArgs,e.merge(c,{step:function(a,d){d.prop==="start"&&this.attr({fill:q(h,g,d.pos)})}}))})};k.prototype.animateDrillupTo=l.prototype.animateDrillupTo= 7 | function(b){if(!b){var a=this,c=a.drilldownLevel;g(this.points,function(a){a.graphic.hide();a.dataLabel&&a.dataLabel.hide();a.connector&&a.connector.hide()});setTimeout(function(){g(a.points,function(a,b){var e=b===c.pointIndex?"show":"fadeIn";a.graphic[e]();if(a.dataLabel)a.dataLabel[e]();if(a.connector)a.connector[e]()})},Math.max(this.chart.options.drilldown.animation.duration-50,0));this.animate=m}};l.prototype.animateDrilldown=function(b){var a=this.chart.drilldownLevels[this.chart.drilldownLevels.length- 8 | 1].shapeArgs,c=this.chart.options.drilldown.animation;b||(a.x+=this.xAxis.oldPos-this.xAxis.pos,g(this.points,function(b){b.graphic.attr(a).animate(b.shapeArgs,c)}))};l.prototype.animateDrillupFrom=k.prototype.animateDrillupFrom=function(b){var a=this.chart.options.drilldown.animation,c=this.group;delete this.group;g(this.points,function(d){var f=d.graphic,g=e.Color(d.color).rgba;delete d.graphic;f.animate(b.shapeArgs,e.merge(a,{step:function(a,c){c.prop==="start"&&this.attr({fill:q(g,e.Color(b.color).rgba, 9 | c.pos)})},complete:function(){f.destroy();c&&(c=c.destroy())}}))})};e.Point.prototype.doDrilldown=function(){for(var b=this.series.chart,a=b.options.drilldown,c=a.series.length,d;c--&&!d;)a.series[c].id===this.drilldown&&(d=a.series[c]);r(b,"drilldown",{point:this,seriesOptions:d});d&&b.addSeriesAsDrilldown(this,d)};o(e.Point.prototype,"init",function(b,a,c,d){var f=b.call(this,a,c,d),b=a.chart,a=(a=a.xAxis&&a.xAxis.ticks[d])&&a.label;if(f.drilldown){if(e.addEvent(f,"click",function(){f.doDrilldown()}), 10 | a){if(!a._basicStyle)a._basicStyle=a.element.getAttribute("style");a.addClass("highcharts-drilldown-axis-label").css(b.options.drilldown.activeAxisLabelStyle).on("click",function(){f.doDrilldown&&f.doDrilldown()})}}else a&&a._basicStyle&&a.element.setAttribute("style",a._basicStyle);return f});o(e.Series.prototype,"drawDataLabels",function(b){var a=this.chart.options.drilldown.activeDataLabelStyle;b.call(this);g(this.points,function(b){if(b.drilldown&&b.dataLabel)b.dataLabel.attr({"class":"highcharts-drilldown-data-label"}).css(a).on("click", 11 | function(){b.doDrilldown()})})});l.prototype.supportsDrilldown=!0;k.prototype.supportsDrilldown=!0;var p,j=function(b){b.call(this);g(this.points,function(a){a.drilldown&&a.graphic&&a.graphic.attr({"class":"highcharts-drilldown-point"}).css({cursor:"pointer"})})};for(p in i)i[p].prototype.supportsDrilldown&&o(i[p].prototype,"drawTracker",j)})(Highcharts); 12 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/drilldown.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Highcharts Drilldown plugin 3 | * 4 | * Author: Torstein Honsi 5 | * Last revision: 2013-02-18 6 | * License: MIT License 7 | * 8 | * Demo: http://jsfiddle.net/highcharts/Vf3yT/ 9 | */ 10 | 11 | /*global HighchartsAdapter*/ 12 | (function (H) { 13 | 14 | "use strict"; 15 | 16 | var noop = function () {}, 17 | defaultOptions = H.getOptions(), 18 | each = H.each, 19 | extend = H.extend, 20 | wrap = H.wrap, 21 | Chart = H.Chart, 22 | seriesTypes = H.seriesTypes, 23 | PieSeries = seriesTypes.pie, 24 | ColumnSeries = seriesTypes.column, 25 | fireEvent = HighchartsAdapter.fireEvent; 26 | 27 | // Utilities 28 | function tweenColors(startColor, endColor, pos) { 29 | var rgba = [ 30 | Math.round(startColor[0] + (endColor[0] - startColor[0]) * pos), 31 | Math.round(startColor[1] + (endColor[1] - startColor[1]) * pos), 32 | Math.round(startColor[2] + (endColor[2] - startColor[2]) * pos), 33 | startColor[3] + (endColor[3] - startColor[3]) * pos 34 | ]; 35 | return 'rgba(' + rgba.join(',') + ')'; 36 | } 37 | 38 | // Add language 39 | extend(defaultOptions.lang, { 40 | drillUpText: '◁ Back to {series.name}' 41 | }); 42 | defaultOptions.drilldown = { 43 | activeAxisLabelStyle: { 44 | cursor: 'pointer', 45 | color: '#039', 46 | fontWeight: 'bold', 47 | textDecoration: 'underline' 48 | }, 49 | activeDataLabelStyle: { 50 | cursor: 'pointer', 51 | color: '#039', 52 | fontWeight: 'bold', 53 | textDecoration: 'underline' 54 | }, 55 | animation: { 56 | duration: 500 57 | }, 58 | drillUpButton: { 59 | position: { 60 | align: 'right', 61 | x: -10, 62 | y: 10 63 | } 64 | // relativeTo: 'plotBox' 65 | // theme 66 | } 67 | }; 68 | 69 | /** 70 | * A general fadeIn method 71 | */ 72 | H.SVGRenderer.prototype.Element.prototype.fadeIn = function () { 73 | this 74 | .attr({ 75 | opacity: 0.1, 76 | visibility: 'visible' 77 | }) 78 | .animate({ 79 | opacity: 1 80 | }, { 81 | duration: 250 82 | }); 83 | }; 84 | 85 | // Extend the Chart prototype 86 | Chart.prototype.drilldownLevels = []; 87 | 88 | Chart.prototype.addSeriesAsDrilldown = function (point, ddOptions) { 89 | var oldSeries = point.series, 90 | xAxis = oldSeries.xAxis, 91 | yAxis = oldSeries.yAxis, 92 | newSeries, 93 | color = point.color || oldSeries.color, 94 | pointIndex, 95 | level; 96 | 97 | ddOptions = extend({ 98 | color: color 99 | }, ddOptions); 100 | pointIndex = HighchartsAdapter.inArray(this, oldSeries.points); 101 | level = { 102 | seriesOptions: oldSeries.userOptions, 103 | shapeArgs: point.shapeArgs, 104 | bBox: point.graphic.getBBox(), 105 | color: color, 106 | newSeries: ddOptions, 107 | pointOptions: oldSeries.options.data[pointIndex], 108 | pointIndex: pointIndex, 109 | oldExtremes: { 110 | xMin: xAxis && xAxis.userMin, 111 | xMax: xAxis && xAxis.userMax, 112 | yMin: yAxis && yAxis.userMin, 113 | yMax: yAxis && yAxis.userMax 114 | } 115 | }; 116 | 117 | this.drilldownLevels.push(level); 118 | 119 | newSeries = this.addSeries(ddOptions, false); 120 | if (xAxis) { 121 | xAxis.oldPos = xAxis.pos; 122 | xAxis.userMin = xAxis.userMax = null; 123 | yAxis.userMin = yAxis.userMax = null; 124 | } 125 | 126 | // Run fancy cross-animation on supported and equal types 127 | if (oldSeries.type === newSeries.type) { 128 | newSeries.animate = newSeries.animateDrilldown || noop; 129 | newSeries.options.animation = true; 130 | } 131 | 132 | oldSeries.remove(false); 133 | 134 | this.redraw(); 135 | this.showDrillUpButton(); 136 | }; 137 | 138 | Chart.prototype.getDrilldownBackText = function () { 139 | var lastLevel = this.drilldownLevels[this.drilldownLevels.length - 1]; 140 | 141 | return this.options.lang.drillUpText.replace('{series.name}', lastLevel.seriesOptions.name); 142 | 143 | }; 144 | 145 | Chart.prototype.showDrillUpButton = function () { 146 | var chart = this, 147 | backText = this.getDrilldownBackText(), 148 | buttonOptions = chart.options.drilldown.drillUpButton; 149 | 150 | 151 | if (!this.drillUpButton) { 152 | this.drillUpButton = this.renderer.button( 153 | backText, 154 | null, 155 | null, 156 | function () { 157 | chart.drillUp(); 158 | } 159 | ) 160 | .attr(extend({ 161 | align: buttonOptions.position.align, 162 | zIndex: 9 163 | }, buttonOptions.theme)) 164 | .add() 165 | .align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox'); 166 | } else { 167 | this.drillUpButton.attr({ 168 | text: backText 169 | }) 170 | .align(); 171 | } 172 | }; 173 | 174 | Chart.prototype.drillUp = function () { 175 | var chart = this, 176 | level = chart.drilldownLevels.pop(), 177 | oldSeries = chart.series[0], 178 | oldExtremes = level.oldExtremes, 179 | newSeries = chart.addSeries(level.seriesOptions, false); 180 | 181 | fireEvent(chart, 'drillup', { seriesOptions: level.seriesOptions }); 182 | 183 | if (newSeries.type === oldSeries.type) { 184 | newSeries.drilldownLevel = level; 185 | newSeries.animate = newSeries.animateDrillupTo || noop; 186 | newSeries.options.animation = true; 187 | 188 | if (oldSeries.animateDrillupFrom) { 189 | oldSeries.animateDrillupFrom(level); 190 | } 191 | } 192 | 193 | oldSeries.remove(false); 194 | 195 | // Reset the zoom level of the upper series 196 | if (newSeries.xAxis) { 197 | newSeries.xAxis.setExtremes(oldExtremes.xMin, oldExtremes.xMax, false); 198 | newSeries.yAxis.setExtremes(oldExtremes.yMin, oldExtremes.yMax, false); 199 | } 200 | 201 | 202 | this.redraw(); 203 | 204 | if (this.drilldownLevels.length === 0) { 205 | this.drillUpButton = this.drillUpButton.destroy(); 206 | } else { 207 | this.drillUpButton.attr({ 208 | text: this.getDrilldownBackText() 209 | }) 210 | .align(); 211 | } 212 | }; 213 | 214 | PieSeries.prototype.animateDrilldown = function (init) { 215 | var level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1], 216 | animationOptions = this.chart.options.drilldown.animation, 217 | animateFrom = level.shapeArgs, 218 | start = animateFrom.start, 219 | angle = animateFrom.end - start, 220 | startAngle = angle / this.points.length, 221 | startColor = H.Color(level.color).rgba; 222 | 223 | if (!init) { 224 | each(this.points, function (point, i) { 225 | var endColor = H.Color(point.color).rgba; 226 | 227 | /*jslint unparam: true*/ 228 | point.graphic 229 | .attr(H.merge(animateFrom, { 230 | start: start + i * startAngle, 231 | end: start + (i + 1) * startAngle 232 | })) 233 | .animate(point.shapeArgs, H.merge(animationOptions, { 234 | step: function (val, fx) { 235 | if (fx.prop === 'start') { 236 | this.attr({ 237 | fill: tweenColors(startColor, endColor, fx.pos) 238 | }); 239 | } 240 | } 241 | })); 242 | /*jslint unparam: false*/ 243 | }); 244 | } 245 | }; 246 | 247 | 248 | /** 249 | * When drilling up, keep the upper series invisible until the lower series has 250 | * moved into place 251 | */ 252 | PieSeries.prototype.animateDrillupTo = 253 | ColumnSeries.prototype.animateDrillupTo = function (init) { 254 | if (!init) { 255 | var newSeries = this, 256 | level = newSeries.drilldownLevel; 257 | 258 | each(this.points, function (point) { 259 | point.graphic.hide(); 260 | if (point.dataLabel) { 261 | point.dataLabel.hide(); 262 | } 263 | if (point.connector) { 264 | point.connector.hide(); 265 | } 266 | }); 267 | 268 | 269 | // Do dummy animation on first point to get to complete 270 | setTimeout(function () { 271 | each(newSeries.points, function (point, i) { 272 | // Fade in other points 273 | var verb = i === level.pointIndex ? 'show' : 'fadeIn'; 274 | point.graphic[verb](); 275 | if (point.dataLabel) { 276 | point.dataLabel[verb](); 277 | } 278 | if (point.connector) { 279 | point.connector[verb](); 280 | } 281 | }); 282 | }, Math.max(this.chart.options.drilldown.animation.duration - 50, 0)); 283 | 284 | // Reset 285 | this.animate = noop; 286 | } 287 | 288 | }; 289 | 290 | ColumnSeries.prototype.animateDrilldown = function (init) { 291 | var animateFrom = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1].shapeArgs, 292 | animationOptions = this.chart.options.drilldown.animation; 293 | 294 | if (!init) { 295 | 296 | animateFrom.x += (this.xAxis.oldPos - this.xAxis.pos); 297 | 298 | each(this.points, function (point) { 299 | point.graphic 300 | .attr(animateFrom) 301 | .animate(point.shapeArgs, animationOptions); 302 | }); 303 | } 304 | 305 | }; 306 | 307 | /** 308 | * When drilling up, pull out the individual point graphics from the lower series 309 | * and animate them into the origin point in the upper series. 310 | */ 311 | ColumnSeries.prototype.animateDrillupFrom = 312 | PieSeries.prototype.animateDrillupFrom = 313 | function (level) { 314 | var animationOptions = this.chart.options.drilldown.animation, 315 | group = this.group; 316 | 317 | delete this.group; 318 | each(this.points, function (point) { 319 | var graphic = point.graphic, 320 | startColor = H.Color(point.color).rgba; 321 | 322 | delete point.graphic; 323 | 324 | /*jslint unparam: true*/ 325 | graphic.animate(level.shapeArgs, H.merge(animationOptions, { 326 | 327 | step: function (val, fx) { 328 | if (fx.prop === 'start') { 329 | this.attr({ 330 | fill: tweenColors(startColor, H.Color(level.color).rgba, fx.pos) 331 | }); 332 | } 333 | }, 334 | complete: function () { 335 | graphic.destroy(); 336 | if (group) { 337 | group = group.destroy(); 338 | } 339 | } 340 | })); 341 | /*jslint unparam: false*/ 342 | }); 343 | }; 344 | 345 | H.Point.prototype.doDrilldown = function () { 346 | var series = this.series, 347 | chart = series.chart, 348 | drilldown = chart.options.drilldown, 349 | i = drilldown.series.length, 350 | seriesOptions; 351 | 352 | while (i-- && !seriesOptions) { 353 | if (drilldown.series[i].id === this.drilldown) { 354 | seriesOptions = drilldown.series[i]; 355 | } 356 | } 357 | 358 | // Fire the event. If seriesOptions is undefined, the implementer can check for 359 | // seriesOptions, and call addSeriesAsDrilldown async if necessary. 360 | fireEvent(chart, 'drilldown', { 361 | point: this, 362 | seriesOptions: seriesOptions 363 | }); 364 | 365 | if (seriesOptions) { 366 | chart.addSeriesAsDrilldown(this, seriesOptions); 367 | } 368 | 369 | }; 370 | 371 | wrap(H.Point.prototype, 'init', function (proceed, series, options, x) { 372 | var point = proceed.call(this, series, options, x), 373 | chart = series.chart, 374 | tick = series.xAxis && series.xAxis.ticks[x], 375 | tickLabel = tick && tick.label; 376 | 377 | if (point.drilldown) { 378 | 379 | // Add the click event to the point label 380 | H.addEvent(point, 'click', function () { 381 | point.doDrilldown(); 382 | }); 383 | 384 | // Make axis labels clickable 385 | if (tickLabel) { 386 | if (!tickLabel._basicStyle) { 387 | tickLabel._basicStyle = tickLabel.element.getAttribute('style'); 388 | } 389 | tickLabel 390 | .addClass('highcharts-drilldown-axis-label') 391 | .css(chart.options.drilldown.activeAxisLabelStyle) 392 | .on('click', function () { 393 | if (point.doDrilldown) { 394 | point.doDrilldown(); 395 | } 396 | }); 397 | 398 | } 399 | } else if (tickLabel && tickLabel._basicStyle) { 400 | tickLabel.element.setAttribute('style', tickLabel._basicStyle); 401 | } 402 | 403 | return point; 404 | }); 405 | 406 | wrap(H.Series.prototype, 'drawDataLabels', function (proceed) { 407 | var css = this.chart.options.drilldown.activeDataLabelStyle; 408 | 409 | proceed.call(this); 410 | 411 | each(this.points, function (point) { 412 | if (point.drilldown && point.dataLabel) { 413 | point.dataLabel 414 | .attr({ 415 | 'class': 'highcharts-drilldown-data-label' 416 | }) 417 | .css(css) 418 | .on('click', function () { 419 | point.doDrilldown(); 420 | }); 421 | } 422 | }); 423 | }); 424 | 425 | // Mark the trackers with a pointer 426 | ColumnSeries.prototype.supportsDrilldown = true; 427 | PieSeries.prototype.supportsDrilldown = true; 428 | var type, 429 | drawTrackerWrapper = function (proceed) { 430 | proceed.call(this); 431 | each(this.points, function (point) { 432 | if (point.drilldown && point.graphic) { 433 | point.graphic 434 | .attr({ 435 | 'class': 'highcharts-drilldown-point' 436 | }) 437 | .css({ cursor: 'pointer' }); 438 | } 439 | }); 440 | }; 441 | for (type in seriesTypes) { 442 | if (seriesTypes[type].prototype.supportsDrilldown) { 443 | wrap(seriesTypes[type].prototype, 'drawTracker', drawTrackerWrapper); 444 | } 445 | } 446 | 447 | }(Highcharts)); 448 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/exporting.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Exporting module 4 | 5 | (c) 2010-2013 Torstein Hønsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(f){var A=f.Chart,t=f.addEvent,C=f.removeEvent,k=f.createElement,n=f.discardElement,u=f.css,o=f.merge,r=f.each,p=f.extend,D=Math.max,j=document,B=window,E=f.isTouchDevice,F=f.Renderer.prototype.symbols,x=f.getOptions(),y;p(x.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});x.navigation={menuStyle:{border:"1px solid #A0A0A0", 10 | background:"#FFFFFF",padding:"5px 0"},menuItemStyle:{padding:"0 10px",background:"none",color:"#303030",fontSize:E?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{symbolFill:"#E0E0E0",symbolSize:14,symbolStroke:"#666",symbolStrokeWidth:3,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,theme:{fill:"white",stroke:"none"},verticalAlign:"top",width:24}};x.exporting={type:"image/png",url:"http://export.highcharts.com/",buttons:{contextButton:{menuClassName:"highcharts-contextmenu", 11 | symbol:"menu",_titleKey:"contextButtonTitle",menuItems:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};f.post=function(c,a){var d,b;b=k("form",{method:"post", 12 | action:c,enctype:"multipart/form-data"},{display:"none"},j.body);for(d in a)k("input",{type:"hidden",name:d,value:a[d]},null,b);b.submit();n(b)};p(A.prototype,{getSVG:function(c){var a=this,d,b,z,h,g=o(a.options,c);if(!j.createElementNS)j.createElementNS=function(a,b){return j.createElement(b)};c=k("div",null,{position:"absolute",top:"-9999em",width:a.chartWidth+"px",height:a.chartHeight+"px"},j.body);b=a.renderTo.style.width;h=a.renderTo.style.height;b=g.exporting.sourceWidth||g.chart.width||/px$/.test(b)&& 13 | parseInt(b,10)||600;h=g.exporting.sourceHeight||g.chart.height||/px$/.test(h)&&parseInt(h,10)||400;p(g.chart,{animation:!1,renderTo:c,forExport:!0,width:b,height:h});g.exporting.enabled=!1;g.series=[];r(a.series,function(a){z=o(a.options,{animation:!1,showCheckbox:!1,visible:a.visible});z.isInternal||g.series.push(z)});d=new f.Chart(g,a.callback);r(["xAxis","yAxis"],function(b){r(a[b],function(a,c){var g=d[b][c],f=a.getExtremes(),h=f.userMin,f=f.userMax;g&&(h!==void 0||f!==void 0)&&g.setExtremes(h, 14 | f,!0,!1)})});b=d.container.innerHTML;g=null;d.destroy();n(c);b=b.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/.*?$/,"").replace(/ /g," ").replace(/­/g,"­").replace(//g,'xlink:href="$1"/>').replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" >]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()});return b=b.replace(/(url\(#highcharts-[0-9]+)"/g,"$1").replace(/"/g,"'")},exportChart:function(c,a){var c=c||{},d=this.options.exporting,d=this.getSVG(o({chart:{borderRadius:0}},d.chartOptions,a,{exporting:{sourceWidth:c.sourceWidth|| 16 | d.sourceWidth,sourceHeight:c.sourceHeight||d.sourceHeight}})),c=o(this.options.exporting,c);f.post(c.url,{filename:c.filename||"chart",type:c.type,width:c.width||0,scale:c.scale||2,svg:d})},print:function(){var c=this,a=c.container,d=[],b=a.parentNode,f=j.body,h=f.childNodes;if(!c.isPrinting)c.isPrinting=!0,r(h,function(a,b){if(a.nodeType===1)d[b]=a.style.display,a.style.display="none"}),f.appendChild(a),B.focus(),B.print(),setTimeout(function(){b.appendChild(a);r(h,function(a,b){if(a.nodeType=== 17 | 1)a.style.display=d[b]});c.isPrinting=!1},1E3)},contextMenu:function(c,a,d,b,f,h,g){var e=this,j=e.options.navigation,q=j.menuItemStyle,l=e.chartWidth,m=e.chartHeight,o="cache-"+c,i=e[o],s=D(f,h),v,w,n;if(!i)e[o]=i=k("div",{className:c},{position:"absolute",zIndex:1E3,padding:s+"px"},e.container),v=k("div",null,p({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},j.menuStyle),i),w=function(){u(i,{display:"none"});g&&g.setState(0);e.openMenu=!1},t(i, 18 | "mouseleave",function(){n=setTimeout(w,500)}),t(i,"mouseenter",function(){clearTimeout(n)}),t(document,"mousedown",function(a){e.pointer.inClass(a.target,c)||w()}),r(a,function(a){if(a){var b=a.separator?k("hr",null,null,v):k("div",{onmouseover:function(){u(this,j.menuItemHoverStyle)},onmouseout:function(){u(this,q)},onclick:function(){w();a.onclick.apply(e,arguments)},innerHTML:a.text||e.options.lang[a.textKey]},p({cursor:"pointer"},q),v);e.exportDivElements.push(b)}}),e.exportDivElements.push(v, 19 | i),e.exportMenuWidth=i.offsetWidth,e.exportMenuHeight=i.offsetHeight;a={display:"block"};d+e.exportMenuWidth>l?a.right=l-d-f-s+"px":a.left=d-s+"px";b+h+e.exportMenuHeight>m&&g.alignOptions.verticalAlign!=="top"?a.bottom=m-b-s+"px":a.top=b+h-s+"px";u(i,a);e.openMenu=!0},addButton:function(c){var a=this,d=a.renderer,b=o(a.options.navigation.buttonOptions,c),j=b.onclick,h=b.menuItems,g,e,k={stroke:b.symbolStroke,fill:b.symbolFill},q=b.symbolSize||12;if(!a.btnCount)a.btnCount=0;if(!a.exportDivElements)a.exportDivElements= 20 | [],a.exportSVGElements=[];if(b.enabled!==!1){var l=b.theme,m=l.states,n=m&&m.hover,m=m&&m.select,i;delete l.states;j?i=function(){j.apply(a,arguments)}:h&&(i=function(){a.contextMenu(e.menuClassName,h,e.translateX,e.translateY,e.width,e.height,e);e.setState(2)});b.text&&b.symbol?l.paddingLeft=f.pick(l.paddingLeft,25):b.text||p(l,{width:b.width,height:b.height,padding:0});e=d.button(b.text,0,0,i,l,n,m).attr({title:a.options.lang[b._titleKey],"stroke-linecap":"round"});e.menuClassName=c.menuClassName|| 21 | "highcharts-menu-"+a.btnCount++;b.symbol&&(g=d.symbol(b.symbol,b.symbolX-q/2,b.symbolY-q/2,q,q).attr(p(k,{"stroke-width":b.symbolStrokeWidth||1,zIndex:1})).add(e));e.add().align(p(b,{width:e.width,x:f.pick(b.x,y)}),!0,"spacingBox");y+=(e.width+b.buttonSpacing)*(b.align==="right"?-1:1);a.exportSVGElements.push(e,g)}},destroyExport:function(c){var c=c.target,a,d;for(a=0;aj-s||j===s?r:r+(p-r)*((j-s-k)/(j-s))};this.getX=function(k,a){return b+(a?-1:1)*(q(k)/2+c.dataLabels.distance)};this.center=[b,d,j];this.centerX=b;A(a,function(a){g+=a.y});A(a,function(a){o=null;x=g?a.y/g:0;m=d-j/2+h*j;l=m+x*j;i=q(m);y=b-i/2;B=y+ 11 | i;i=q(l);n=b-i/2;t=n+i;m>v?(y=n=b-r/2,B=t=b+r/2):l>v&&(o=l,i=q(v),n=b-i/2,t=n+i,l=v);w=["M",y,m,"L",B,m,t,l];o&&w.push(t,o,n,o);w.push(n,l,"Z");a.shapeType="path";a.shapeArgs={d:w};a.percentage=x*100;a.plotX=b;a.plotY=(m+(o||l))/2;a.tooltipPos=[b,a.plotY];a.slice=z;a.half=u;h+=x});this.setTooltipPoints()},drawPoints:function(){var a=this,g=a.options,e=a.chart.renderer;A(a.data,function(f){var h=f.graphic,c=f.shapeArgs;h?h.animate(c):f.graphic=e.path(c).attr({fill:f.color,stroke:g.borderColor,"stroke-width":g.borderWidth}).add(a.group)})}, 12 | sortByAngle:z,drawDataLabels:function(){var a=this.data,g=this.options.dataLabels.distance,e,f,h,c=a.length,d,b;for(this.center[2]-=2*g;c--;)h=a[c],f=(e=h.half)?1:-1,b=h.plotY,d=this.getX(b,e),h.labelPos=[0,b,d+(g-5)*f,b,d+g*f,b,e?"right":"left",0];p.pie.prototype.drawDataLabels.call(this)}})})(Highcharts); 13 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/funnel.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Highcharts funnel module, Beta 4 | * 5 | * (c) 2010-2012 Torstein Hønsi 6 | * 7 | * License: www.highcharts.com/license 8 | */ 9 | 10 | /*global Highcharts */ 11 | (function (Highcharts) { 12 | 13 | 'use strict'; 14 | 15 | // create shortcuts 16 | var defaultOptions = Highcharts.getOptions(), 17 | defaultPlotOptions = defaultOptions.plotOptions, 18 | seriesTypes = Highcharts.seriesTypes, 19 | merge = Highcharts.merge, 20 | noop = function () {}, 21 | each = Highcharts.each; 22 | 23 | // set default options 24 | defaultPlotOptions.funnel = merge(defaultPlotOptions.pie, { 25 | center: ['50%', '50%'], 26 | width: '90%', 27 | neckWidth: '30%', 28 | height: '100%', 29 | neckHeight: '25%', 30 | 31 | dataLabels: { 32 | //position: 'right', 33 | connectorWidth: 1, 34 | connectorColor: '#606060' 35 | }, 36 | size: true, // to avoid adapting to data label size in Pie.drawDataLabels 37 | states: { 38 | select: { 39 | color: '#C0C0C0', 40 | borderColor: '#000000', 41 | shadow: false 42 | } 43 | } 44 | }); 45 | 46 | 47 | seriesTypes.funnel = Highcharts.extendClass(seriesTypes.pie, { 48 | 49 | type: 'funnel', 50 | animate: noop, 51 | 52 | /** 53 | * Overrides the pie translate method 54 | */ 55 | translate: function () { 56 | 57 | var 58 | // Get positions - either an integer or a percentage string must be given 59 | getLength = function (length, relativeTo) { 60 | return (/%$/).test(length) ? 61 | relativeTo * parseInt(length, 10) / 100 : 62 | parseInt(length, 10); 63 | }, 64 | 65 | sum = 0, 66 | series = this, 67 | chart = series.chart, 68 | plotWidth = chart.plotWidth, 69 | plotHeight = chart.plotHeight, 70 | cumulative = 0, // start at top 71 | options = series.options, 72 | center = options.center, 73 | centerX = getLength(center[0], plotWidth), 74 | centerY = getLength(center[0], plotHeight), 75 | width = getLength(options.width, plotWidth), 76 | tempWidth, 77 | getWidthAt, 78 | height = getLength(options.height, plotHeight), 79 | neckWidth = getLength(options.neckWidth, plotWidth), 80 | neckHeight = getLength(options.neckHeight, plotHeight), 81 | neckY = height - neckHeight, 82 | data = series.data, 83 | path, 84 | fraction, 85 | half = options.dataLabels.position === 'left' ? 1 : 0, 86 | 87 | x1, 88 | y1, 89 | x2, 90 | x3, 91 | y3, 92 | x4, 93 | y5; 94 | 95 | // Return the width at a specific y coordinate 96 | series.getWidthAt = getWidthAt = function (y) { 97 | return y > height - neckHeight || height === neckHeight ? 98 | neckWidth : 99 | neckWidth + (width - neckWidth) * ((height - neckHeight - y) / (height - neckHeight)); 100 | }; 101 | series.getX = function (y, half) { 102 | return centerX + (half ? -1 : 1) * ((getWidthAt(y) / 2) + options.dataLabels.distance); 103 | }; 104 | 105 | // Expose 106 | series.center = [centerX, centerY, height]; 107 | series.centerX = centerX; 108 | 109 | /* 110 | * Individual point coordinate naming: 111 | * 112 | * x1,y1 _________________ x2,y1 113 | * \ / 114 | * \ / 115 | * \ / 116 | * \ / 117 | * \ / 118 | * x3,y3 _________ x4,y3 119 | * 120 | * Additional for the base of the neck: 121 | * 122 | * | | 123 | * | | 124 | * | | 125 | * x3,y5 _________ x4,y5 126 | */ 127 | 128 | 129 | 130 | 131 | // get the total sum 132 | each(data, function (point) { 133 | sum += point.y; 134 | }); 135 | 136 | each(data, function (point) { 137 | // set start and end positions 138 | y5 = null; 139 | fraction = sum ? point.y / sum : 0; 140 | y1 = centerY - height / 2 + cumulative * height; 141 | y3 = y1 + fraction * height; 142 | //tempWidth = neckWidth + (width - neckWidth) * ((height - neckHeight - y1) / (height - neckHeight)); 143 | tempWidth = getWidthAt(y1); 144 | x1 = centerX - tempWidth / 2; 145 | x2 = x1 + tempWidth; 146 | tempWidth = getWidthAt(y3); 147 | x3 = centerX - tempWidth / 2; 148 | x4 = x3 + tempWidth; 149 | 150 | // the entire point is within the neck 151 | if (y1 > neckY) { 152 | x1 = x3 = centerX - neckWidth / 2; 153 | x2 = x4 = centerX + neckWidth / 2; 154 | 155 | // the base of the neck 156 | } else if (y3 > neckY) { 157 | y5 = y3; 158 | 159 | tempWidth = getWidthAt(neckY); 160 | x3 = centerX - tempWidth / 2; 161 | x4 = x3 + tempWidth; 162 | 163 | y3 = neckY; 164 | } 165 | 166 | // save the path 167 | path = [ 168 | 'M', 169 | x1, y1, 170 | 'L', 171 | x2, y1, 172 | x4, y3 173 | ]; 174 | if (y5) { 175 | path.push(x4, y5, x3, y5); 176 | } 177 | path.push(x3, y3, 'Z'); 178 | 179 | // prepare for using shared dr 180 | point.shapeType = 'path'; 181 | point.shapeArgs = { d: path }; 182 | 183 | 184 | // for tooltips and data labels 185 | point.percentage = fraction * 100; 186 | point.plotX = centerX; 187 | point.plotY = (y1 + (y5 || y3)) / 2; 188 | 189 | // Placement of tooltips and data labels 190 | point.tooltipPos = [ 191 | centerX, 192 | point.plotY 193 | ]; 194 | 195 | // Slice is a noop on funnel points 196 | point.slice = noop; 197 | 198 | // Mimicking pie data label placement logic 199 | point.half = half; 200 | 201 | cumulative += fraction; 202 | }); 203 | 204 | 205 | series.setTooltipPoints(); 206 | }, 207 | /** 208 | * Draw a single point (wedge) 209 | * @param {Object} point The point object 210 | * @param {Object} color The color of the point 211 | * @param {Number} brightness The brightness relative to the color 212 | */ 213 | drawPoints: function () { 214 | var series = this, 215 | options = series.options, 216 | chart = series.chart, 217 | renderer = chart.renderer; 218 | 219 | each(series.data, function (point) { 220 | 221 | var graphic = point.graphic, 222 | shapeArgs = point.shapeArgs; 223 | 224 | if (!graphic) { // Create the shapes 225 | point.graphic = renderer.path(shapeArgs). 226 | attr({ 227 | fill: point.color, 228 | stroke: options.borderColor, 229 | 'stroke-width': options.borderWidth 230 | }). 231 | add(series.group); 232 | 233 | } else { // Update the shapes 234 | graphic.animate(shapeArgs); 235 | } 236 | }); 237 | }, 238 | 239 | /** 240 | * Funnel items don't have angles (#2289) 241 | */ 242 | sortByAngle: noop, 243 | 244 | /** 245 | * Extend the pie data label method 246 | */ 247 | drawDataLabels: function () { 248 | var data = this.data, 249 | labelDistance = this.options.dataLabels.distance, 250 | leftSide, 251 | sign, 252 | point, 253 | i = data.length, 254 | x, 255 | y; 256 | 257 | // In the original pie label anticollision logic, the slots are distributed 258 | // from one labelDistance above to one labelDistance below the pie. In funnels 259 | // we don't want this. 260 | this.center[2] -= 2 * labelDistance; 261 | 262 | // Set the label position array for each point. 263 | while (i--) { 264 | point = data[i]; 265 | leftSide = point.half; 266 | sign = leftSide ? 1 : -1; 267 | y = point.plotY; 268 | x = this.getX(y, leftSide); 269 | 270 | // set the anchor point for data labels 271 | point.labelPos = [ 272 | 0, // first break of connector 273 | y, // a/a 274 | x + (labelDistance - 5) * sign, // second break, right outside point shape 275 | y, // a/a 276 | x + labelDistance * sign, // landing point for connector 277 | y, // a/a 278 | leftSide ? 'right' : 'left', // alignment 279 | 0 // center angle 280 | ]; 281 | } 282 | 283 | seriesTypes.pie.prototype.drawDataLabels.call(this); 284 | } 285 | 286 | }); 287 | 288 | 289 | }(Highcharts)); 290 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/heatmap.js: -------------------------------------------------------------------------------- 1 | (function(b){var k=b.seriesTypes,l=b.each;k.heatmap=b.extendClass(k.map,{colorKey:"z",useMapGeometry:!1,pointArrayMap:["y","z"],translate:function(){var c=this,b=c.options,i=Number.MAX_VALUE,j=Number.MIN_VALUE;c.generatePoints();l(c.data,function(a){var e=a.x,f=a.y,d=a.z,g=(b.colsize||1)/2,h=(b.rowsize||1)/2;a.path=["M",e-g,f-h,"L",e+g,f-h,"L",e+g,f+h,"L",e-g,f+h,"Z"];a.shapeType="path";a.shapeArgs={d:c.translatePath(a.path)};typeof d==="number"&&(d>j?j=d:d dataMax) { 39 | dataMax = value; 40 | } else if (value < dataMin) { 41 | dataMin = value; 42 | } 43 | } 44 | }); 45 | 46 | series.translateColors(dataMin, dataMax); 47 | }, 48 | 49 | getBox: function () {} 50 | 51 | }); 52 | 53 | }(Highcharts)); 54 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/map.js: -------------------------------------------------------------------------------- 1 | /* 2 | Map plugin v0.1 for Highcharts 3 | 4 | (c) 2011-2013 Torstein Hønsi 5 | 6 | License: www.highcharts.com/license 7 | */ 8 | (function(g){function x(a,b,c){for(var d=4,e=[];d--;)e[d]=Math.round(b.rgba[d]+(a.rgba[d]-b.rgba[d])*(1-c));return"rgba("+e.join(",")+")"}var r=g.Axis,y=g.Chart,s=g.Point,z=g.Pointer,l=g.each,v=g.extend,p=g.merge,n=g.pick,A=g.numberFormat,B=g.getOptions(),k=g.seriesTypes,q=B.plotOptions,t=g.wrap,u=g.Color,w=function(){};B.mapNavigation={buttonOptions:{align:"right",verticalAlign:"bottom",x:0,width:18,height:18,style:{fontSize:"15px",fontWeight:"bold",textAlign:"center"}},buttons:{zoomIn:{onclick:function(){this.mapZoom(0.5)}, 9 | text:"+",y:-32},zoomOut:{onclick:function(){this.mapZoom(2)},text:"-",y:0}}};g.splitPath=function(a){var b,a=a.replace(/([A-Za-z])/g," $1 "),a=a.replace(/^\s*/,"").replace(/\s*$/,""),a=a.split(/[ ,]+/);for(b=0;bc?this:e,c=(e.max-e.min)*e.transA,e.minPixelPadding= 11 | (e.len-c)/2});t(y.prototype,"render",function(a){var b=this,c=b.options.mapNavigation;a.call(b);b.renderMapNavigation();c.zoomOnDoubleClick&&g.addEvent(b.container,"dblclick",function(a){b.pointer.onContainerDblClick(a)});c.zoomOnMouseWheel&&g.addEvent(b.container,document.onmousewheel===void 0?"DOMMouseScroll":"mousewheel",function(a){b.pointer.onContainerMouseWheel(a)})});v(z.prototype,{onContainerDblClick:function(a){var b=this.chart,a=this.normalize(a);b.isInsidePlot(a.chartX-b.plotLeft,a.chartY- 12 | b.plotTop)&&b.mapZoom(0.5,b.xAxis[0].toValue(a.chartX),b.yAxis[0].toValue(a.chartY))},onContainerMouseWheel:function(a){var b=this.chart,c,a=this.normalize(a);c=a.detail||-(a.wheelDelta/120);b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&b.mapZoom(c>0?2:0.5,b.xAxis[0].toValue(a.chartX),b.yAxis[0].toValue(a.chartY))}});t(z.prototype,"init",function(a,b,c){a.call(this,b,c);if(c.mapNavigation.enableTouchZoom)this.pinchX=this.pinchHor=this.pinchY=this.pinchVert=!0});v(y.prototype,{renderMapNavigation:function(){var a= 13 | this,b=this.options.mapNavigation,c=b.buttons,d,e,f,i=function(){this.handler.call(a)};if(b.enableButtons)for(d in c)if(c.hasOwnProperty(d))f=p(b.buttonOptions,c[d]),e=a.renderer.button(f.text,0,0,i).attr({width:f.width,height:f.height}).css(f.style).add(),e.handler=f.onclick,e.align(v(f,{width:e.width,height:e.height}),null,"spacingBox")},fitToBox:function(a,b){l([["x","width"],["y","height"]],function(c){var d=c[0],c=c[1];a[d]+a[c]>b[d]+b[c]&&(a[c]>b[c]?(a[c]=b[c],a[d]=b[d]):a[d]=b[d]+b[c]-a[c]); 14 | a[c]>b[c]&&(a[c]=b[c]);a[d]"},states:{normal:{animation:!0}}});r=g.extendClass(s,{applyOptions:function(a,b){var c=s.prototype.applyOptions.call(this,a,b);if(c.path&&typeof c.path==="string")c.path=c.options.path=g.splitPath(c.path);return c},onMouseOver:function(){clearTimeout(this.colorInterval); 16 | s.prototype.onMouseOver.call(this)},onMouseOut:function(){var a=this,b=+new Date,c=u(a.options.color),d=u(a.pointAttr.hover.fill),e=a.series.options.states.normal.animation,f=e&&(e.duration||500);if(f&&c.rgba.length===4&&d.rgba.length===4)delete a.pointAttr[""].fill,clearTimeout(a.colorInterval),a.colorInterval=setInterval(function(){var e=(new Date-b)/f,h=a.graphic;e>1&&(e=1);h&&h.attr("fill",x(d,c,e));e>=1&&clearTimeout(a.colorInterval)},13);s.prototype.onMouseOut.call(a)}});k.map=g.extendClass(k.scatter, 17 | {type:"map",pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},colorKey:"y",pointClass:r,trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:w,supportsDrilldown:!0,getExtremesFromAll:!0,useMapGeometry:!0,init:function(a){var b=this,c=a.options.legend.valueDecimals,d=[],e,f,i,h,j,o,m;o=a.options.legend.layout==="horizontal";g.Series.prototype.init.apply(this,arguments);j=b.options.colorRange;if(h=b.options.valueRanges)l(h,function(a){f=a.from;i=a.to;e= 18 | "";f===void 0?e="< ":i===void 0&&(e="> ");f!==void 0&&(e+=A(f,c));f!==void 0&&i!==void 0&&(e+=" - ");i!==void 0&&(e+=A(i,c));d.push(g.extend({chart:b.chart,name:e,options:{},drawLegendSymbol:k.area.prototype.drawLegendSymbol,visible:!0,setState:function(){},setVisible:function(){}},a))}),b.legendItems=d;else if(j)f=j.from,i=j.to,h=j.fromLabel,j=j.toLabel,m=o?[0,0,1,0]:[0,1,0,0],o||(o=h,h=j,j=o),o={linearGradient:{x1:m[0],y1:m[1],x2:m[2],y2:m[3]},stops:[[0,f],[1,i]]},d=[{chart:b.chart,options:{},fromLabel:h, 19 | toLabel:j,color:o,drawLegendSymbol:this.drawLegendSymbolGradient,visible:!0,setState:function(){},setVisible:function(){}}],b.legendItems=d},drawLegendSymbol:k.area.prototype.drawLegendSymbol,drawLegendSymbolGradient:function(a,b){var c=a.options.symbolPadding,d=n(a.options.padding,8),e,f,i=this.chart.renderer.fontMetrics(a.options.itemStyle.fontSize).h,h=a.options.layout==="horizontal",j;j=n(a.options.rectangleLength,200);h?(e=-(c/2),f=0):(e=-j+a.baseline-c/2,f=d+i);b.fromText=this.chart.renderer.text(b.fromLabel, 20 | f,e).attr({zIndex:2}).add(b.legendGroup);f=b.fromText.getBBox();b.legendSymbol=this.chart.renderer.rect(h?f.x+f.width+c:f.x-i-c,f.y,h?j:i,h?i:j,2).attr({zIndex:1}).add(b.legendGroup);j=b.legendSymbol.getBBox();b.toText=this.chart.renderer.text(b.toLabel,j.x+j.width+c,h?e:j.y+j.height-c).attr({zIndex:2}).add(b.legendGroup);e=b.toText.getBBox();h?(a.offsetWidth=f.width+j.width+e.width+c*2+d,a.itemY=i+d):(a.offsetWidth=Math.max(f.width,e.width)+c+j.width+d,a.itemY=j.height+d,a.itemX=c)},getBox:function(a){var b= 21 | Number.MIN_VALUE,c=Number.MAX_VALUE,d=Number.MIN_VALUE,e=Number.MAX_VALUE;l(a||this.options.data,function(a){for(var i=a.path,h=i.length,j=!1,g=Number.MIN_VALUE,m=Number.MAX_VALUE,k=Number.MIN_VALUE,l=Number.MAX_VALUE;h--;)typeof i[h]==="number"&&!isNaN(i[h])&&(j?(g=Math.max(g,i[h]),m=Math.min(m,i[h])):(k=Math.max(k,i[h]),l=Math.min(l,i[h])),j=!j);a._maxX=g;a._minX=m;a._maxY=k;a._minY=l;b=Math.max(b,g);c=Math.min(c,m);d=Math.max(d,k);e=Math.min(e,l)});this.minY=e;this.maxY=d;this.minX=c;this.maxX= 22 | b},translatePath:function(a){var b=!1,c=this.xAxis,d=this.yAxis,e,a=[].concat(a);for(e=a.length;e--;)typeof a[e]==="number"&&(a[e]=b?Math.round(c.translate(a[e])):Math.round(d.len-d.translate(a[e])),b=!b);return a},setData:function(){g.Series.prototype.setData.apply(this,arguments);this.getBox()},translate:function(){var a=this,b=Number.MAX_VALUE,c=Number.MIN_VALUE;a.generatePoints();l(a.data,function(d){d.shapeType="path";d.shapeArgs={d:a.translatePath(d.path)};if(typeof d.y==="number")if(d.y>c)c= 23 | d.y;else if(d.y=i)&&(h===void 0||k<=h)){l=m.color;break}}else e&&k!==void 0&&(m=1-(b-k)/(b-a),l=k===null?c.nullColor:x(i,h,m));if(l)g.color=null,g.options.color=l})},drawGraph:w,drawDataLabels:w,drawPoints:function(){var a=this.xAxis, 24 | b=this.yAxis,c=this.colorKey;l(this.data,function(a){a.plotY=1;if(a[c]===null)a[c]=0,a.isNull=!0});k.column.prototype.drawPoints.apply(this);l(this.data,function(d){var e=d.dataLabels,f=a.toPixels(d._minX,!0),g=a.toPixels(d._maxX,!0),h=b.toPixels(d._minY,!0),j=b.toPixels(d._maxY,!0);d.plotX=Math.round(f+(g-f)*n(e&&e.anchorX,0.5));d.plotY=Math.round(h+(j-h)*n(e&&e.anchorY,0.5));d.isNull&&(d[c]=null)});g.Series.prototype.drawDataLabels.call(this)},animateDrilldown:function(a){var b=this.chart.plotBox, 25 | c=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],d=c.bBox,e=this.chart.options.drilldown.animation;if(!a)a=Math.min(d.width/b.width,d.height/b.height),c.shapeArgs={scaleX:a,scaleY:a,translateX:d.x,translateY:d.y},l(this.points,function(a){a.graphic.attr(c.shapeArgs).animate({scaleX:1,scaleY:1,translateX:0,translateY:0},e)}),delete this.animate},animateDrillupFrom:function(a){k.column.prototype.animateDrillupFrom.call(this,a)},animateDrillupTo:function(a){k.column.prototype.animateDrillupTo.call(this, 26 | a)}});q.mapline=p(q.map,{lineWidth:1,backgroundColor:"none"});k.mapline=g.extendClass(k.map,{type:"mapline",pointAttrToOptions:{stroke:"color","stroke-width":"lineWidth",fill:"backgroundColor"},drawLegendSymbol:k.line.prototype.drawLegendSymbol});q.mappoint=p(q.scatter,{dataLabels:{enabled:!0,format:"{point.name}",color:"black",style:{textShadow:"0 0 5px white"}}});k.mappoint=g.extendClass(k.scatter,{type:"mappoint"});g.Map=function(a,b){var c={endOnTick:!1,gridLineWidth:0,labels:{enabled:!1},lineWidth:0, 27 | minPadding:0,maxPadding:0,startOnTick:!1,tickWidth:0,title:null},d;d=a.series;a.series=null;a=p({chart:{type:"map",panning:"xy"},xAxis:c,yAxis:p(c,{reversed:!0})},a,{chart:{inverted:!1}});a.series=d;return new g.Chart(a,b)}})(Highcharts); 28 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/no-data-to-display.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Plugin for displaying a message when there is no data visible in chart. 4 | 5 | (c) 2010-2013 Highsoft AS 6 | Author: Øystein Moseng 7 | 8 | License: www.highcharts.com/license 9 | */ 10 | (function(c){function f(){return!!this.points.length}function g(){this.hasData()?this.hideNoData():this.showNoData()}var d=c.seriesTypes,e=c.Chart.prototype,h=c.getOptions(),i=c.extend;i(h.lang,{noData:"No data to display"});h.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"},attr:{},style:{fontWeight:"bold",fontSize:"12px",color:"#60606a"}};d.pie.prototype.hasData=f;if(d.gauge)d.gauge.prototype.hasData=f;if(d.waterfall)d.waterfall.prototype.hasData=f;c.Series.prototype.hasData=function(){return this.dataMax!== 11 | void 0&&this.dataMin!==void 0};e.showNoData=function(a){var b=this.options,a=a||b.lang.noData,b=b.noData;if(!this.noDataLabel)this.noDataLabel=this.renderer.label(a,0,0,null,null,null,null,null,"no-data").attr(b.attr).css(b.style).add(),this.noDataLabel.align(i(this.noDataLabel.getBBox(),b.position),!1,"plotBox")};e.hideNoData=function(){if(this.noDataLabel)this.noDataLabel=this.noDataLabel.destroy()};e.hasData=function(){for(var a=this.series,b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0; 12 | return!1};e.callbacks.push(function(a){c.addEvent(a,"load",g);c.addEvent(a,"redraw",g)})})(Highcharts); 13 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/modules/no-data-to-display.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Highcharts JS v3.0.6 (2013-10-04) 3 | * Plugin for displaying a message when there is no data visible in chart. 4 | * 5 | * (c) 2010-2013 Highsoft AS 6 | * Author: Øystein Moseng 7 | * 8 | * License: www.highcharts.com/license 9 | */ 10 | 11 | (function (H) { // docs 12 | 13 | var seriesTypes = H.seriesTypes, 14 | chartPrototype = H.Chart.prototype, 15 | defaultOptions = H.getOptions(), 16 | extend = H.extend; 17 | 18 | // Add language option 19 | extend(defaultOptions.lang, { 20 | noData: 'No data to display' 21 | }); 22 | 23 | // Add default display options for message 24 | defaultOptions.noData = { 25 | position: { 26 | x: 0, 27 | y: 0, 28 | align: 'center', 29 | verticalAlign: 'middle' 30 | }, 31 | attr: { 32 | }, 33 | style: { 34 | fontWeight: 'bold', 35 | fontSize: '12px', 36 | color: '#60606a' 37 | } 38 | }; 39 | 40 | /** 41 | * Define hasData functions for series. These return true if there are data points on this series within the plot area 42 | */ 43 | function hasDataPie() { 44 | return !!this.points.length; /* != 0 */ 45 | } 46 | 47 | seriesTypes.pie.prototype.hasData = hasDataPie; 48 | 49 | if (seriesTypes.gauge) { 50 | seriesTypes.gauge.prototype.hasData = hasDataPie; 51 | } 52 | 53 | if (seriesTypes.waterfall) { 54 | seriesTypes.waterfall.prototype.hasData = hasDataPie; 55 | } 56 | 57 | H.Series.prototype.hasData = function () { 58 | return this.dataMax !== undefined && this.dataMin !== undefined; 59 | }; 60 | 61 | /** 62 | * Display a no-data message. 63 | * 64 | * @param {String} str An optional message to show in place of the default one 65 | */ 66 | chartPrototype.showNoData = function (str) { 67 | var chart = this, 68 | options = chart.options, 69 | text = str || options.lang.noData, 70 | noDataOptions = options.noData; 71 | 72 | if (!chart.noDataLabel) { 73 | chart.noDataLabel = chart.renderer.label(text, 0, 0, null, null, null, null, null, 'no-data') 74 | .attr(noDataOptions.attr) 75 | .css(noDataOptions.style) 76 | .add(); 77 | chart.noDataLabel.align(extend(chart.noDataLabel.getBBox(), noDataOptions.position), false, 'plotBox'); 78 | } 79 | }; 80 | 81 | /** 82 | * Hide no-data message 83 | */ 84 | chartPrototype.hideNoData = function () { 85 | var chart = this; 86 | if (chart.noDataLabel) { 87 | chart.noDataLabel = chart.noDataLabel.destroy(); 88 | } 89 | }; 90 | 91 | /** 92 | * Returns true if there are data points within the plot area now 93 | */ 94 | chartPrototype.hasData = function () { 95 | var chart = this, 96 | series = chart.series, 97 | i = series.length; 98 | 99 | while (i--) { 100 | if (series[i].hasData() && !series[i].options.isInternal) { 101 | return true; 102 | } 103 | } 104 | 105 | return false; 106 | }; 107 | 108 | /** 109 | * Show no-data message if there is no data in sight. Otherwise, hide it. 110 | */ 111 | function handleNoData() { 112 | var chart = this; 113 | if (chart.hasData()) { 114 | chart.hideNoData(); 115 | } else { 116 | chart.showNoData(); 117 | } 118 | } 119 | 120 | /** 121 | * Add event listener to handle automatic display of no-data message 122 | */ 123 | chartPrototype.callbacks.push(function (chart) { 124 | H.addEvent(chart, 'load', handleNoData); 125 | H.addEvent(chart, 'redraw', handleNoData); 126 | }); 127 | 128 | }(Highcharts)); 129 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/themes/dark-blue.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dark blue theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#DDDF0D", "#55BF3B", "#DF5353", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee", 8 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 9 | chart: { 10 | backgroundColor: { 11 | linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 12 | stops: [ 13 | [0, 'rgb(48, 48, 96)'], 14 | [1, 'rgb(0, 0, 0)'] 15 | ] 16 | }, 17 | borderColor: '#000000', 18 | borderWidth: 2, 19 | className: 'dark-container', 20 | plotBackgroundColor: 'rgba(255, 255, 255, .1)', 21 | plotBorderColor: '#CCCCCC', 22 | plotBorderWidth: 1 23 | }, 24 | title: { 25 | style: { 26 | color: '#C0C0C0', 27 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 28 | } 29 | }, 30 | subtitle: { 31 | style: { 32 | color: '#666666', 33 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 34 | } 35 | }, 36 | xAxis: { 37 | gridLineColor: '#333333', 38 | gridLineWidth: 1, 39 | labels: { 40 | style: { 41 | color: '#A0A0A0' 42 | } 43 | }, 44 | lineColor: '#A0A0A0', 45 | tickColor: '#A0A0A0', 46 | title: { 47 | style: { 48 | color: '#CCC', 49 | fontWeight: 'bold', 50 | fontSize: '12px', 51 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 52 | 53 | } 54 | } 55 | }, 56 | yAxis: { 57 | gridLineColor: '#333333', 58 | labels: { 59 | style: { 60 | color: '#A0A0A0' 61 | } 62 | }, 63 | lineColor: '#A0A0A0', 64 | minorTickInterval: null, 65 | tickColor: '#A0A0A0', 66 | tickWidth: 1, 67 | title: { 68 | style: { 69 | color: '#CCC', 70 | fontWeight: 'bold', 71 | fontSize: '12px', 72 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 73 | } 74 | } 75 | }, 76 | tooltip: { 77 | backgroundColor: 'rgba(0, 0, 0, 0.75)', 78 | style: { 79 | color: '#F0F0F0' 80 | } 81 | }, 82 | toolbar: { 83 | itemStyle: { 84 | color: 'silver' 85 | } 86 | }, 87 | plotOptions: { 88 | line: { 89 | dataLabels: { 90 | color: '#CCC' 91 | }, 92 | marker: { 93 | lineColor: '#333' 94 | } 95 | }, 96 | spline: { 97 | marker: { 98 | lineColor: '#333' 99 | } 100 | }, 101 | scatter: { 102 | marker: { 103 | lineColor: '#333' 104 | } 105 | }, 106 | candlestick: { 107 | lineColor: 'white' 108 | } 109 | }, 110 | legend: { 111 | itemStyle: { 112 | font: '9pt Trebuchet MS, Verdana, sans-serif', 113 | color: '#A0A0A0' 114 | }, 115 | itemHoverStyle: { 116 | color: '#FFF' 117 | }, 118 | itemHiddenStyle: { 119 | color: '#444' 120 | } 121 | }, 122 | credits: { 123 | style: { 124 | color: '#666' 125 | } 126 | }, 127 | labels: { 128 | style: { 129 | color: '#CCC' 130 | } 131 | }, 132 | 133 | navigation: { 134 | buttonOptions: { 135 | symbolStroke: '#DDDDDD', 136 | hoverSymbolStroke: '#FFFFFF', 137 | theme: { 138 | fill: { 139 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 140 | stops: [ 141 | [0.4, '#606060'], 142 | [0.6, '#333333'] 143 | ] 144 | }, 145 | stroke: '#000000' 146 | } 147 | } 148 | }, 149 | 150 | // scroll charts 151 | rangeSelector: { 152 | buttonTheme: { 153 | fill: { 154 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 155 | stops: [ 156 | [0.4, '#888'], 157 | [0.6, '#555'] 158 | ] 159 | }, 160 | stroke: '#000000', 161 | style: { 162 | color: '#CCC', 163 | fontWeight: 'bold' 164 | }, 165 | states: { 166 | hover: { 167 | fill: { 168 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 169 | stops: [ 170 | [0.4, '#BBB'], 171 | [0.6, '#888'] 172 | ] 173 | }, 174 | stroke: '#000000', 175 | style: { 176 | color: 'white' 177 | } 178 | }, 179 | select: { 180 | fill: { 181 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 182 | stops: [ 183 | [0.1, '#000'], 184 | [0.3, '#333'] 185 | ] 186 | }, 187 | stroke: '#000000', 188 | style: { 189 | color: 'yellow' 190 | } 191 | } 192 | } 193 | }, 194 | inputStyle: { 195 | backgroundColor: '#333', 196 | color: 'silver' 197 | }, 198 | labelStyle: { 199 | color: 'silver' 200 | } 201 | }, 202 | 203 | navigator: { 204 | handles: { 205 | backgroundColor: '#666', 206 | borderColor: '#AAA' 207 | }, 208 | outlineColor: '#CCC', 209 | maskFill: 'rgba(16, 16, 16, 0.5)', 210 | series: { 211 | color: '#7798BF', 212 | lineColor: '#A6C7ED' 213 | } 214 | }, 215 | 216 | scrollbar: { 217 | barBackgroundColor: { 218 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 219 | stops: [ 220 | [0.4, '#888'], 221 | [0.6, '#555'] 222 | ] 223 | }, 224 | barBorderColor: '#CCC', 225 | buttonArrowColor: '#CCC', 226 | buttonBackgroundColor: { 227 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 228 | stops: [ 229 | [0.4, '#888'], 230 | [0.6, '#555'] 231 | ] 232 | }, 233 | buttonBorderColor: '#CCC', 234 | rifleColor: '#FFF', 235 | trackBackgroundColor: { 236 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 237 | stops: [ 238 | [0, '#000'], 239 | [1, '#333'] 240 | ] 241 | }, 242 | trackBorderColor: '#666' 243 | }, 244 | 245 | // special colors for some of the 246 | legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', 247 | legendBackgroundColorSolid: 'rgb(35, 35, 70)', 248 | dataLabelsColor: '#444', 249 | textColor: '#C0C0C0', 250 | maskColor: 'rgba(255,255,255,0.3)' 251 | }; 252 | 253 | // Apply the theme 254 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 255 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/themes/dark-green.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dark blue theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#DDDF0D", "#55BF3B", "#DF5353", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee", 8 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 9 | chart: { 10 | backgroundColor: { 11 | linearGradient: [0, 0, 250, 500], 12 | stops: [ 13 | [0, 'rgb(48, 96, 48)'], 14 | [1, 'rgb(0, 0, 0)'] 15 | ] 16 | }, 17 | borderColor: '#000000', 18 | borderWidth: 2, 19 | className: 'dark-container', 20 | plotBackgroundColor: 'rgba(255, 255, 255, .1)', 21 | plotBorderColor: '#CCCCCC', 22 | plotBorderWidth: 1 23 | }, 24 | title: { 25 | style: { 26 | color: '#C0C0C0', 27 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 28 | } 29 | }, 30 | subtitle: { 31 | style: { 32 | color: '#666666', 33 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 34 | } 35 | }, 36 | xAxis: { 37 | gridLineColor: '#333333', 38 | gridLineWidth: 1, 39 | labels: { 40 | style: { 41 | color: '#A0A0A0' 42 | } 43 | }, 44 | lineColor: '#A0A0A0', 45 | tickColor: '#A0A0A0', 46 | title: { 47 | style: { 48 | color: '#CCC', 49 | fontWeight: 'bold', 50 | fontSize: '12px', 51 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 52 | 53 | } 54 | } 55 | }, 56 | yAxis: { 57 | gridLineColor: '#333333', 58 | labels: { 59 | style: { 60 | color: '#A0A0A0' 61 | } 62 | }, 63 | lineColor: '#A0A0A0', 64 | minorTickInterval: null, 65 | tickColor: '#A0A0A0', 66 | tickWidth: 1, 67 | title: { 68 | style: { 69 | color: '#CCC', 70 | fontWeight: 'bold', 71 | fontSize: '12px', 72 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 73 | } 74 | } 75 | }, 76 | tooltip: { 77 | backgroundColor: 'rgba(0, 0, 0, 0.75)', 78 | style: { 79 | color: '#F0F0F0' 80 | } 81 | }, 82 | toolbar: { 83 | itemStyle: { 84 | color: 'silver' 85 | } 86 | }, 87 | plotOptions: { 88 | line: { 89 | dataLabels: { 90 | color: '#CCC' 91 | }, 92 | marker: { 93 | lineColor: '#333' 94 | } 95 | }, 96 | spline: { 97 | marker: { 98 | lineColor: '#333' 99 | } 100 | }, 101 | scatter: { 102 | marker: { 103 | lineColor: '#333' 104 | } 105 | }, 106 | candlestick: { 107 | lineColor: 'white' 108 | } 109 | }, 110 | legend: { 111 | itemStyle: { 112 | font: '9pt Trebuchet MS, Verdana, sans-serif', 113 | color: '#A0A0A0' 114 | }, 115 | itemHoverStyle: { 116 | color: '#FFF' 117 | }, 118 | itemHiddenStyle: { 119 | color: '#444' 120 | } 121 | }, 122 | credits: { 123 | style: { 124 | color: '#666' 125 | } 126 | }, 127 | labels: { 128 | style: { 129 | color: '#CCC' 130 | } 131 | }, 132 | 133 | 134 | navigation: { 135 | buttonOptions: { 136 | symbolStroke: '#DDDDDD', 137 | hoverSymbolStroke: '#FFFFFF', 138 | theme: { 139 | fill: { 140 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 141 | stops: [ 142 | [0.4, '#606060'], 143 | [0.6, '#333333'] 144 | ] 145 | }, 146 | stroke: '#000000' 147 | } 148 | } 149 | }, 150 | 151 | // scroll charts 152 | rangeSelector: { 153 | buttonTheme: { 154 | fill: { 155 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 156 | stops: [ 157 | [0.4, '#888'], 158 | [0.6, '#555'] 159 | ] 160 | }, 161 | stroke: '#000000', 162 | style: { 163 | color: '#CCC', 164 | fontWeight: 'bold' 165 | }, 166 | states: { 167 | hover: { 168 | fill: { 169 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 170 | stops: [ 171 | [0.4, '#BBB'], 172 | [0.6, '#888'] 173 | ] 174 | }, 175 | stroke: '#000000', 176 | style: { 177 | color: 'white' 178 | } 179 | }, 180 | select: { 181 | fill: { 182 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 183 | stops: [ 184 | [0.1, '#000'], 185 | [0.3, '#333'] 186 | ] 187 | }, 188 | stroke: '#000000', 189 | style: { 190 | color: 'yellow' 191 | } 192 | } 193 | } 194 | }, 195 | inputStyle: { 196 | backgroundColor: '#333', 197 | color: 'silver' 198 | }, 199 | labelStyle: { 200 | color: 'silver' 201 | } 202 | }, 203 | 204 | navigator: { 205 | handles: { 206 | backgroundColor: '#666', 207 | borderColor: '#AAA' 208 | }, 209 | outlineColor: '#CCC', 210 | maskFill: 'rgba(16, 16, 16, 0.5)', 211 | series: { 212 | color: '#7798BF', 213 | lineColor: '#A6C7ED' 214 | } 215 | }, 216 | 217 | scrollbar: { 218 | barBackgroundColor: { 219 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 220 | stops: [ 221 | [0.4, '#888'], 222 | [0.6, '#555'] 223 | ] 224 | }, 225 | barBorderColor: '#CCC', 226 | buttonArrowColor: '#CCC', 227 | buttonBackgroundColor: { 228 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 229 | stops: [ 230 | [0.4, '#888'], 231 | [0.6, '#555'] 232 | ] 233 | }, 234 | buttonBorderColor: '#CCC', 235 | rifleColor: '#FFF', 236 | trackBackgroundColor: { 237 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 238 | stops: [ 239 | [0, '#000'], 240 | [1, '#333'] 241 | ] 242 | }, 243 | trackBorderColor: '#666' 244 | }, 245 | 246 | // special colors for some of the 247 | legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', 248 | legendBackgroundColorSolid: 'rgb(35, 35, 70)', 249 | dataLabelsColor: '#444', 250 | textColor: '#C0C0C0', 251 | maskColor: 'rgba(255,255,255,0.3)' 252 | }; 253 | 254 | // Apply the theme 255 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 256 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/themes/gray.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gray theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#DDDF0D", "#7798BF", "#55BF3B", "#DF5353", "#aaeeee", "#ff0066", "#eeaaee", 8 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 9 | chart: { 10 | backgroundColor: { 11 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 12 | stops: [ 13 | [0, 'rgb(96, 96, 96)'], 14 | [1, 'rgb(16, 16, 16)'] 15 | ] 16 | }, 17 | borderWidth: 0, 18 | borderRadius: 15, 19 | plotBackgroundColor: null, 20 | plotShadow: false, 21 | plotBorderWidth: 0 22 | }, 23 | title: { 24 | style: { 25 | color: '#FFF', 26 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 27 | } 28 | }, 29 | subtitle: { 30 | style: { 31 | color: '#DDD', 32 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 33 | } 34 | }, 35 | xAxis: { 36 | gridLineWidth: 0, 37 | lineColor: '#999', 38 | tickColor: '#999', 39 | labels: { 40 | style: { 41 | color: '#999', 42 | fontWeight: 'bold' 43 | } 44 | }, 45 | title: { 46 | style: { 47 | color: '#AAA', 48 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 49 | } 50 | } 51 | }, 52 | yAxis: { 53 | alternateGridColor: null, 54 | minorTickInterval: null, 55 | gridLineColor: 'rgba(255, 255, 255, .1)', 56 | minorGridLineColor: 'rgba(255,255,255,0.07)', 57 | lineWidth: 0, 58 | tickWidth: 0, 59 | labels: { 60 | style: { 61 | color: '#999', 62 | fontWeight: 'bold' 63 | } 64 | }, 65 | title: { 66 | style: { 67 | color: '#AAA', 68 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 69 | } 70 | } 71 | }, 72 | legend: { 73 | itemStyle: { 74 | color: '#CCC' 75 | }, 76 | itemHoverStyle: { 77 | color: '#FFF' 78 | }, 79 | itemHiddenStyle: { 80 | color: '#333' 81 | } 82 | }, 83 | labels: { 84 | style: { 85 | color: '#CCC' 86 | } 87 | }, 88 | tooltip: { 89 | backgroundColor: { 90 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 91 | stops: [ 92 | [0, 'rgba(96, 96, 96, .8)'], 93 | [1, 'rgba(16, 16, 16, .8)'] 94 | ] 95 | }, 96 | borderWidth: 0, 97 | style: { 98 | color: '#FFF' 99 | } 100 | }, 101 | 102 | 103 | plotOptions: { 104 | series: { 105 | shadow: true 106 | }, 107 | line: { 108 | dataLabels: { 109 | color: '#CCC' 110 | }, 111 | marker: { 112 | lineColor: '#333' 113 | } 114 | }, 115 | spline: { 116 | marker: { 117 | lineColor: '#333' 118 | } 119 | }, 120 | scatter: { 121 | marker: { 122 | lineColor: '#333' 123 | } 124 | }, 125 | candlestick: { 126 | lineColor: 'white' 127 | } 128 | }, 129 | 130 | toolbar: { 131 | itemStyle: { 132 | color: '#CCC' 133 | } 134 | }, 135 | 136 | navigation: { 137 | buttonOptions: { 138 | symbolStroke: '#DDDDDD', 139 | hoverSymbolStroke: '#FFFFFF', 140 | theme: { 141 | fill: { 142 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 143 | stops: [ 144 | [0.4, '#606060'], 145 | [0.6, '#333333'] 146 | ] 147 | }, 148 | stroke: '#000000' 149 | } 150 | } 151 | }, 152 | 153 | // scroll charts 154 | rangeSelector: { 155 | buttonTheme: { 156 | fill: { 157 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 158 | stops: [ 159 | [0.4, '#888'], 160 | [0.6, '#555'] 161 | ] 162 | }, 163 | stroke: '#000000', 164 | style: { 165 | color: '#CCC', 166 | fontWeight: 'bold' 167 | }, 168 | states: { 169 | hover: { 170 | fill: { 171 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 172 | stops: [ 173 | [0.4, '#BBB'], 174 | [0.6, '#888'] 175 | ] 176 | }, 177 | stroke: '#000000', 178 | style: { 179 | color: 'white' 180 | } 181 | }, 182 | select: { 183 | fill: { 184 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 185 | stops: [ 186 | [0.1, '#000'], 187 | [0.3, '#333'] 188 | ] 189 | }, 190 | stroke: '#000000', 191 | style: { 192 | color: 'yellow' 193 | } 194 | } 195 | } 196 | }, 197 | inputStyle: { 198 | backgroundColor: '#333', 199 | color: 'silver' 200 | }, 201 | labelStyle: { 202 | color: 'silver' 203 | } 204 | }, 205 | 206 | navigator: { 207 | handles: { 208 | backgroundColor: '#666', 209 | borderColor: '#AAA' 210 | }, 211 | outlineColor: '#CCC', 212 | maskFill: 'rgba(16, 16, 16, 0.5)', 213 | series: { 214 | color: '#7798BF', 215 | lineColor: '#A6C7ED' 216 | } 217 | }, 218 | 219 | scrollbar: { 220 | barBackgroundColor: { 221 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 222 | stops: [ 223 | [0.4, '#888'], 224 | [0.6, '#555'] 225 | ] 226 | }, 227 | barBorderColor: '#CCC', 228 | buttonArrowColor: '#CCC', 229 | buttonBackgroundColor: { 230 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 231 | stops: [ 232 | [0.4, '#888'], 233 | [0.6, '#555'] 234 | ] 235 | }, 236 | buttonBorderColor: '#CCC', 237 | rifleColor: '#FFF', 238 | trackBackgroundColor: { 239 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 240 | stops: [ 241 | [0, '#000'], 242 | [1, '#333'] 243 | ] 244 | }, 245 | trackBorderColor: '#666' 246 | }, 247 | 248 | // special colors for some of the demo examples 249 | legendBackgroundColor: 'rgba(48, 48, 48, 0.8)', 250 | legendBackgroundColorSolid: 'rgb(70, 70, 70)', 251 | dataLabelsColor: '#444', 252 | textColor: '#E0E0E0', 253 | maskColor: 'rgba(255,255,255,0.3)' 254 | }; 255 | 256 | // Apply the theme 257 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 258 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/themes/grid.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Grid theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'], 8 | chart: { 9 | backgroundColor: { 10 | linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 11 | stops: [ 12 | [0, 'rgb(255, 255, 255)'], 13 | [1, 'rgb(240, 240, 255)'] 14 | ] 15 | }, 16 | borderWidth: 2, 17 | plotBackgroundColor: 'rgba(255, 255, 255, .9)', 18 | plotShadow: true, 19 | plotBorderWidth: 1 20 | }, 21 | title: { 22 | style: { 23 | color: '#000', 24 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 25 | } 26 | }, 27 | subtitle: { 28 | style: { 29 | color: '#666666', 30 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 31 | } 32 | }, 33 | xAxis: { 34 | gridLineWidth: 1, 35 | lineColor: '#000', 36 | tickColor: '#000', 37 | labels: { 38 | style: { 39 | color: '#000', 40 | font: '11px Trebuchet MS, Verdana, sans-serif' 41 | } 42 | }, 43 | title: { 44 | style: { 45 | color: '#333', 46 | fontWeight: 'bold', 47 | fontSize: '12px', 48 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 49 | 50 | } 51 | } 52 | }, 53 | yAxis: { 54 | minorTickInterval: 'auto', 55 | lineColor: '#000', 56 | lineWidth: 1, 57 | tickWidth: 1, 58 | tickColor: '#000', 59 | labels: { 60 | style: { 61 | color: '#000', 62 | font: '11px Trebuchet MS, Verdana, sans-serif' 63 | } 64 | }, 65 | title: { 66 | style: { 67 | color: '#333', 68 | fontWeight: 'bold', 69 | fontSize: '12px', 70 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 71 | } 72 | } 73 | }, 74 | legend: { 75 | itemStyle: { 76 | font: '9pt Trebuchet MS, Verdana, sans-serif', 77 | color: 'black' 78 | 79 | }, 80 | itemHoverStyle: { 81 | color: '#039' 82 | }, 83 | itemHiddenStyle: { 84 | color: 'gray' 85 | } 86 | }, 87 | labels: { 88 | style: { 89 | color: '#99b' 90 | } 91 | }, 92 | 93 | navigation: { 94 | buttonOptions: { 95 | theme: { 96 | stroke: '#CCCCCC' 97 | } 98 | } 99 | } 100 | }; 101 | 102 | // Apply the theme 103 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 104 | -------------------------------------------------------------------------------- /static/ueditor/third-party/highcharts/themes/skies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Skies theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"], 8 | chart: { 9 | className: 'skies', 10 | borderWidth: 0, 11 | plotShadow: true, 12 | plotBackgroundImage: 'http://www.highcharts.com/demo/gfx/skies.jpg', 13 | plotBackgroundColor: { 14 | linearGradient: [0, 0, 250, 500], 15 | stops: [ 16 | [0, 'rgba(255, 255, 255, 1)'], 17 | [1, 'rgba(255, 255, 255, 0)'] 18 | ] 19 | }, 20 | plotBorderWidth: 1 21 | }, 22 | title: { 23 | style: { 24 | color: '#3E576F', 25 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 26 | } 27 | }, 28 | subtitle: { 29 | style: { 30 | color: '#6D869F', 31 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 32 | } 33 | }, 34 | xAxis: { 35 | gridLineWidth: 0, 36 | lineColor: '#C0D0E0', 37 | tickColor: '#C0D0E0', 38 | labels: { 39 | style: { 40 | color: '#666', 41 | fontWeight: 'bold' 42 | } 43 | }, 44 | title: { 45 | style: { 46 | color: '#666', 47 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 48 | } 49 | } 50 | }, 51 | yAxis: { 52 | alternateGridColor: 'rgba(255, 255, 255, .5)', 53 | lineColor: '#C0D0E0', 54 | tickColor: '#C0D0E0', 55 | tickWidth: 1, 56 | labels: { 57 | style: { 58 | color: '#666', 59 | fontWeight: 'bold' 60 | } 61 | }, 62 | title: { 63 | style: { 64 | color: '#666', 65 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 66 | } 67 | } 68 | }, 69 | legend: { 70 | itemStyle: { 71 | font: '9pt Trebuchet MS, Verdana, sans-serif', 72 | color: '#3E576F' 73 | }, 74 | itemHoverStyle: { 75 | color: 'black' 76 | }, 77 | itemHiddenStyle: { 78 | color: 'silver' 79 | } 80 | }, 81 | labels: { 82 | style: { 83 | color: '#3E576F' 84 | } 85 | } 86 | }; 87 | 88 | // Apply the theme 89 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 90 | -------------------------------------------------------------------------------- /static/ueditor/third-party/snapscreen/UEditorSnapscreen.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/snapscreen/UEditorSnapscreen.exe -------------------------------------------------------------------------------- /static/ueditor/third-party/video-js/font/vjs.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/video-js/font/vjs.eot -------------------------------------------------------------------------------- /static/ueditor/third-party/video-js/font/vjs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 23 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 43 | 56 | 57 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /static/ueditor/third-party/video-js/font/vjs.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/video-js/font/vjs.ttf -------------------------------------------------------------------------------- /static/ueditor/third-party/video-js/font/vjs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/video-js/font/vjs.woff -------------------------------------------------------------------------------- /static/ueditor/third-party/video-js/video-js.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | Video.js Default Styles (http://videojs.com) 3 | Version 4.3.0 4 | Create your own skin at http://designer.videojs.com 5 | */.vjs-default-skin{color:#ccc}@font-face{font-family:VideoJS;src:url(font/vjs.eot);src:url(font/vjs.eot?#iefix) format('embedded-opentype'),url(font/vjs.woff) format('woff'),url(font/vjs.ttf) format('truetype');font-weight:400;font-style:normal}.vjs-default-skin .vjs-slider{outline:0;position:relative;cursor:pointer;padding:0;background-color:#333;background-color:rgba(51,51,51,.9)}.vjs-default-skin .vjs-slider:focus{-webkit-box-shadow:0 0 2em #fff;-moz-box-shadow:0 0 2em #fff;box-shadow:0 0 2em #fff}.vjs-default-skin .vjs-slider-handle{position:absolute;left:0;top:0}.vjs-default-skin .vjs-slider-handle:before{content:"\e009";font-family:VideoJS;font-size:1em;line-height:1;text-align:center;text-shadow:0 0 1em #fff;position:absolute;top:0;left:0;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.vjs-default-skin .vjs-control-bar{display:none;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#07141e;background-color:rgba(7,20,30,.7)}.vjs-default-skin.vjs-has-started .vjs-control-bar{display:block;visibility:visible;opacity:1;-webkit-transition:visibility .1s,opacity .1s;-moz-transition:visibility .1s,opacity .1s;-o-transition:visibility .1s,opacity .1s;transition:visibility .1s,opacity .1s}.vjs-default-skin.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{display:block;visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.vjs-default-skin.vjs-controls-disabled .vjs-control-bar{display:none}.vjs-default-skin.vjs-using-native-controls .vjs-control-bar{display:none}@media \0screen{.vjs-default-skin.vjs-user-inactive.vjs-playing .vjs-control-bar :before{content:""}}.vjs-default-skin .vjs-control{outline:0;position:relative;float:left;text-align:center;margin:0;padding:0;height:3em;width:4em}.vjs-default-skin .vjs-control:before{font-family:VideoJS;font-size:1.5em;line-height:2;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;text-shadow:1px 1px 1px rgba(0,0,0,.5)}.vjs-default-skin .vjs-control:focus:before,.vjs-default-skin .vjs-control:hover:before{text-shadow:0 0 1em #fff}.vjs-default-skin .vjs-control:focus{}.vjs-default-skin .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-default-skin .vjs-play-control{width:5em;cursor:pointer}.vjs-default-skin .vjs-play-control:before{content:"\e001"}.vjs-default-skin.vjs-playing .vjs-play-control:before{content:"\e002"}.vjs-default-skin .vjs-mute-control,.vjs-default-skin .vjs-volume-menu-button{cursor:pointer;float:right}.vjs-default-skin .vjs-mute-control:before,.vjs-default-skin .vjs-volume-menu-button:before{content:"\e006"}.vjs-default-skin .vjs-mute-control.vjs-vol-0:before,.vjs-default-skin .vjs-volume-menu-button.vjs-vol-0:before{content:"\e003"}.vjs-default-skin .vjs-mute-control.vjs-vol-1:before,.vjs-default-skin .vjs-volume-menu-button.vjs-vol-1:before{content:"\e004"}.vjs-default-skin .vjs-mute-control.vjs-vol-2:before,.vjs-default-skin .vjs-volume-menu-button.vjs-vol-2:before{content:"\e005"}.vjs-default-skin .vjs-volume-control{width:5em;float:right}.vjs-default-skin .vjs-volume-bar{width:5em;height:.6em;margin:1.1em auto 0}.vjs-default-skin .vjs-volume-menu-button .vjs-menu-content{height:2.9em}.vjs-default-skin .vjs-volume-level{position:absolute;top:0;left:0;height:.5em;background:#66a8cc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC) -50% 0 repeat}.vjs-default-skin .vjs-volume-bar .vjs-volume-handle{width:.5em;height:.5em}.vjs-default-skin .vjs-volume-handle:before{font-size:.9em;top:-.2em;left:-.2em;width:1em;height:1em}.vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content{width:6em;left:-4em}.vjs-default-skin .vjs-progress-control{position:absolute;left:0;right:0;width:auto;font-size:.3em;height:1em;top:-1em;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-default-skin:hover .vjs-progress-control{font-size:.9em;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;transition:all .2s}.vjs-default-skin .vjs-progress-holder{height:100%}.vjs-default-skin .vjs-progress-holder .vjs-play-progress,.vjs-default-skin .vjs-progress-holder .vjs-load-progress{position:absolute;display:block;height:100%;margin:0;padding:0;left:0;top:0}.vjs-default-skin .vjs-play-progress{background:#66a8cc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC) -50% 0 repeat}.vjs-default-skin .vjs-load-progress{background:#646464;background:rgba(255,255,255,.4)}.vjs-default-skin .vjs-seek-handle{width:1.5em;height:100%}.vjs-default-skin .vjs-seek-handle:before{padding-top:.1em}.vjs-default-skin .vjs-time-controls{font-size:1em;line-height:3em}.vjs-default-skin .vjs-current-time{float:left}.vjs-default-skin .vjs-duration{float:left}.vjs-default-skin .vjs-remaining-time{display:none;float:left}.vjs-time-divider{float:left;line-height:3em}.vjs-default-skin .vjs-fullscreen-control{width:3.8em;cursor:pointer;float:right}.vjs-default-skin .vjs-fullscreen-control:before{content:"\e000"}.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:before{content:"\e00b"}.vjs-default-skin .vjs-big-play-button{left:.5em;top:.5em;font-size:3em;display:block;z-index:2;position:absolute;width:4em;height:2.6em;text-align:center;vertical-align:middle;cursor:pointer;opacity:1;background-color:#07141e;background-color:rgba(7,20,30,.7);border:.1em solid #3b4249;-webkit-border-radius:.8em;-moz-border-radius:.8em;border-radius:.8em;-webkit-box-shadow:0 0 1em rgba(255,255,255,.25);-moz-box-shadow:0 0 1em rgba(255,255,255,.25);box-shadow:0 0 1em rgba(255,255,255,.25);-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-default-skin.vjs-big-play-centered .vjs-big-play-button{left:50%;margin-left:-2.1em;top:50%;margin-top:-1.4000000000000001em}.vjs-default-skin.vjs-controls-disabled .vjs-big-play-button{display:none}.vjs-default-skin.vjs-has-started .vjs-big-play-button{display:none}.vjs-default-skin.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-default-skin:hover .vjs-big-play-button,.vjs-default-skin .vjs-big-play-button:focus{outline:0;border-color:#fff;background-color:#505050;background-color:rgba(50,50,50,.75);-webkit-box-shadow:0 0 3em #fff;-moz-box-shadow:0 0 3em #fff;box-shadow:0 0 3em #fff;-webkit-transition:all 0s;-moz-transition:all 0s;-o-transition:all 0s;transition:all 0s}.vjs-default-skin .vjs-big-play-button:before{content:"\e001";font-family:VideoJS;line-height:2.6em;text-shadow:.05em .05em .1em #000;text-align:center;position:absolute;left:0;width:100%;height:100%}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;font-size:4em;line-height:1;width:1em;height:1em;margin-left:-.5em;margin-top:-.5em;opacity:.75;-webkit-animation:spin 1.5s infinite linear;-moz-animation:spin 1.5s infinite linear;-o-animation:spin 1.5s infinite linear;animation:spin 1.5s infinite linear}.vjs-default-skin .vjs-loading-spinner:before{content:"\e01e";font-family:VideoJS;position:absolute;top:0;left:0;width:1em;height:1em;text-align:center;text-shadow:0 0 .1em #000}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.vjs-default-skin .vjs-menu-button{float:right;cursor:pointer}.vjs-default-skin .vjs-menu{display:none;position:absolute;bottom:0;left:0;width:0;height:0;margin-bottom:3em;border-left:2em solid transparent;border-right:2em solid transparent;border-top:1.55em solid #000;border-top-color:rgba(7,40,50,.5)}.vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;position:absolute;width:10em;bottom:1.5em;max-height:15em;overflow:auto;left:-5em;background-color:#07141e;background-color:rgba(7,20,30,.7);-webkit-box-shadow:-.2em -.2em .3em rgba(255,255,255,.2);-moz-box-shadow:-.2em -.2em .3em rgba(255,255,255,.2);box-shadow:-.2em -.2em .3em rgba(255,255,255,.2)}.vjs-default-skin .vjs-menu-button:hover .vjs-menu{display:block}.vjs-default-skin .vjs-menu-button ul li{list-style:none;margin:0;padding:.3em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-default-skin .vjs-menu-button ul li.vjs-selected{background-color:#000}.vjs-default-skin .vjs-menu-button ul li:focus,.vjs-default-skin .vjs-menu-button ul li:hover,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover{outline:0;color:#111;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-default-skin .vjs-subtitles-button:before{content:"\e00c"}.vjs-default-skin .vjs-captions-button:before{content:"\e008"}.vjs-default-skin .vjs-captions-button:focus .vjs-control-content:before,.vjs-default-skin .vjs-captions-button:hover .vjs-control-content:before{-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js{background-color:#000;position:relative;padding:0;font-size:10px;vertical-align:middle;font-weight:400;font-style:normal;font-family:Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js:-moz-full-screen{position:absolute}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0;width:100%!important;height:100%!important;_position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-poster{background-repeat:no-repeat;background-position:50% 50%;background-size:contain;cursor:pointer;height:100%;margin:0;padding:0;position:relative;width:100%}.vjs-poster img{display:block;margin:0 auto;max-height:100%;padding:0;width:100%}.video-js.vjs-using-native-controls .vjs-poster{display:none}.video-js .vjs-text-track-display{text-align:center;position:absolute;bottom:4em;left:1em;right:1em}.video-js .vjs-text-track{display:none;font-size:1.4em;text-align:center;margin-bottom:.1em;background-color:#000;background-color:rgba(0,0,0,.5)}.video-js .vjs-subtitles{color:#fff}.video-js .vjs-captions{color:#fc6}.vjs-tt-cue{display:block}.vjs-default-skin .vjs-hidden{display:none}.vjs-lock-showing{display:block!important;opacity:1;visibility:visible} -------------------------------------------------------------------------------- /static/ueditor/third-party/video-js/video-js.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/video-js/video-js.swf -------------------------------------------------------------------------------- /static/ueditor/third-party/webuploader/Uploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/webuploader/Uploader.swf -------------------------------------------------------------------------------- /static/ueditor/third-party/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /static/ueditor/third-party/zeroclipboard/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/ueditor/third-party/zeroclipboard/ZeroClipboard.swf -------------------------------------------------------------------------------- /static/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yiwuyu/vue-ueditor/1bf6e4dcc584374b5be735745fe7c88d6b03dc10/static/video.mp4 --------------------------------------------------------------------------------