├── .babelrc ├── .editorconfig ├── .eslintrc ├── .gitignore ├── README.MD ├── build ├── 1.bundle.js ├── 2.bundle.js ├── 3fe271c23634e7d1be1152b1448b3c4f.eot ├── app.min.css └── bundle.js ├── index.html ├── package.json ├── src ├── app.vue ├── bower_components │ └── plupload │ │ ├── .bower.json │ │ ├── examples │ │ ├── custom.html │ │ ├── dump.php │ │ ├── events.html │ │ ├── jquery │ │ │ ├── all_runtimes.html │ │ │ ├── jquery_ui_widget.html │ │ │ ├── queue_widget.html │ │ │ └── s3.php │ │ └── upload.php │ │ ├── js │ │ ├── Moxie.swf │ │ ├── Moxie.xap │ │ ├── i18n │ │ │ ├── ar.js │ │ │ ├── az.js │ │ │ ├── be_BY.js │ │ │ ├── bg.js │ │ │ ├── bs.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── cy.js │ │ │ ├── da.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fr.js │ │ │ ├── he.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── hy.js │ │ │ ├── id.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── ka.js │ │ │ ├── kk.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── ku_IQ.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── ms.js │ │ │ ├── nl.js │ │ │ ├── pl.js │ │ │ ├── pt_BR.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── sk.js │ │ │ ├── sq.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── th_TH.js │ │ │ ├── tr.js │ │ │ ├── uk_UA.js │ │ │ ├── vi.js │ │ │ ├── zh_CN.js │ │ │ └── zh_TW.js │ │ ├── jquery.plupload.queue │ │ │ ├── css │ │ │ │ └── jquery.plupload.queue.css │ │ │ ├── img │ │ │ │ ├── backgrounds.gif │ │ │ │ ├── buttons-disabled.png │ │ │ │ ├── buttons.png │ │ │ │ ├── delete.gif │ │ │ │ ├── done.gif │ │ │ │ ├── error.gif │ │ │ │ ├── throbber.gif │ │ │ │ └── transp50.png │ │ │ ├── jquery.plupload.queue.js │ │ │ └── jquery.plupload.queue.min.js │ │ ├── jquery.ui.plupload │ │ │ ├── css │ │ │ │ └── jquery.ui.plupload.css │ │ │ ├── img │ │ │ │ ├── loading.gif │ │ │ │ └── plupload.png │ │ │ ├── jquery.ui.plupload.js │ │ │ └── jquery.ui.plupload.min.js │ │ ├── moxie.js │ │ ├── moxie.min.js │ │ ├── plupload.dev.js │ │ ├── plupload.full.min.js │ │ └── plupload.min.js │ │ ├── license.txt │ │ └── readme.md ├── components │ ├── qiniu-upload │ │ ├── moxie.js │ │ ├── plupload.dev.js │ │ ├── qiniu.js │ │ └── qnupload.vue │ └── video-js │ │ ├── alt │ │ ├── video.novtt.js │ │ ├── video.novtt.min.js │ │ └── video.novtt.min.js.map │ │ ├── font │ │ ├── VideoJS.eot │ │ ├── VideoJS.svg │ │ ├── VideoJS.ttf │ │ └── VideoJS.woff │ │ ├── ie8 │ │ ├── videojs-ie8.js │ │ └── videojs-ie8.min.js │ │ ├── img │ │ ├── B3.jpg │ │ └── demo.png │ │ ├── lang │ │ ├── ar.js │ │ ├── ba.js │ │ ├── bg.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── da.js │ │ ├── de.js │ │ ├── es.js │ │ ├── fi.js │ │ ├── fr.js │ │ ├── hr.js │ │ ├── hu.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ko.js │ │ ├── nb.js │ │ ├── nl.js │ │ ├── nn.js │ │ ├── pt-BR.js │ │ ├── ru.js │ │ ├── sr.js │ │ ├── sv.js │ │ ├── tr.js │ │ ├── uk.js │ │ ├── vi.js │ │ ├── zh-CN.js │ │ └── zh-TW.js │ │ ├── modernizr.js │ │ ├── this.js │ │ ├── video-js.css │ │ ├── video-js.swf │ │ ├── video.js │ │ ├── video.vue │ │ └── videojs.hls.js ├── main.js └── styles.css ├── webpack.config.js └── webpack.production.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | presets: ['es2015'], 3 | plugins: ['transform-runtime'] 4 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "node": true, 5 | "es6": true, 6 | }, 7 | 8 | "ecmaFeatures": { 9 | "modules": 1 10 | }, 11 | 12 | "rules": { 13 | "accessor-pairs": 2, 14 | "array-bracket-spacing": 0, 15 | "block-scoped-var": 0, 16 | "brace-style": [2, "1tbs", { "allowSingleLine": true }], 17 | "camelcase": 0, 18 | "comma-dangle": [2, "never"], 19 | "comma-spacing": [2, { "before": false, "after": true }], 20 | "comma-style": [2, "last"], 21 | "complexity": 0, 22 | "computed-property-spacing": 0, 23 | "consistent-return": 0, 24 | "consistent-this": 0, 25 | "constructor-super": 2, 26 | "curly": [2, "multi-line"], 27 | "default-case": 0, 28 | "dot-location": [2, "property"], 29 | "dot-notation": 0, 30 | "eol-last": 2, 31 | "eqeqeq": [2, "allow-null"], 32 | "func-names": 0, 33 | "func-style": 0, 34 | "generator-star": 0, 35 | "generator-star-spacing": [2, { "before": true, "after": true }], 36 | "global-strict": 0, 37 | "guard-for-in": 0, 38 | "handle-callback-err": [2, "^(err|error)$" ], 39 | "indent": [2, 2], 40 | "key-spacing": [2, { "beforeColon": false, "afterColon": true }], 41 | "linebreak-style": 0, 42 | "lines-around-comment": 0, 43 | "max-depth": 0, 44 | "max-len": 0, 45 | "max-nested-callbacks": 0, 46 | "max-params": 0, 47 | "max-statements": 0, 48 | "new-cap": [2, { "newIsCap": true, "capIsNew": false }], 49 | "new-parens": 2, 50 | "newline-after-var": 0, 51 | "no-alert": 0, 52 | "no-array-constructor": 2, 53 | "no-bitwise": 0, 54 | "no-caller": 2, 55 | "no-catch-shadow": 0, 56 | "no-comma-dangle": 0, 57 | "no-cond-assign": 2, 58 | "no-console": 0, 59 | "no-constant-condition": 0, 60 | "no-continue": 0, 61 | "no-control-regex": 2, 62 | "no-debugger": 2, 63 | "no-delete-var": 2, 64 | "no-div-regex": 0, 65 | "no-dupe-args": 2, 66 | "no-dupe-keys": 2, 67 | "no-duplicate-case": 2, 68 | "no-else-return": 0, 69 | "no-empty": 0, 70 | "no-empty-character-class": 2, 71 | "no-empty-class": 0, 72 | "no-empty-label": 2, 73 | "no-eq-null": 0, 74 | "no-eval": 2, 75 | "no-ex-assign": 2, 76 | "no-extend-native": 2, 77 | "no-extra-bind": 2, 78 | "no-extra-boolean-cast": 2, 79 | "no-extra-parens": 0, 80 | "no-extra-semi": 0, 81 | "no-extra-strict": 0, 82 | "no-fallthrough": 2, 83 | "no-floating-decimal": 2, 84 | "no-func-assign": 2, 85 | "no-implied-eval": 2, 86 | "no-inline-comments": 0, 87 | "no-inner-declarations": [2, "functions"], 88 | "no-invalid-regexp": 2, 89 | "no-irregular-whitespace": 2, 90 | "no-iterator": 2, 91 | "no-label-var": 2, 92 | "no-labels": 2, 93 | "no-lone-blocks": 2, 94 | "no-lonely-if": 0, 95 | "no-loop-func": 0, 96 | "no-mixed-requires": 0, 97 | "no-mixed-spaces-and-tabs": 2, 98 | "no-multi-spaces": 2, 99 | "no-multi-str": 2, 100 | "no-multiple-empty-lines": [2, { "max": 1 }], 101 | "no-native-reassign": 2, 102 | "no-negated-in-lhs": 2, 103 | "no-nested-ternary": 0, 104 | "no-new": 2, 105 | "no-new-func": 0, 106 | "no-new-object": 2, 107 | "no-new-require": 2, 108 | "no-new-wrappers": 2, 109 | "no-obj-calls": 2, 110 | "no-octal": 2, 111 | "no-octal-escape": 2, 112 | "no-param-reassign": 0, 113 | "no-path-concat": 0, 114 | "no-plusplus": 0, 115 | "no-process-env": 0, 116 | "no-process-exit": 0, 117 | "no-proto": 0, 118 | "no-redeclare": 2, 119 | "no-regex-spaces": 2, 120 | "no-reserved-keys": 0, 121 | "no-restricted-modules": 0, 122 | "no-return-assign": 2, 123 | "no-script-url": 0, 124 | "no-self-compare": 2, 125 | "no-sequences": 2, 126 | "no-shadow": 0, 127 | "no-shadow-restricted-names": 2, 128 | "no-space-before-semi": 0, 129 | "no-spaced-func": 2, 130 | "no-sparse-arrays": 2, 131 | "no-sync": 0, 132 | "no-ternary": 0, 133 | "no-this-before-super": 2, 134 | "no-throw-literal": 2, 135 | "no-trailing-spaces": 2, 136 | "no-undef": 2, 137 | "no-undef-init": 2, 138 | "no-undefined": 0, 139 | "no-underscore-dangle": 0, 140 | "no-unexpected-multiline": 2, 141 | "no-unneeded-ternary": 2, 142 | "no-unreachable": 2, 143 | "no-unused-expressions": 0, 144 | "no-unused-vars": [2, { "vars": "all", "args": "none" }], 145 | "no-use-before-define": 0, 146 | "no-var": 0, 147 | "no-void": 0, 148 | "no-warning-comments": 0, 149 | "no-with": 2, 150 | "object-curly-spacing": 0, 151 | "object-shorthand": 0, 152 | "one-var": [2, { "initialized": "never" }], 153 | "operator-assignment": 0, 154 | "operator-linebreak": [2, "after"], 155 | "padded-blocks": 0, 156 | "prefer-const": 0, 157 | "quote-props": 0, 158 | "quotes": [2, "single", "avoid-escape"], 159 | "radix": 2, 160 | "semi": [2, "never"], 161 | "semi-spacing": 0, 162 | "sort-vars": 0, 163 | "space-after-function-name": 0, 164 | "space-after-keywords": [2, "always"], 165 | "space-before-blocks": [2, "always"], 166 | "space-before-function-paren": [2, "always"], 167 | "space-before-function-parentheses": 0, 168 | "space-in-brackets": 0, 169 | "space-in-parens": [2, "never"], 170 | "space-infix-ops": 2, 171 | "space-return-throw-case": 2, 172 | "space-unary-ops": [2, { "words": true, "nonwords": false }], 173 | "spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!"] }], 174 | "spaced-line-comment": 0, 175 | "strict": 0, 176 | "use-isnan": 2, 177 | "valid-jsdoc": 0, 178 | "valid-typeof": 2, 179 | "vars-on-top": 0, 180 | "wrap-iife": [2, "any"], 181 | "wrap-regex": 0, 182 | "yoda": [2, "never"] 183 | } 184 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | .yo-rc.json 4 | *.log 5 | .idea 6 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | ##VUE-COMPONENTS 2 | ``` 3 | src 4 | |--components 5 | |--|--qiniu-upload 6 | ``` 7 | ###qiniu-upload 8 | 七牛js文件上传的vue实现。 9 | -------------------------------------------------------------------------------- /build/3fe271c23634e7d1be1152b1448b3c4f.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/build/3fe271c23634e7d1be1152b1448b3c4f.eot -------------------------------------------------------------------------------- /build/app.min.css: -------------------------------------------------------------------------------- 1 | #qnupload-btn[_v-2e1aee01]{width:145px;border-radius:3px;box-shadow:0 1px 0 hsla(0,0%,95%,.75);color:#646464;border:1px solid #d2d2d2;text-align:center;-webkit-transition:background-color .218s,border-color .218s,box-shadow .218s;transition:background-color .218s,border-color .218s,box-shadow .218s;outline:none;padding:10px 16px;font-size:18px;line-height:1.3333333;display:inline-block;margin-bottom:0;font-weight:400;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;text-decoration:none} -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue components 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-components", 3 | "version": "0.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "webpack-dev-server --inline --hot --quiet --port 3001", 8 | "build": "rm -rf build/* && webpack --progress --hide-modules --config webpack.production.js && webpack-dev-server --port 3002 --config webpack.production.js" 9 | }, 10 | "dependencies": { 11 | "vue": "^1.0.8" 12 | }, 13 | "devDependencies": { 14 | "babel-core": "^6.1.21", 15 | "babel-loader": "^6.1.0", 16 | "babel-plugin-transform-runtime": "^6.1.18", 17 | "babel-preset-es2015": "^6.1.18", 18 | "babel-runtime": "^5.8.0", 19 | "css-loader": "^0.21.0", 20 | "extract-text-webpack-plugin": "^0.9.1", 21 | "file-loader": "^0.8.5", 22 | "q": "^1.4.1", 23 | "style-loader": "^0.13.0", 24 | "url-loader": "^0.5.7", 25 | "vue-hot-reload-api": "^1.2.0", 26 | "vue-html-loader": "^1.0.0", 27 | "vue-loader": "^7.0.3", 28 | "webpack": "^1.12.2", 29 | "webpack-dev-server": "^1.12.1" 30 | }, 31 | "peerDependencies": {} 32 | } 33 | -------------------------------------------------------------------------------- /src/app.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 54 | 55 | 58 | -------------------------------------------------------------------------------- /src/bower_components/plupload/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "plupload", 3 | "homepage": "https://github.com/moxiecode/plupload", 4 | "version": "2.1.8", 5 | "_release": "2.1.8", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v2.1.8", 9 | "commit": "650763ac5b60d70191ca3bc10e08c20708b0cb29" 10 | }, 11 | "_source": "git://github.com/moxiecode/plupload.git", 12 | "_target": "^2.1.8", 13 | "_originalSource": "plupload", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /src/bower_components/plupload/examples/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Plupload - Custom example 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 |

Custom example

21 | 22 |

Shows you how to use the core plupload API.

23 | 24 |
Your browser doesn't have Flash, Silverlight or HTML5 support.
25 |
26 | 27 |
28 | [Select files] 29 | [Upload files] 30 |
31 | 32 |
33 |

34 | 
35 | 
36 | 
84 | 
85 | 
86 | 


--------------------------------------------------------------------------------
/src/bower_components/plupload/examples/dump.php:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 
 5 | Plupload - Form dump
 6 | 
 7 | 
 8 | 	
 9 | 

Post dump

10 | 11 |

Shows the form items posted.

12 | 13 | 14 | 15 | 16 | 17 | 18 | $value) { ?> 19 | 20 | 21 | 22 | 23 | 24 |
NameValue
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/bower_components/plupload/examples/events.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Plupload - Events example 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 |

Events example

21 | 22 |
23 | [Select files] 24 | [Upload files] 25 |
26 | 27 |
28 |

 29 |  
 30 | 
216 | 
217 | 
218 | 


--------------------------------------------------------------------------------
/src/bower_components/plupload/examples/jquery/all_runtimes.html:
--------------------------------------------------------------------------------
  1 | 
  2 | 
  3 | 
  4 | 
  5 | 
  6 | Plupload - Queue widget example
  7 | 
  8 | 
  9 | 
 10 | 
 11 | 
 12 | 
 13 | 
 14 | 
 15 | 
 16 | 
 21 | 
 22 | 
 23 | 
 24 | 
 25 | 
26 |

Queue widget example

27 | 28 |

Shows the jQuery Plupload Queue widget and under different runtimes.

29 | 30 |
31 |

Flash runtime

32 |
Your browser doesn't have Flash installed.
33 | 34 |

Silverlight runtime

35 |
Your browser doesn't have Silverlight installed.
36 |
37 | 38 |
39 |

HTML 4 runtime

40 |
Your browser doesn't have HTML 4 support.
41 | 42 |

HTML 5 runtime

43 |
Your browser doesn't support native upload.
44 |
45 | 46 |
47 | 48 | 49 |
50 | 51 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /src/bower_components/plupload/examples/jquery/jquery_ui_widget.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Plupload - jQuery UI Widget 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 |

jQuery UI Widget

28 | 29 |

You can see this example with different themes on the www.plupload.com website.

30 | 31 |
32 |
33 |

Your browser doesn't have Flash, Silverlight or HTML5 support.

34 |
35 |
36 | 37 |
38 | 39 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /src/bower_components/plupload/examples/jquery/queue_widget.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Plupload - Queue widget example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 |

Your browser doesn't have Flash, Silverlight or HTML5 support.

29 |
30 | 31 |
32 | 33 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /src/bower_components/plupload/examples/jquery/s3.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | In our tests SilverLight didn't require anything special and worked with this configuration just fine. It may fail back 13 | to the same crossdomain.xml as last resort. 14 | 15 | !!!Important!!! Plupload UI Widget here, is used only for demo purposes and is not required for uploading to S3. 16 | */ 17 | 18 | // important variables that will be used throughout this example 19 | $bucket = 'BUCKET'; 20 | 21 | // these can be found on your Account page, under Security Credentials > Access Keys 22 | $accessKeyId = 'ACCESS_KEY_ID'; 23 | $secret = 'SECRET_ACCESS_KEY'; 24 | 25 | // prepare policy 26 | $policy = base64_encode(json_encode(array( 27 | // ISO 8601 - date('c'); generates uncompatible date, so better do it manually 28 | 'expiration' => date('Y-m-d\TH:i:s.000\Z', strtotime('+1 day')), 29 | 'conditions' => array( 30 | array('bucket' => $bucket), 31 | array('acl' => 'public-read'), 32 | array('starts-with', '$key', ''), 33 | // for demo purposes we are accepting only images 34 | array('starts-with', '$Content-Type', 'image/'), 35 | // Plupload internally adds name field, so we need to mention it here 36 | array('starts-with', '$name', ''), 37 | // One more field to take into account: Filename - gets silently sent by FileReference.upload() in Flash 38 | // http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTFlash.html 39 | array('starts-with', '$Filename', ''), 40 | ) 41 | ))); 42 | 43 | // sign policy 44 | $signature = base64_encode(hash_hmac('sha1', $policy, $secret, true)); 45 | 46 | ?> 47 | 48 | 49 | 50 | 51 | 52 | Plupload to Amazon S3 Example 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 71 | 72 | 73 | 74 | 75 |

Plupload to Amazon S3 Example

76 | 77 |
78 |

Your browser doesn't have Flash, Silverlight or HTML5 support.

79 |
80 | 81 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /src/bower_components/plupload/examples/upload.php: -------------------------------------------------------------------------------- 1 |
'+'
'+'
'+'
'+'
'+r("Select files")+"
"+'
'+r("Add files to the qiniu-upload queue and click the start button.")+"
"+"
"+"
"+'
'+'
'+'
'+r("Filename")+"
"+'
 
'+'
'+r("Status")+"
"+'
'+r("Size")+"
"+'
 
'+"
"+'
    '+'"+"
    "+"
    "+"
    "+''+"")}var n={};e.fn.pluploadQueue=function(s){return s?(this.each(function(){function c(t){var n;t.status==plupload.DONE&&(n="plupload_done"),t.status==plupload.FAILED&&(n="plupload_failed"),t.status==plupload.QUEUED&&(n="plupload_delete"),t.status==plupload.UPLOADING&&(n="plupload_uploading");var r=e("#"+t.id).attr("class",n).find("a").css("display","block");t.hint&&r.attr("title",t.hint)}function h(){e("span.plupload_total_status",a).html(u.total.percent+"%"),e("div.plupload_progress_bar",a).css("width",u.total.percent+"%"),e("span.plupload_upload_status",a).html(t.sprintf(r("Uploaded %d/%d files"),u.total.uploaded,u.files.length))}function p(){var n=e("ul.plupload_filelist",a).html(""),i=0,s;e.each(u.files,function(t,r){s="",r.status==plupload.DONE&&(r.target_name&&(s+=''),s+='',s+='',i++,e("#"+f+"_count").val(i)),n.append('
  • '+'
    '+r.name+"
    "+'
    '+'
    '+r.percent+"%
    "+'
    '+plupload.formatSize(r.size)+"
    "+'
     
    '+s+"
  • "),c(r),e("#"+r.id+".plupload_delete a").click(function(t){e("#"+r.id).remove(),u.removeFile(r),t.preventDefault()})}),e("span.plupload_total_file_size",a).html(plupload.formatSize(u.total.size)),u.total.queued===0?e("span.plupload_add_text",a).html(r("Add Files")):e("span.plupload_add_text",a).html(t.sprintf(r("%d files queued"),u.total.queued)),e("a.plupload_start",a).toggleClass("plupload_disabled",u.files.length==u.total.uploaded+u.total.failed),n[0].scrollTop=n[0].scrollHeight,h(),!u.files.length&&u.features.dragdrop&&u.settings.dragdrop&&e("#"+f+"_filelist").append('
  • '+r("Drag files here.")+"
  • ")}function d(){delete n[f],u.destroy(),a.html(l),u=a=l=null}var u,a,f,l;a=e(this),f=a.attr("id"),f||(f=plupload.guid(),a.attr("id",f)),l=a.html(),i(f,a),s=e.extend({dragdrop:!0,browse_button:f+"_browse",container:f},s),s.dragdrop&&(s.drop_element=f+"_filelist"),u=new plupload.Uploader(s),n[f]=u,u.bind("UploadFile",function(t,n){e("#"+n.id).addClass("plupload_current_file")}),u.bind("Init",function(t,n){!s.unique_names&&s.rename&&a.on("click","#"+f+"_filelist div.plupload_file_name span",function(n){var r=e(n.target),i,s,o,u="";i=t.getFile(r.parents("li")[0].id),o=i.name,s=/^(.+)(\.[^.]+)$/.exec(o),s&&(o=s[1],u=s[2]),r.hide().after(''),r.next().val(o).focus().blur(function(){r.show().next().remove()}).keydown(function(t){var n=e(this);t.keyCode==13&&(t.preventDefault(),i.name=n.val()+u,r.html(i.name),n.blur())})}),e("#"+f+"_container").attr("title","Using runtime: "+n.runtime),e("a.plupload_start",a).click(function(t){e(this).hasClass("plupload_disabled")||u.start(),t.preventDefault()}),e("a.plupload_stop",a).click(function(e){e.preventDefault(),u.stop()}),e("a.plupload_start",a).addClass("plupload_disabled")}),u.bind("Error",function(t,n){var i=n.file,s;i&&(s=n.message,n.details&&(s+=" ("+n.details+")"),n.code==plupload.FILE_SIZE_ERROR&&alert(r("Error: File too large:")+" "+i.name),n.code==plupload.FILE_EXTENSION_ERROR&&alert(r("Error: Invalid file extension:")+" "+i.name),i.hint=s,e("#"+i.id).attr("class","plupload_failed").find("a").css("display","block").attr("title",s)),n.code===plupload.INIT_ERROR&&setTimeout(function(){d()},1)}),u.bind("PostInit",function(t){t.settings.dragdrop&&t.features.dragdrop&&e("#"+f+"_filelist").append('
  • '+r("Drag files here.")+"
  • ")}),u.init(),u.bind("StateChanged",function(){u.state===plupload.STARTED?(e("li.plupload_delete a,div.plupload_buttons",a).hide(),u.disableBrowse(!0),e("span.plupload_upload_status,div.plupload_progress,a.plupload_stop",a).css("display","block"),e("span.plupload_upload_status",a).html("Uploaded "+u.total.uploaded+"/"+u.files.length+" files"),s.multiple_queues&&e("span.plupload_total_status,span.plupload_total_file_size",a).show()):(p(),e("a.plupload_stop,div.plupload_progress",a).hide(),e("a.plupload_delete",a).css("display","block"),s.multiple_queues&&u.total.uploaded+u.total.failed==u.files.length&&(e(".plupload_buttons,.plupload_upload_status",a).css("display","inline"),u.disableBrowse(!1),e(".plupload_start",a).addClass("plupload_disabled"),e("span.plupload_total_status,span.plupload_total_file_size",a).hide()))}),u.bind("FilesAdded",p),u.bind("FilesRemoved",function(){var t=e("#"+f+"_filelist").scrollTop();p(),e("#"+f+"_filelist").scrollTop(t)}),u.bind("FileUploaded",function(e,t){c(t)}),u.bind("UploadProgress",function(t,n){e("#"+n.id+" div.plupload_file_status",a).html(n.percent+"%"),c(n),h()}),s.setup&&s.setup(u)}),this):n[e(this[0]).attr("id")]}})(jQuery,mOxie); 2 | -------------------------------------------------------------------------------- /src/bower_components/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css: -------------------------------------------------------------------------------- 1 | /* 2 | Plupload 3 | ------------------------------------------------------------------- */ 4 | 5 | .plupload_wrapper * { 6 | box-sizing: content-box; 7 | } 8 | 9 | .plupload_button { 10 | cursor: pointer; 11 | outline: none; 12 | } 13 | 14 | .plupload_wrapper { 15 | font: normal 11px Verdana,sans-serif; 16 | width: 100%; 17 | min-width: 520px; 18 | line-height: 12px; 19 | } 20 | 21 | .plupload_container { 22 | _height: 300px; 23 | min-height: 300px; 24 | position: relative; 25 | } 26 | 27 | .plupload_filelist_footer {border-width: 1px 0 0 0} 28 | .plupload_file {border-width: 0 0 1px 0} 29 | .plupload_container .plupload_header {border-width: 0 0 1px 0; position: relative;} 30 | 31 | .plupload_delete .ui-icon, 32 | .plupload_done .ui-icon, 33 | .plupload_failed .ui-icon { 34 | cursor:pointer; 35 | } 36 | 37 | .plupload_header_content { 38 | height: 56px; 39 | padding: 0 160px 0 60px; 40 | position: relative; 41 | } 42 | 43 | .plupload_logo { 44 | width: 40px; 45 | height: 40px; 46 | background: url('../img/plupload.png') no-repeat 0 0; 47 | position: absolute; 48 | top: 8px; 49 | left: 8px; 50 | } 51 | 52 | .plupload_header_content_bw .plupload_logo { 53 | background-position: -40px 0; 54 | } 55 | 56 | .plupload_header_title { 57 | font: normal 18px sans-serif; 58 | line-height: 19px; 59 | padding: 6px 0 3px; 60 | } 61 | 62 | .plupload_header_text { 63 | font: normal 12px sans-serif; 64 | } 65 | 66 | .plupload_view_switch { 67 | position: absolute; 68 | right: 16px; 69 | bottom: 8px; 70 | margin: 0; 71 | display: none; 72 | } 73 | 74 | .plupload_view_switch .ui-button { 75 | margin-right: -0.31em; 76 | } 77 | 78 | .plupload_content { 79 | position: absolute; 80 | top: 86px; 81 | bottom: 44px; 82 | left: 0; 83 | right: 0; 84 | overflow-y: auto; 85 | width: 100%; 86 | } 87 | 88 | .plupload_filelist { 89 | border-collapse: collapse; 90 | border-left: none; 91 | border-right: none; 92 | margin: 0; 93 | padding: 0; 94 | width: 100%; 95 | -moz-user-select: none; 96 | -webkit-user-select: none; 97 | user-select: none; 98 | } 99 | 100 | .plupload_filelist_content { 101 | padding: 0; 102 | margin: 0; 103 | } 104 | 105 | .plupload_cell {padding: 8px 6px;} 106 | 107 | .plupload_file { 108 | list-style: none; 109 | display: block; 110 | position: relative; 111 | overflow: hidden; 112 | line-height: 12px; 113 | } 114 | 115 | .plupload_file_thumb { 116 | position: relative; 117 | background-image: none; 118 | background-color: #eee; 119 | } 120 | 121 | .plupload_thumb_loading { 122 | background: #eee url(../img/loading.gif) center no-repeat; 123 | } 124 | 125 | .plupload_thumb_loading .plupload_file_dummy, 126 | .plupload_thumb_embedded .plupload_file_dummy { 127 | display: none; 128 | } 129 | 130 | .plupload_file_name { 131 | overflow: hidden; 132 | text-overflow: ellipsis; 133 | white-space: nowrap; 134 | } 135 | 136 | .plupload_filelist_header { 137 | border-top: none; 138 | } 139 | 140 | .plupload_filelist_footer { 141 | position: absolute; 142 | bottom: 0; 143 | left: 0; 144 | right: 0; 145 | } 146 | 147 | .plupload_buttons { 148 | position: relative; 149 | } 150 | 151 | /* list view */ 152 | .plupload_view_list .plupload_file { 153 | border-left: none; 154 | border-right: none; 155 | border-top: none; 156 | height: 29px; 157 | width: 100% !important; 158 | /* fix IE6 vertical white-space bug */ 159 | _float: left; 160 | _clear: left; 161 | } 162 | 163 | .plupload_view_list div.plupload_file_size, 164 | .plupload_view_list div.plupload_file_status, 165 | .plupload_view_list div.plupload_file_action { 166 | padding: 8px 6px; 167 | position: absolute; 168 | top: 0; 169 | right: 0; 170 | } 171 | 172 | .plupload_view_list div.plupload_file_name { 173 | margin-right: 156px; 174 | padding: 8px 6px; 175 | _width: 75%; 176 | } 177 | 178 | .plupload_view_list div.plupload_file_size { 179 | right: 28px; 180 | } 181 | 182 | .plupload_view_list div.plupload_file_status { 183 | right: 82px; 184 | } 185 | 186 | .plupload_view_list .plupload_file_rename { 187 | margin-left: -2px; 188 | } 189 | 190 | .plupload_view_list .plupload_file_size, 191 | .plupload_view_list .plupload_file_status, 192 | .plupload_filelist_footer .plupload_file_size, 193 | .plupload_filelist_footer .plupload_file_status { 194 | text-align: right; 195 | width: 52px; 196 | } 197 | 198 | .plupload_view_list .plupload_file_thumb { 199 | position: absolute; 200 | top: -999px; 201 | } 202 | 203 | .plupload_view_list .plupload_file_progress { 204 | display: none; 205 | } 206 | 207 | 208 | /* thumbs view */ 209 | .plupload_view_thumbs .plupload_content { 210 | top: 57px; 211 | } 212 | 213 | .plupload_view_thumbs .plupload_filelist_header { 214 | display: none; 215 | } 216 | 217 | .plupload_view_thumbs .plupload_file { 218 | padding: 6px; 219 | margin: 10px; 220 | border: 1px solid #fff; 221 | float: left; 222 | } 223 | 224 | .plupload_view_thumbs .plupload_file_thumb, 225 | .plupload_view_thumbs .plupload_file_dummy { 226 | text-align: center; 227 | overflow: hidden; 228 | } 229 | 230 | .plupload_view_thumbs .plupload_file_dummy { 231 | font-size: 21px; 232 | font-weight: bold; 233 | text-transform: lowercase; 234 | overflow: hidden; 235 | border: none; 236 | position: absolute; 237 | top: 0; 238 | left: 0; 239 | width: 100%; 240 | height: 100%; 241 | } 242 | 243 | .plupload_view_thumbs div.plupload_file_action { 244 | position: absolute; 245 | top: 0; 246 | right: 0; 247 | } 248 | 249 | .plupload_view_thumbs div.plupload_file_name { 250 | padding: 0; 251 | font-weight: bold; 252 | } 253 | 254 | .plupload_view_thumbs .plupload_file_rename { 255 | padding: 1px 0; 256 | width: 100% !important; 257 | } 258 | 259 | .plupload_view_thumbs div.plupload_file_size { 260 | font-size: 0.8em; 261 | font-weight: normal; 262 | } 263 | 264 | .plupload_view_thumbs div.plupload_file_status { 265 | position: relative; 266 | height: 3px; 267 | overflow: hidden; 268 | text-indent: -999px; 269 | margin-bottom: 3px; 270 | } 271 | 272 | .plupload_view_thumbs div.plupload_file_progress { 273 | border: none; 274 | height: 100%; 275 | } 276 | 277 | .plupload .ui-sortable-helper, 278 | .plupload .ui-sortable .plupload_file { 279 | cursor:move; 280 | } 281 | 282 | .plupload_file_action {width: 16px;} 283 | .plupload_file_name { 284 | overflow: hidden; 285 | padding-left: 10px; 286 | } 287 | 288 | .plupload_file_rename { 289 | border: none; 290 | font: normal 11px Verdana, sans-serif; 291 | padding: 1px 2px; 292 | line-height: 11px; 293 | height: 11px; 294 | } 295 | 296 | .plupload_progress {width: 60px;} 297 | .plupload_progress_container {padding: 1px;} 298 | 299 | 300 | /* Floats */ 301 | 302 | .plupload_right {float: right;} 303 | .plupload_left {float: left;} 304 | .plupload_clear,.plupload_clearer {clear: both;} 305 | .plupload_clearer, .plupload_progress_bar { 306 | display: block; 307 | font-size: 0; 308 | line-height: 0; 309 | } 310 | .plupload_clearer {height: 0;} 311 | 312 | /* Misc */ 313 | .plupload_hidden {display: none !important;} 314 | 315 | .plupload_droptext { 316 | position: absolute; 317 | top: 0; 318 | left: 0; 319 | right: 0; 320 | bottom: 0; 321 | background: transparent; 322 | text-align: center; 323 | vertical-align: middle; 324 | border: 0; 325 | line-height: 160px; 326 | display: none; 327 | } 328 | 329 | .plupload_dropbox .plupload_droptext { 330 | display: block; 331 | } 332 | 333 | .plupload_buttons, .plupload_upload_status {float: left} 334 | 335 | .plupload_message { 336 | position: absolute; 337 | top: -1px; 338 | left: -1px; 339 | height: 100%; 340 | width: 100%; 341 | } 342 | 343 | .plupload_message p { 344 | padding:0.7em; 345 | margin:0; 346 | } 347 | 348 | .plupload_message strong { 349 | font-weight: bold; 350 | } 351 | 352 | .plupload_message i { 353 | font-style: italic; 354 | } 355 | 356 | .plupload_message p span.ui-icon { 357 | float: left; 358 | margin-right: 0.3em; 359 | } 360 | 361 | .plupload_header_content .ui-state-error, 362 | .plupload_header_content .ui-state-highlight { 363 | border:none; 364 | } 365 | 366 | .plupload_message_close { 367 | position:absolute; 368 | top:5px; 369 | right:5px; 370 | cursor:pointer; 371 | } 372 | 373 | .plupload .ui-sortable-placeholder { 374 | height:35px; 375 | } 376 | -------------------------------------------------------------------------------- /src/bower_components/plupload/js/jquery.ui.plupload/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/bower_components/plupload/js/jquery.ui.plupload/img/loading.gif -------------------------------------------------------------------------------- /src/bower_components/plupload/js/jquery.ui.plupload/img/plupload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/bower_components/plupload/js/jquery.ui.plupload/img/plupload.png -------------------------------------------------------------------------------- /src/bower_components/plupload/js/plupload.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Plupload - multi-runtime File Uploader 3 | * v2.1.8 4 | * 5 | * Copyright 2013, Moxiecode Systems AB 6 | * Released under GPL License. 7 | * 8 | * License: http://www.plupload.com/license 9 | * Contributing: http://www.plupload.com/contributing 10 | * 11 | * Date: 2015-07-21 12 | */ 13 | ;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.8",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadFile",k),this.bind("UploadProgress",L),this.bind("StateChanged",A),this.bind("QueueChanged",b),this.bind("Error",_),this.bind("FileUploaded",M),this.bind("Destroy",D)}function x(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t,a.send_file_name=!0;break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g={},y;if(n.status!==o.UPLOADING||e.state===o.STOPPED)return;e.settings.send_file_name&&(g.name=n.target_name||n.name),s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s?s*Math.floor(n.loaded/s):0),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function L(e,t){y(t)}function A(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function O(){m&&m.abort()}function M(e){b(),r(function(){g.call(e)},1)}function _(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function D(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)}),S.call(this);if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function c(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function h(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!l)return!1;e.ruid=l,e.connectRuntime(l)}h(new o.File(e))}else e instanceof t.Blob?(h(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){c(e,function(n){n||(f.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?h(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,h):i==="array"&&(n=null,t.each(e,h))}var s=this,u=[],a=[],l;l=w(),h(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},dispatchEvent:function(e){var t,n,r;e=e.toLowerCase(),t=this.hasEventListener(e);if(t){t.sort(function(e,t){return t.priority-e.priority}),n=[].slice.call(arguments),n.shift(),n.unshift(this);for(var i=0;i 37 | ### Backstory 38 | 39 | Plupload started in a time when uploading a file in a responsive and customizable manner was a real pain. 40 | Internally, browsers only had the `input[type="file"]` element. It was ugly and clunky at the same time. 41 | One couldn't even change it's visuals, without hiding it and coding another one on top of it from scratch. 42 | And then there was no progress indication for the upload process... Sounds pretty crazy today. 43 | 44 | It was very logical for developers to look for alternatives and writing their own implementations, using 45 | Flash and Java, in order to somehow extend limited browser capabilities. And so did we, in our search for 46 | a reliable and flexible file uploader for 47 | our [TinyMCE](http://www.tinymce.com/index.php)'s 48 | [MCImageManager](http://www.tinymce.com/enterprise/mcimagemanager.php). 49 | 50 | Quickly enough though, Plupload grew big. It easily split into a standalone project. 51 | With major *version 2.0* it underwent another huge reconstruction, basically 52 | [from the ground up](http://blog.moxiecode.com/2012/11/28/first-public-beta-plupload-2/), 53 | as all the low-level runtime logic has been extracted into separate [File API](http://www.w3.org/TR/FileAPI/) 54 | and [XHR L2](http://www.w3.org/TR/XMLHttpRequest/) pollyfills (currently known under combined name of [mOxie](https://github.com/moxiecode/moxie)), 55 | giving Plupload a chance to evolve further. 56 | 57 | 58 | ### Structure 59 | 60 | Currently, Plupload may be considered as consisting of three parts: low-level pollyfills, 61 | Plupload API and Widgets (UI and Queue). Initially, Widgets were meant only to serve as examples 62 | of the API, but quickly formed into fully-functional API implementations that now come bundled with 63 | the Plupload API. This has been a source for multiple misconceptions about the API as Widgets were 64 | easily mistaken for the Plupload itself. They are only implementations, such as any of you can 65 | build by yourself out of the API. 66 | 67 | * [Low-level pollyfills (mOxie)](https://github.com/moxiecode/moxie) - have their own [code base](https://github.com/moxiecode/moxie) and [documentation](https://github.com/moxiecode/moxie/wiki) on GitHub. 68 | * [Plupload API](https://github.com/moxiecode/plupload/wiki/API) 69 | * [UI Widget](https://github.com/moxiecode/plupload/wiki/UI.Plupload) 70 | * [Queue Widget](https://github.com/moxiecode/plupload/wiki/pluploadQueue) 71 | 72 | 73 | ### Building instructions 74 | 75 | Plupload depends on File API and XHR2 L2 pollyfills that currently have their 76 | [own repository](https://github.com/moxiecode/moxie) on GitHub. However, in most cases you shouldn't 77 | care as we bundle the latest build of mOxie, including full and minified JavaScript source and 78 | pre-compiled `SWF` and `XAP` components, with [every release](https://github.com/moxiecode/plupload/releases). You can find everything you may need under `js/` folder. 79 | 80 | There are cases where you might need a custom build, for example free of unnecessary runtimes, half the 81 | original size, etc. The difficult part of this task comes from mOxie and its set of additional runtimes 82 | that require special tools on your workstation in order to compile. 83 | Consider [build instructions for mOxie](https://github.com/moxiecode/moxie#build-instructions) - 84 | everything applies to Plupload as well. 85 | 86 | First of all, if you want to build custom Plupload packages you will require [Node.js](http://nodejs.org/), 87 | as this is our build environment of choice. Node.js binaries (as well as Source) 88 | [are available](http://nodejs.org/download/) for all major operating systems. 89 | 90 | Plupload includes _mOxie_ as a submodule, it also depends on some other repositories for building up it's dev 91 | environment - to avoid necessity of downloading them one by one, we recommended you to simply clone Plupload 92 | with [git](http://git-scm.com/) recursively (you will require git installed on your system for this operation 93 | to succeed): 94 | 95 | ``` 96 | git clone --recursive https://github.com/moxiecode/plupload.git 97 | ``` 98 | 99 | And finalize the preparation stage with: `npm install` - this will install all additional modules, including those 100 | required by dev and test environments. In case you would rather keep it minimal, add a `--production` flag. 101 | 102 | *Note:* Currently, for an unknown reason, locally installed Node.js modules on Windows, may not be automatically 103 | added to the system PATH. So, if `jake` commands below are not recognized you will need to add them manually: 104 | 105 | ``` 106 | set PATH=%PATH%;%CD%\node_modules\.bin\ 107 | ``` 108 | 109 | 110 | ### Support 111 | 112 | We are actively standing behind the Plupload and now that we are done with major rewrites and refactoring, 113 | the only real goal that we have ahead is making it as reliable and bulletproof as possible. We are open to 114 | all the suggestions and feature requests. We ask you to file bug reports if you encounter any. We may not 115 | react to them instantly, but we constantly bear them in my mind as we extend the code base. 116 | 117 | In addition to dedicated support for those who dare to buy our OEM licenses, we got 118 | [discussion boards](http://www.plupload.com/punbb/index.php), which is like an enormous FAQ, 119 | covering every possible application case. Of course, you are welcome to file a bug report or feature request, 120 | here on [GitHub](https://github.com/moxiecode/plupload/issues). 121 | 122 | Sometimes it is easier to notice the problem when bug report is accompained by the actual code. Consider providing 123 | [a Plupload fiddle](https://github.com/moxiecode/plupload/wiki/Create-a-Fiddle) for the troublesome code. 124 | 125 | 126 | ### Contributing 127 | 128 | We are open to suggestions and code revisions, however there are some rules and limitations that you might 129 | want to consider first. 130 | 131 | * Code that you contribute will automatically be licensed under the LGPL, but will not be limited to LGPL. 132 | * Although all contributors will get the credit for their work, copyright notices will be changed to [Moxiecode Systems AB](http://www.moxiecode.com/). 133 | * Third party code will be reviewed, tested and possibly modified before being released. 134 | 135 | These basic rules help us earn a living and ensure that code remains Open Source and compatible with LGPL license. All contributions will be added to the changelog and appear in every release and on the site. 136 | 137 | An easy place to start is to [translate Plupload to your language](https://github.com/moxiecode/plupload/wiki/Plupload-in-Your-Language#contribute). 138 | 139 | You can read more about how to contribute at: [http://www.plupload.com/contributing](http://www.plupload.com/contributing) 140 | 141 | 142 | ### License 143 | 144 | Copyright 2013, [Moxiecode Systems AB](http://www.moxiecode.com/) 145 | Released under [GPLv2 License](https://github.com/moxiecode/plupload/blob/master/license.txt). 146 | 147 | We also provide [commercial license](http://www.plupload.com/commercial.php). 148 | -------------------------------------------------------------------------------- /src/components/qiniu-upload/qnupload.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 36 | 37 | 106 | -------------------------------------------------------------------------------- /src/components/video-js/font/VideoJS.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/components/video-js/font/VideoJS.eot -------------------------------------------------------------------------------- /src/components/video-js/font/VideoJS.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/components/video-js/font/VideoJS.ttf -------------------------------------------------------------------------------- /src/components/video-js/font/VideoJS.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/components/video-js/font/VideoJS.woff -------------------------------------------------------------------------------- /src/components/video-js/img/B3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/components/video-js/img/B3.jpg -------------------------------------------------------------------------------- /src/components/video-js/img/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/components/video-js/img/demo.png -------------------------------------------------------------------------------- /src/components/video-js/lang/ar.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("ar",{ 2 | "Play": "تشغيل", 3 | "Pause": "ايقاف", 4 | "Current Time": "الوقت الحالي", 5 | "Duration Time": "Dauer", 6 | "Remaining Time": "الوقت المتبقي", 7 | "Stream Type": "نوع التيار", 8 | "LIVE": "مباشر", 9 | "Loaded": "تم التحميل", 10 | "Progress": "التقدم", 11 | "Fullscreen": "ملء الشاشة", 12 | "Non-Fullscreen": "غير ملء الشاشة", 13 | "Mute": "صامت", 14 | "Unmute": "غير الصامت", 15 | "Playback Rate": "معدل التشغيل", 16 | "Subtitles": "الترجمة", 17 | "subtitles off": "ايقاف الترجمة", 18 | "Captions": "التعليقات", 19 | "captions off": "ايقاف التعليقات", 20 | "Chapters": "فصول", 21 | "You aborted the media playback": "لقد ألغيت تشغيل الفيديو", 22 | "A network error caused the media download to fail part-way.": "تسبب خطأ في الشبكة بفشل تحميل الفيديو بالكامل.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "لا يمكن تحميل الفيديو بسبب فشل في الخادم أو الشبكة ، أو فشل بسبب عدم امكانية قراءة تنسيق الفيديو.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "تم ايقاف تشغيل الفيديو بسبب مشكلة فساد أو لأن الفيديو المستخدم يستخدم ميزات غير مدعومة من متصفحك.", 25 | "No compatible source was found for this media.": "فشل العثور على أي مصدر متوافق مع هذا الفيديو." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/ba.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("ba",{ 2 | "Play": "Pusti", 3 | "Pause": "Pauza", 4 | "Current Time": "Trenutno vrijeme", 5 | "Duration Time": "Vrijeme trajanja", 6 | "Remaining Time": "Preostalo vrijeme", 7 | "Stream Type": "Način strimovanja", 8 | "LIVE": "UŽIVO", 9 | "Loaded": "Učitan", 10 | "Progress": "Progres", 11 | "Fullscreen": "Puni ekran", 12 | "Non-Fullscreen": "Mali ekran", 13 | "Mute": "Prigušen", 14 | "Unmute": "Ne-prigušen", 15 | "Playback Rate": "Stopa reprodukcije", 16 | "Subtitles": "Podnaslov", 17 | "subtitles off": "Podnaslov deaktiviran", 18 | "Captions": "Titlovi", 19 | "captions off": "Titlovi deaktivirani", 20 | "Chapters": "Poglavlja", 21 | "You aborted the media playback": "Isključili ste reprodukciju videa.", 22 | "A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.", 25 | "No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/bg.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("bg",{ 2 | "Play": "Възпроизвеждане", 3 | "Pause": "Пауза", 4 | "Current Time": "Текущо време", 5 | "Duration Time": "Продължителност", 6 | "Remaining Time": "Оставащо време", 7 | "Stream Type": "Тип на потока", 8 | "LIVE": "НА ЖИВО", 9 | "Loaded": "Заредено", 10 | "Progress": "Прогрес", 11 | "Fullscreen": "Цял екран", 12 | "Non-Fullscreen": "Спиране на цял екран", 13 | "Mute": "Без звук", 14 | "Unmute": "Със звук", 15 | "Playback Rate": "Скорост на възпроизвеждане", 16 | "Subtitles": "Субтитри", 17 | "subtitles off": "Спряни субтитри", 18 | "Captions": "Аудио надписи", 19 | "captions off": "Спряни аудио надписи", 20 | "Chapters": "Глави", 21 | "You aborted the media playback": "Спряхте възпроизвеждането на видеото", 22 | "A network error caused the media download to fail part-way.": "Грешка в мрежата провали изтеглянето на видеото.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Видеото не може да бъде заредено заради проблем със сървъра или мрежата или защото този формат не е поддържан.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Възпроизвеждането на видеото беше прекъснато заради проблем с файла или защото видеото използва опции които браузърът Ви не поддържа.", 25 | "No compatible source was found for this media.": "Не беше намерен съвместим източник за това видео." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/ca.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("ca",{ 2 | "Play": "Reproducció", 3 | "Pause": "Pausa", 4 | "Current Time": "Temps reproduït", 5 | "Duration Time": "Durada total", 6 | "Remaining Time": "Temps restant", 7 | "Stream Type": "Tipus de seqüència", 8 | "LIVE": "EN DIRECTE", 9 | "Loaded": "Carregat", 10 | "Progress": "Progrés", 11 | "Fullscreen": "Pantalla completa", 12 | "Non-Fullscreen": "Pantalla no completa", 13 | "Mute": "Silencia", 14 | "Unmute": "Amb so", 15 | "Playback Rate": "Velocitat de reproducció", 16 | "Subtitles": "Subtítols", 17 | "subtitles off": "Subtítols desactivats", 18 | "Captions": "Llegendes", 19 | "captions off": "Llegendes desactivades", 20 | "Chapters": "Capítols", 21 | "You aborted the media playback": "Heu interromput la reproducció del vídeo.", 22 | "A network error caused the media download to fail part-way.": "Un error de la xarxa ha interromput la baixada del vídeo.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "No s'ha pogut carregar el vídeo perquè el servidor o la xarxa han fallat, o bé perquè el seu format no és compatible.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La reproducció de vídeo s'ha interrumput per un problema de corrupció de dades o bé perquè el vídeo demanava funcions que el vostre navegador no ofereix.", 25 | "No compatible source was found for this media.": "No s'ha trobat cap font compatible amb el vídeo." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/cs.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("cs",{ 2 | "Play": "Přehrát", 3 | "Pause": "Pauza", 4 | "Current Time": "Aktuální čas", 5 | "Duration Time": "Doba trvání", 6 | "Remaining Time": "Zbývající čas", 7 | "Stream Type": "Stream Type", 8 | "LIVE": "ŽIVĚ", 9 | "Loaded": "Načteno", 10 | "Progress": "Stav", 11 | "Fullscreen": "Celá obrazovka", 12 | "Non-Fullscreen": "Zmenšená obrazovka", 13 | "Mute": "Ztlumit zvuk", 14 | "Unmute": "Přehrát zvuk", 15 | "Playback Rate": "Rychlost přehrávání", 16 | "Subtitles": "Titulky", 17 | "subtitles off": "Titulky vypnuty", 18 | "Captions": "Popisky", 19 | "captions off": "Popisky vypnuty", 20 | "Chapters": "Kapitoly", 21 | "You aborted the media playback": "Přehrávání videa je přerušeno.", 22 | "A network error caused the media download to fail part-way.": "Video nemohlo být načteno, kvůli chybě v síti.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video nemohlo být načteno, buď kvůli chybě serveru nebo sítě nebo proto, že daný formát není podporován.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Váš prohlížeč nepodporuje formát videa.", 25 | "No compatible source was found for this media.": "Špatně zadaný zdroj videa." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/da.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("da",{ 2 | "Play": "Afspil", 3 | "Pause": "Pause", 4 | "Current Time": "Aktuel tid", 5 | "Duration Time": "Varighed", 6 | "Remaining Time": "Resterende tid", 7 | "Stream Type": "Stream-type", 8 | "LIVE": "LIVE", 9 | "Loaded": "Indlæst", 10 | "Progress": "Status", 11 | "Fullscreen": "Fuldskærm", 12 | "Non-Fullscreen": "Luk fuldskærm", 13 | "Mute": "Uden lyd", 14 | "Unmute": "Med lyd", 15 | "Playback Rate": "Afspilningsrate", 16 | "Subtitles": "Undertekster", 17 | "subtitles off": "Uden undertekster", 18 | "Captions": "Undertekster for hørehæmmede", 19 | "captions off": "Uden undertekster for hørehæmmede", 20 | "Chapters": "Kapitler", 21 | "You aborted the media playback": "Du afbrød videoafspilningen.", 22 | "A network error caused the media download to fail part-way.": "En netværksfejl fik download af videoen til at fejle.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke indlæses, enten fordi serveren eller netværket fejlede, eller fordi formatet ikke er understøttet.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoafspilningen blev afbrudt på grund af ødelagte data eller fordi videoen benyttede faciliteter som din browser ikke understøtter.", 25 | "No compatible source was found for this media.": "Fandt ikke en kompatibel kilde for denne media." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/de.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("de",{ 2 | "Play": "Wiedergabe", 3 | "Pause": "Pause", 4 | "Current Time": "Aktueller Zeitpunkt", 5 | "Duration Time": "Dauer", 6 | "Remaining Time": "Verbleibende Zeit", 7 | "Stream Type": "Streamtyp", 8 | "LIVE": "LIVE", 9 | "Loaded": "Geladen", 10 | "Progress": "Status", 11 | "Fullscreen": "Vollbild", 12 | "Non-Fullscreen": "Kein Vollbild", 13 | "Mute": "Ton aus", 14 | "Unmute": "Ton ein", 15 | "Playback Rate": "Wiedergabegeschwindigkeit", 16 | "Subtitles": "Untertitel", 17 | "subtitles off": "Untertitel aus", 18 | "Captions": "Untertitel", 19 | "captions off": "Untertitel aus", 20 | "Chapters": "Kapitel", 21 | "You aborted the media playback": "Sie haben die Videowiedergabe abgebrochen.", 22 | "A network error caused the media download to fail part-way.": "Der Videodownload ist aufgrund eines Netzwerkfehlers fehlgeschlagen.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Die Videowiedergabe wurde entweder wegen eines Problems mit einem beschädigten Video oder wegen verwendeten Funktionen, die vom Browser nicht unterstützt werden, abgebrochen.", 25 | "No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/es.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("es",{ 2 | "Play": "Reproducción", 3 | "Pause": "Pausa", 4 | "Current Time": "Tiempo reproducido", 5 | "Duration Time": "Duración total", 6 | "Remaining Time": "Tiempo restante", 7 | "Stream Type": "Tipo de secuencia", 8 | "LIVE": "DIRECTO", 9 | "Loaded": "Cargado", 10 | "Progress": "Progreso", 11 | "Fullscreen": "Pantalla completa", 12 | "Non-Fullscreen": "Pantalla no completa", 13 | "Mute": "Silenciar", 14 | "Unmute": "No silenciado", 15 | "Playback Rate": "Velocidad de reproducción", 16 | "Subtitles": "Subtítulos", 17 | "subtitles off": "Subtítulos desactivados", 18 | "Captions": "Subtítulos especiales", 19 | "captions off": "Subtítulos especiales desactivados", 20 | "Chapters": "Capítulos", 21 | "You aborted the media playback": "Ha interrumpido la reproducción del vídeo.", 22 | "A network error caused the media download to fail part-way.": "Un error de red ha interrumpido la descarga del vídeo.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "No se ha podido cargar el vídeo debido a un fallo de red o del servidor o porque el formato es incompatible.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La reproducción de vídeo se ha interrumpido por un problema de corrupción de datos o porque el vídeo precisa funciones que su navegador no ofrece.", 25 | "No compatible source was found for this media.": "No se ha encontrado ninguna fuente compatible con este vídeo." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/fi.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("fi",{ 2 | "Play": "Toisto", 3 | "Pause": "Tauko", 4 | "Current Time": "Tämänhetkinen aika", 5 | "Duration Time": "Kokonaisaika", 6 | "Remaining Time": "Jäljellä oleva aika", 7 | "Stream Type": "Lähetystyyppi", 8 | "LIVE": "LIVE", 9 | "Loaded": "Ladattu", 10 | "Progress": "Edistyminen", 11 | "Fullscreen": "Koko näyttö", 12 | "Non-Fullscreen": "Koko näyttö pois", 13 | "Mute": "Ääni pois", 14 | "Unmute": "Ääni päällä", 15 | "Playback Rate": "Toistonopeus", 16 | "Subtitles": "Tekstitys", 17 | "subtitles off": "Tekstitys pois", 18 | "Captions": "Tekstitys", 19 | "captions off": "Tekstitys pois", 20 | "Chapters": "Kappaleet", 21 | "You aborted the media playback": "Olet keskeyttänyt videotoiston.", 22 | "A network error caused the media download to fail part-way.": "Verkkovirhe keskeytti videon latauksen.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videon lataus ei onnistunut joko palvelin- tai verkkovirheestä tai väärästä formaatista johtuen.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videon toisto keskeytyi, koska media on vaurioitunut tai käyttää käyttää toimintoja, joita selaimesi ei tue.", 25 | "No compatible source was found for this media.": "Tälle videolle ei löytynyt yhteensopivaa lähdettä." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/fr.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("fr",{ 2 | "Play": "Lecture", 3 | "Pause": "Pause", 4 | "Current Time": "Temps actuel", 5 | "Duration Time": "Durée", 6 | "Remaining Time": "Temps restant", 7 | "Stream Type": "Type de flux", 8 | "LIVE": "EN DIRECT", 9 | "Loaded": "Chargé", 10 | "Progress": "Progression", 11 | "Fullscreen": "Plein écran", 12 | "Non-Fullscreen": "Fenêtré", 13 | "Mute": "Sourdine", 14 | "Unmute": "Son activé", 15 | "Playback Rate": "Vitesse de lecture", 16 | "Subtitles": "Sous-titres", 17 | "subtitles off": "Sous-titres désactivés", 18 | "Captions": "Sous-titres", 19 | "captions off": "Sous-titres désactivés", 20 | "Chapters": "Chapitres", 21 | "You aborted the media playback": "Vous avez interrompu la lecture de la vidéo.", 22 | "A network error caused the media download to fail part-way.": "Une erreur de réseau a interrompu le téléchargement de la vidéo.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Cette vidéo n'a pas pu être chargée, soit parce que le serveur ou le réseau a échoué ou parce que le format n'est pas reconnu.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La lecture de la vidéo a été interrompue à cause d'un problème de corruption ou parce que la vidéo utilise des fonctionnalités non prises en charge par votre navigateur.", 25 | "No compatible source was found for this media.": "Aucune source compatible n'a été trouvée pour cette vidéo." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/hr.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("hr",{ 2 | "Play": "Pusti", 3 | "Pause": "Pauza", 4 | "Current Time": "Trenutno vrijeme", 5 | "Duration Time": "Vrijeme trajanja", 6 | "Remaining Time": "Preostalo vrijeme", 7 | "Stream Type": "Način strimovanja", 8 | "LIVE": "UŽIVO", 9 | "Loaded": "Učitan", 10 | "Progress": "Progres", 11 | "Fullscreen": "Puni ekran", 12 | "Non-Fullscreen": "Mali ekran", 13 | "Mute": "Prigušen", 14 | "Unmute": "Ne-prigušen", 15 | "Playback Rate": "Stopa reprodukcije", 16 | "Subtitles": "Podnaslov", 17 | "subtitles off": "Podnaslov deaktiviran", 18 | "Captions": "Titlovi", 19 | "captions off": "Titlovi deaktivirani", 20 | "Chapters": "Poglavlja", 21 | "You aborted the media playback": "Isključili ste reprodukciju videa.", 22 | "A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.", 25 | "No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/hu.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("hu",{ 2 | "Play": "Lejátszás", 3 | "Pause": "Szünet", 4 | "Current Time": "Aktuális időpont", 5 | "Duration Time": "Hossz", 6 | "Remaining Time": "Hátralévő idő", 7 | "Stream Type": "Adatfolyam típusa", 8 | "LIVE": "ÉLŐ", 9 | "Loaded": "Betöltve", 10 | "Progress": "Állapot", 11 | "Fullscreen": "Teljes képernyő", 12 | "Non-Fullscreen": "Normál méret", 13 | "Mute": "Némítás", 14 | "Unmute": "Némítás kikapcsolva", 15 | "Playback Rate": "Lejátszási sebesség", 16 | "Subtitles": "Feliratok", 17 | "subtitles off": "Feliratok kikapcsolva", 18 | "Captions": "Magyarázó szöveg", 19 | "captions off": "Magyarázó szöveg kikapcsolva", 20 | "Chapters": "Fejezetek", 21 | "You aborted the media playback": "Leállította a lejátszást", 22 | "A network error caused the media download to fail part-way.": "Hálózati hiba miatt a videó részlegesen töltődött le.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "A videó nem tölthető be hálózati vagy kiszolgálói hiba miatt, vagy a formátuma nem támogatott.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "A lejátszás adatsérülés miatt leállt, vagy a videó egyes tulajdonságait a böngészője nem támogatja.", 25 | "No compatible source was found for this media.": "Nincs kompatibilis forrás ehhez a videóhoz." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/it.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("it",{ 2 | "Play": "Play", 3 | "Pause": "Pausa", 4 | "Current Time": "Orario attuale", 5 | "Duration Time": "Durata", 6 | "Remaining Time": "Tempo rimanente", 7 | "Stream Type": "Tipo del Streaming", 8 | "LIVE": "LIVE", 9 | "Loaded": "Caricato", 10 | "Progress": "Stato", 11 | "Fullscreen": "Schermo intero", 12 | "Non-Fullscreen": "Chiudi schermo intero", 13 | "Mute": "Muto", 14 | "Unmute": "Audio", 15 | "Playback Rate": "Tasso di riproduzione", 16 | "Subtitles": "Sottotitoli", 17 | "subtitles off": "Senza sottotitoli", 18 | "Captions": "Sottotitoli non udenti", 19 | "captions off": "Senza sottotitoli non udenti", 20 | "Chapters": "Capitolo", 21 | "You aborted the media playback": "La riproduzione del filmato è stata interrotta.", 22 | "A network error caused the media download to fail part-way.": "Il download del filmato è stato interrotto a causa di un problema rete.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Il filmato non può essere caricato a causa di un errore nel server o nella rete o perché il formato non viene supportato.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La riproduzione del filmato è stata interrotta a causa di un file danneggiato o per l’utilizzo di impostazioni non supportate dal browser.", 25 | "No compatible source was found for this media.": "Non ci sono fonti compatibili per questo filmato." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/ja.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("ja",{ 2 | "Play": "再生", 3 | "Pause": "一時停止", 4 | "Current Time": "現在の時間", 5 | "Duration Time": "長さ", 6 | "Remaining Time": "残りの時間", 7 | "Stream Type": "ストリームの種類", 8 | "LIVE": "ライブ", 9 | "Loaded": "ロード済み", 10 | "Progress": "進行状況", 11 | "Fullscreen": "フルスクリーン", 12 | "Non-Fullscreen": "フルスクリーン以外", 13 | "Mute": "ミュート", 14 | "Unmute": "ミュート解除", 15 | "Playback Rate": "再生レート", 16 | "Subtitles": "サブタイトル", 17 | "subtitles off": "サブタイトル オフ", 18 | "Captions": "キャプション", 19 | "captions off": "キャプション オフ", 20 | "Chapters": "チャプター", 21 | "You aborted the media playback": "動画再生を中止しました", 22 | "A network error caused the media download to fail part-way.": "ネットワーク エラーにより動画のダウンロードが途中で失敗しました", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "サーバーまたはネットワークのエラー、またはフォーマットがサポートされていないため、動画をロードできませんでした", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "破損の問題、またはお使いのブラウザがサポートしていない機能が動画に使用されていたため、動画の再生が中止されました", 25 | "No compatible source was found for this media.": "この動画に対して互換性のあるソースが見つかりませんでした" 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/ko.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("ko",{ 2 | "Play": "재생", 3 | "Pause": "일시중지", 4 | "Current Time": "현재 시간", 5 | "Duration Time": "지정 기간", 6 | "Remaining Time": "남은 시간", 7 | "Stream Type": "스트리밍 유형", 8 | "LIVE": "라이브", 9 | "Loaded": "로드됨", 10 | "Progress": "진행", 11 | "Fullscreen": "전체 화면", 12 | "Non-Fullscreen": "전체 화면 해제", 13 | "Mute": "음소거", 14 | "Unmute": "음소거 해제", 15 | "Playback Rate": "재생 비율", 16 | "Subtitles": "서브타이틀", 17 | "subtitles off": "서브타이틀 끄기", 18 | "Captions": "자막", 19 | "captions off": "자막 끄기", 20 | "Chapters": "챕터", 21 | "You aborted the media playback": "비디오 재생을 취소했습니다.", 22 | "A network error caused the media download to fail part-way.": "네트워크 오류로 인하여 비디오 일부를 다운로드하지 못 했습니다.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "비디오를 로드할 수 없습니다. 서버 혹은 네트워크 오류 때문이거나 지원되지 않는 형식 때문일 수 있습니다.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "비디오 재생이 취소됐습니다. 비디오가 손상되었거나 비디오가 사용하는 기능을 브라우저에서 지원하지 않는 것 같습니다.", 25 | "No compatible source was found for this media.": "비디오에 호환되지 않는 소스가 있습니다." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/nb.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("nb",{ 2 | "Play": "Spill", 3 | "Pause": "Pause", 4 | "Current Time": "Aktuell tid", 5 | "Duration Time": "Varighet", 6 | "Remaining Time": "Gjenstående tid", 7 | "Stream Type": "Type strøm", 8 | "LIVE": "DIREKTE", 9 | "Loaded": "Lastet inn", 10 | "Progress": "Status", 11 | "Fullscreen": "Fullskjerm", 12 | "Non-Fullscreen": "Lukk fullskjerm", 13 | "Mute": "Lyd av", 14 | "Unmute": "Lyd på", 15 | "Playback Rate": "Avspillingsrate", 16 | "Subtitles": "Undertekst på", 17 | "subtitles off": "Undertekst av", 18 | "Captions": "Undertekst for hørselshemmede på", 19 | "captions off": "Undertekst for hørselshemmede av", 20 | "Chapters": "Kapitler", 21 | "You aborted the media playback": "Du avbrøt avspillingen.", 22 | "A network error caused the media download to fail part-way.": "En nettverksfeil avbrøt nedlasting av videoen.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke lastes ned, på grunn av nettverksfeil eller serverfeil, eller fordi formatet ikke er støttet.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspillingen ble avbrudt på grunn av ødelagte data eller fordi videoen ville gjøre noe som nettleseren din ikke har støtte for.", 25 | "No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/nl.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("nl",{ 2 | "Play": "Afspelen", 3 | "Pause": "Pauze", 4 | "Current Time": "Huidige tijd", 5 | "Duration Time": "Looptijd", 6 | "Remaining Time": "Resterende tijd", 7 | "Stream Type": "Streamtype", 8 | "LIVE": "LIVE", 9 | "Loaded": "Geladen", 10 | "Progress": "Status", 11 | "Fullscreen": "Volledig scherm", 12 | "Non-Fullscreen": "Geen volledig scherm", 13 | "Mute": "Geluid uit", 14 | "Unmute": "Geluid aan", 15 | "Playback Rate": "Weergavesnelheid", 16 | "Subtitles": "Ondertiteling", 17 | "subtitles off": "Ondertiteling uit", 18 | "Captions": "Ondertiteling", 19 | "captions off": "Ondertiteling uit", 20 | "Chapters": "Hoofdstukken", 21 | "You aborted the media playback": "U hebt de mediaweergave afgebroken.", 22 | "A network error caused the media download to fail part-way.": "De mediadownload is mislukt door een netwerkfout.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "De media kon niet worden geladen, vanwege een server- of netwerkfout of doordat het formaat niet wordt ondersteund.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "De mediaweergave is afgebroken vanwege beschadigde data of het mediabestand gebruikt functies die niet door uw browser worden ondersteund.", 25 | "No compatible source was found for this media.": "Voor deze media is geen ondersteunde bron gevonden." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/nn.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("nn",{ 2 | "Play": "Spel", 3 | "Pause": "Pause", 4 | "Current Time": "Aktuell tid", 5 | "Duration Time": "Varigheit", 6 | "Remaining Time": "Tid attende", 7 | "Stream Type": "Type straum", 8 | "LIVE": "DIREKTE", 9 | "Loaded": "Lasta inn", 10 | "Progress": "Status", 11 | "Fullscreen": "Fullskjerm", 12 | "Non-Fullscreen": "Stenga fullskjerm", 13 | "Mute": "Ljod av", 14 | "Unmute": "Ljod på", 15 | "Playback Rate": "Avspelingsrate", 16 | "Subtitles": "Teksting på", 17 | "subtitles off": "Teksting av", 18 | "Captions": "Teksting for høyrselshemma på", 19 | "captions off": "Teksting for høyrselshemma av", 20 | "Chapters": "Kapitel", 21 | "You aborted the media playback": "Du avbraut avspelinga.", 22 | "A network error caused the media download to fail part-way.": "Ein nettverksfeil avbraut nedlasting av videoen.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikkje lastas ned, på grunn av ein nettverksfeil eller serverfeil, eller av di formatet ikkje er stoda.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspelinga blei broten på grunn av øydelagde data eller av di videoen ville gjera noe som nettlesaren din ikkje stodar.", 25 | "No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/pt-BR.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("pt-BR",{ 2 | "Play": "Tocar", 3 | "Pause": "Pause", 4 | "Current Time": "Tempo", 5 | "Duration Time": "Duração", 6 | "Remaining Time": "Tempo Restante", 7 | "Stream Type": "Tipo de Stream", 8 | "LIVE": "AO VIVO", 9 | "Loaded": "Carregado", 10 | "Progress": "Progresso", 11 | "Fullscreen": "Tela Cheia", 12 | "Non-Fullscreen": "Tela Normal", 13 | "Mute": "Mudo", 14 | "Unmute": "Habilitar Som", 15 | "Playback Rate": "Velocidade", 16 | "Subtitles": "Legendas", 17 | "subtitles off": "Sem Legendas", 18 | "Captions": "Anotações", 19 | "captions off": "Sem Anotações", 20 | "Chapters": "Capítulos", 21 | "You aborted the media playback": "Você parou a execução de vídeo.", 22 | "A network error caused the media download to fail part-way.": "Um erro na rede fez o vídeo parar parcialmente.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "O vídeo não pode ser carregado, ou porque houve um problema com sua rede ou pelo formato do vídeo não ser suportado.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "A Execução foi interrompida por um problema com o vídeo ou por seu navegador não dar suporte ao seu formato.", 25 | "No compatible source was found for this media.": "Não foi encontrada fonte de vídeo compatível." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/ru.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("ru",{ 2 | "Play": "Воспроизвести", 3 | "Pause": "Приостановить", 4 | "Current Time": "Текущее время", 5 | "Duration Time": "Продолжительность", 6 | "Remaining Time": "Оставшееся время", 7 | "Stream Type": "Тип потока", 8 | "LIVE": "ОНЛАЙН", 9 | "Loaded": "Загрузка", 10 | "Progress": "Прогресс", 11 | "Fullscreen": "Полноэкранный режим", 12 | "Non-Fullscreen": "Неполноэкранный режим", 13 | "Mute": "Без звука", 14 | "Unmute": "Со звуком", 15 | "Playback Rate": "Скорость воспроизведения", 16 | "Subtitles": "Субтитры", 17 | "subtitles off": "Субтитры выкл.", 18 | "Captions": "Подписи", 19 | "captions off": "Подписи выкл.", 20 | "Chapters": "Главы", 21 | "You aborted the media playback": "Вы прервали воспроизведение видео", 22 | "A network error caused the media download to fail part-way.": "Ошибка сети вызвала сбой во время загрузки видео.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Невозможно загрузить видео из-за сетевого или серверного сбоя либо формат не поддерживается.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Воспроизведение видео было приостановлено из-за повреждения либо в связи с тем, что видео использует функции, неподдерживаемые вашим браузером.", 25 | "No compatible source was found for this media.": "Совместимые источники для этого видео отсутствуют." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/sr.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("sr",{ 2 | "Play": "Pusti", 3 | "Pause": "Pauza", 4 | "Current Time": "Trenutno vrijeme", 5 | "Duration Time": "Vrijeme trajanja", 6 | "Remaining Time": "Preostalo vrijeme", 7 | "Stream Type": "Način strimovanja", 8 | "LIVE": "UŽIVO", 9 | "Loaded": "Učitan", 10 | "Progress": "Progres", 11 | "Fullscreen": "Puni ekran", 12 | "Non-Fullscreen": "Mali ekran", 13 | "Mute": "Prigušen", 14 | "Unmute": "Ne-prigušen", 15 | "Playback Rate": "Stopa reprodukcije", 16 | "Subtitles": "Podnaslov", 17 | "subtitles off": "Podnaslov deaktiviran", 18 | "Captions": "Titlovi", 19 | "captions off": "Titlovi deaktivirani", 20 | "Chapters": "Poglavlja", 21 | "You aborted the media playback": "Isključili ste reprodukciju videa.", 22 | "A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.", 25 | "No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/sv.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("sv",{ 2 | "Play": "Spela", 3 | "Pause": "Pausa", 4 | "Current Time": "Aktuell tid", 5 | "Duration Time": "Total tid", 6 | "Remaining Time": "Återstående tid", 7 | "Stream Type": "Strömningstyp", 8 | "LIVE": "LIVE", 9 | "Loaded": "Laddad", 10 | "Progress": "Förlopp", 11 | "Fullscreen": "Fullskärm", 12 | "Non-Fullscreen": "Ej fullskärm", 13 | "Mute": "Ljud av", 14 | "Unmute": "Ljud på", 15 | "Playback Rate": "Uppspelningshastighet", 16 | "Subtitles": "Text på", 17 | "subtitles off": "Text av", 18 | "Captions": "Text på", 19 | "captions off": "Text av", 20 | "Chapters": "Kapitel", 21 | "You aborted the media playback": "Du har avbrutit videouppspelningen.", 22 | "A network error caused the media download to fail part-way.": "Ett nätverksfel gjorde att nedladdningen av videon avbröts.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Det gick inte att ladda videon, antingen på grund av ett server- eller nätverksfel, eller för att formatet inte stöds.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Uppspelningen avbröts på grund av att videon är skadad, eller också för att videon använder funktioner som din webbläsare inte stöder.", 25 | "No compatible source was found for this media.": "Det gick inte att hitta någon kompatibel källa för den här videon." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/tr.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("tr",{ 2 | "Play": "Oynat", 3 | "Pause": "Duraklat", 4 | "Current Time": "Süre", 5 | "Duration Time": "Toplam Süre", 6 | "Remaining Time": "Kalan Süre", 7 | "Stream Type": "Yayın Tipi", 8 | "LIVE": "CANLI", 9 | "Loaded": "Yüklendi", 10 | "Progress": "Yükleniyor", 11 | "Fullscreen": "Tam Ekran", 12 | "Non-Fullscreen": "Küçük Ekran", 13 | "Mute": "Ses Kapa", 14 | "Unmute": "Ses Aç", 15 | "Playback Rate": "Oynatma Hızı", 16 | "Subtitles": "Altyazı", 17 | "subtitles off": "Altyazı Kapat", 18 | "Captions": "Ek Açıklamalar", 19 | "captions off": "Ek Açıklamalar Kapalı", 20 | "Chapters": "Bölümler", 21 | "You aborted the media playback": "Video oynatmayı iptal ettiniz", 22 | "A network error caused the media download to fail part-way.": "Video indirilirken bağlantı sorunu oluştu.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video oynatılamadı, ağ ya da sunucu hatası veya belirtilen format desteklenmiyor.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Tarayıcınız desteklemediği için videoda hata oluştu.", 25 | "No compatible source was found for this media.": "Video için kaynak bulunamadı." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/uk.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("uk",{ 2 | "Play": "Відтворити", 3 | "Pause": "Призупинити", 4 | "Current Time": "Поточний час", 5 | "Duration Time": "Тривалість", 6 | "Remaining Time": "Час, що залишився", 7 | "Stream Type": "Тип потоку", 8 | "LIVE": "НАЖИВО", 9 | "Loaded": "Завантаження", 10 | "Progress": "Прогрес", 11 | "Fullscreen": "Повноекранний режим", 12 | "Non-Fullscreen": "Неповноекранний режим", 13 | "Mute": "Без звуку", 14 | "Unmute": "Зі звуком", 15 | "Playback Rate": "Швидкість відтворення", 16 | "Subtitles": "Субтитри", 17 | "subtitles off": "Без субтитрів", 18 | "Captions": "Підписи", 19 | "captions off": "Без підписів", 20 | "Chapters": "Розділи", 21 | "You aborted the media playback": "Ви припинили відтворення відео", 22 | "A network error caused the media download to fail part-way.": "Помилка мережі викликала збій під час завантаження відео.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Неможливо завантажити відео через мережевий чи серверний збій або формат не підтримується.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Відтворення відео було припинено через пошкодження або у зв'язку з тим, що відео використовує функції, які не підтримуються вашим браузером.", 25 | "No compatible source was found for this media.": "Сумісні джерела для цього відео відсутні." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/vi.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("vi",{ 2 | "Play": "Phát", 3 | "Pause": "Tạm dừng", 4 | "Current Time": "Thời gian hiện tại", 5 | "Duration Time": "Độ dài", 6 | "Remaining Time": "Thời gian còn lại", 7 | "Stream Type": "Kiểu Stream", 8 | "LIVE": "TRỰC TIẾP", 9 | "Loaded": "Đã tải", 10 | "Progress": "Tiến trình", 11 | "Fullscreen": "Toàn màn hình", 12 | "Non-Fullscreen": "Thoát toàn màn hình", 13 | "Mute": "Tắt tiếng", 14 | "Unmute": "Bật âm thanh", 15 | "Playback Rate": "Tốc độ phát", 16 | "Subtitles": "Phụ đề", 17 | "subtitles off": "Tắt phụ đề", 18 | "Captions": "Chú thích", 19 | "captions off": "Tắt chú thích", 20 | "Chapters": "Chương", 21 | "You aborted the media playback": "Bạn đã hủy việc phát media.", 22 | "A network error caused the media download to fail part-way.": "Một lỗi mạng dẫn đến việc tải media bị lỗi.", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video không tải được, mạng hay server có lỗi hoặc định dạng không được hỗ trợ.", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Phát media đã bị hủy do một sai lỗi hoặc media sử dụng những tính năng trình duyệt không hỗ trợ.", 25 | "No compatible source was found for this media.": "Không có nguồn tương thích cho media này." 26 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/zh-CN.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("zh-CN",{ 2 | "Play": "播放", 3 | "Pause": "暂停", 4 | "Current Time": "当前时间", 5 | "Duration Time": "时长", 6 | "Remaining Time": "剩余时间", 7 | "Stream Type": "媒体流类型", 8 | "LIVE": "直播", 9 | "Loaded": "加载完毕", 10 | "Progress": "进度", 11 | "Fullscreen": "全屏", 12 | "Non-Fullscreen": "退出全屏", 13 | "Mute": "静音", 14 | "Unmute": "取消静音", 15 | "Playback Rate": "播放码率", 16 | "Subtitles": "字幕", 17 | "subtitles off": "字幕关闭", 18 | "Captions": "内嵌字幕", 19 | "captions off": "内嵌字幕关闭", 20 | "Chapters": "节目段落", 21 | "You aborted the media playback": "视频播放被终止", 22 | "A network error caused the media download to fail part-way.": "网络错误导致视频下载中途失败。", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "视频因格式不支持或者服务器或网络的问题无法加载。", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "由于视频文件损坏或是该视频使用了你的浏览器不支持的功能,播放终止。", 25 | "No compatible source was found for this media.": "无法找到此视频兼容的源。", 26 | "The media is encrypted and we do not have the keys to decrypt it.": "视频已加密,无法解密。" 27 | }); -------------------------------------------------------------------------------- /src/components/video-js/lang/zh-TW.js: -------------------------------------------------------------------------------- 1 | videojs.addLanguage("zh-TW",{ 2 | "Play": "播放", 3 | "Pause": "暫停", 4 | "Current Time": "目前時間", 5 | "Duration Time": "總共時間", 6 | "Remaining Time": "剩餘時間", 7 | "Stream Type": "串流類型", 8 | "LIVE": "直播", 9 | "Loaded": "載入完畢", 10 | "Progress": "進度", 11 | "Fullscreen": "全螢幕", 12 | "Non-Fullscreen": "退出全螢幕", 13 | "Mute": "靜音", 14 | "Unmute": "取消靜音", 15 | "Playback Rate": " 播放速率", 16 | "Subtitles": "字幕", 17 | "subtitles off": "關閉字幕", 18 | "Captions": "內嵌字幕", 19 | "captions off": "關閉內嵌字幕", 20 | "Chapters": "章節", 21 | "You aborted the media playback": "影片播放已終止", 22 | "A network error caused the media download to fail part-way.": "網路錯誤導致影片下載失敗。", 23 | "The media could not be loaded, either because the server or network failed or because the format is not supported.": "影片因格式不支援或者伺服器或網路的問題無法載入。", 24 | "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "由於影片檔案損毀或是該影片使用了您的瀏覽器不支援的功能,播放終止。", 25 | "No compatible source was found for this media.": "無法找到相容此影片的來源。", 26 | "The media is encrypted and we do not have the keys to decrypt it.": "影片已加密,無法解密。" 27 | }); -------------------------------------------------------------------------------- /src/components/video-js/modernizr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by taox on 16-2-19. 3 | */ 4 | /*! 5 | * modernizr v3.3.1 6 | * Build http://modernizr.com/download?-setclasses-dontmin 7 | * 8 | * Copyright (c) 9 | * Faruk Ates 10 | * Paul Irish 11 | * Alex Sexton 12 | * Ryan Seddon 13 | * Patrick Kettner 14 | * Stu Cox 15 | * Richard Herrera 16 | 17 | * MIT License 18 | */ 19 | 20 | /* 21 | * Modernizr tests which native CSS3 and HTML5 features are available in the 22 | * current UA and makes the results available to you in two ways: as properties on 23 | * a global `Modernizr` object, and as classes on the `` element. This 24 | * information allows you to progressively enhance your pages with a granular level 25 | * of control over the experience. 26 | */ 27 | 28 | ;(function(window, document, undefined){ 29 | var classes = []; 30 | 31 | 32 | var tests = []; 33 | 34 | 35 | /** 36 | * 37 | * ModernizrProto is the constructor for Modernizr 38 | * 39 | * @class 40 | * @access public 41 | */ 42 | 43 | var ModernizrProto = { 44 | // The current version, dummy 45 | _version: '3.3.1', 46 | 47 | // Any settings that don't work as separate modules 48 | // can go in here as configuration. 49 | _config: { 50 | 'classPrefix': '', 51 | 'enableClasses': true, 52 | 'enableJSClass': true, 53 | 'usePrefixes': true 54 | }, 55 | 56 | // Queue of tests 57 | _q: [], 58 | 59 | // Stub these for people who are listening 60 | on: function(test, cb) { 61 | // I don't really think people should do this, but we can 62 | // safe guard it a bit. 63 | // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests. 64 | // This is in case people listen to synchronous tests. I would leave it out, 65 | // but the code to *disallow* sync tests in the real version of this 66 | // function is actually larger than this. 67 | var self = this; 68 | setTimeout(function() { 69 | cb(self[test]); 70 | }, 0); 71 | }, 72 | 73 | addTest: function(name, fn, options) { 74 | tests.push({name: name, fn: fn, options: options}); 75 | }, 76 | 77 | addAsyncTest: function(fn) { 78 | tests.push({name: null, fn: fn}); 79 | } 80 | }; 81 | 82 | 83 | 84 | // Fake some of Object.create so we can force non test results to be non "own" properties. 85 | var Modernizr = function() {}; 86 | Modernizr.prototype = ModernizrProto; 87 | 88 | // Leak modernizr globally when you `require` it rather than force it here. 89 | // Overwrite name so constructor name is nicer :D 90 | Modernizr = new Modernizr(); 91 | 92 | 93 | 94 | /** 95 | * is returns a boolean if the typeof an obj is exactly type. 96 | * 97 | * @access private 98 | * @function is 99 | * @param {*} obj - A thing we want to check the type of 100 | * @param {string} type - A string to compare the typeof against 101 | * @returns {boolean} 102 | */ 103 | 104 | function is(obj, type) { 105 | return typeof obj === type; 106 | } 107 | ; 108 | 109 | /** 110 | * Run through all tests and detect their support in the current UA. 111 | * 112 | * @access private 113 | */ 114 | 115 | function testRunner() { 116 | var featureNames; 117 | var feature; 118 | var aliasIdx; 119 | var result; 120 | var nameIdx; 121 | var featureName; 122 | var featureNameSplit; 123 | 124 | for (var featureIdx in tests) { 125 | if (tests.hasOwnProperty(featureIdx)) { 126 | featureNames = []; 127 | feature = tests[featureIdx]; 128 | // run the test, throw the return value into the Modernizr, 129 | // then based on that boolean, define an appropriate className 130 | // and push it into an array of classes we'll join later. 131 | // 132 | // If there is no name, it's an 'async' test that is run, 133 | // but not directly added to the object. That should 134 | // be done with a post-run addTest call. 135 | if (feature.name) { 136 | featureNames.push(feature.name.toLowerCase()); 137 | 138 | if (feature.options && feature.options.aliases && feature.options.aliases.length) { 139 | // Add all the aliases into the names list 140 | for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) { 141 | featureNames.push(feature.options.aliases[aliasIdx].toLowerCase()); 142 | } 143 | } 144 | } 145 | 146 | // Run the test, or use the raw value if it's not a function 147 | result = is(feature.fn, 'function') ? feature.fn() : feature.fn; 148 | 149 | 150 | // Set each of the names on the Modernizr object 151 | for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) { 152 | featureName = featureNames[nameIdx]; 153 | // Support dot properties as sub tests. We don't do checking to make sure 154 | // that the implied parent tests have been added. You must call them in 155 | // order (either in the test, or make the parent test a dependency). 156 | // 157 | // Cap it to TWO to make the logic simple and because who needs that kind of subtesting 158 | // hashtag famous last words 159 | featureNameSplit = featureName.split('.'); 160 | 161 | if (featureNameSplit.length === 1) { 162 | Modernizr[featureNameSplit[0]] = result; 163 | } else { 164 | // cast to a Boolean, if not one already 165 | /* jshint -W053 */ 166 | if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) { 167 | Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]); 168 | } 169 | 170 | Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result; 171 | } 172 | 173 | classes.push((result ? '' : 'no-') + featureNameSplit.join('-')); 174 | } 175 | } 176 | } 177 | } 178 | ; 179 | 180 | /** 181 | * docElement is a convenience wrapper to grab the root element of the document 182 | * 183 | * @access private 184 | * @returns {HTMLElement|SVGElement} The root element of the document 185 | */ 186 | 187 | var docElement = document.documentElement; 188 | 189 | 190 | /** 191 | * A convenience helper to check if the document we are running in is an SVG document 192 | * 193 | * @access private 194 | * @returns {boolean} 195 | */ 196 | 197 | var isSVG = docElement.nodeName.toLowerCase() === 'svg'; 198 | 199 | 200 | /** 201 | * setClasses takes an array of class names and adds them to the root element 202 | * 203 | * @access private 204 | * @function setClasses 205 | * @param {string[]} classes - Array of class names 206 | */ 207 | 208 | // Pass in an and array of class names, e.g.: 209 | // ['no-webp', 'borderradius', ...] 210 | function setClasses(classes) { 211 | var className = docElement.className; 212 | var classPrefix = Modernizr._config.classPrefix || ''; 213 | 214 | if (isSVG) { 215 | className = className.baseVal; 216 | } 217 | 218 | // Change `no-js` to `js` (independently of the `enableClasses` option) 219 | // Handle classPrefix on this too 220 | if (Modernizr._config.enableJSClass) { 221 | var reJS = new RegExp('(^|\\s)' + classPrefix + 'no-js(\\s|$)'); 222 | className = className.replace(reJS, '$1' + classPrefix + 'js$2'); 223 | } 224 | 225 | if (Modernizr._config.enableClasses) { 226 | // Add the new classes 227 | className += ' ' + classPrefix + classes.join(' ' + classPrefix); 228 | isSVG ? docElement.className.baseVal = className : docElement.className = className; 229 | } 230 | 231 | } 232 | 233 | ; 234 | 235 | // Run each test 236 | testRunner(); 237 | 238 | // Remove the "no-js" class if it exists 239 | setClasses(classes); 240 | 241 | delete ModernizrProto.addTest; 242 | delete ModernizrProto.addAsyncTest; 243 | 244 | // Run the things that are supposed to run after the tests 245 | for (var i = 0; i < Modernizr._q.length; i++) { 246 | Modernizr._q[i](); 247 | } 248 | 249 | // Leak Modernizr namespace 250 | window.Modernizr = Modernizr; 251 | 252 | 253 | ; 254 | 255 | })(window, document); 256 | -------------------------------------------------------------------------------- /src/components/video-js/this.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by taox on 16-2-19. 3 | */ 4 | (function(window,document){ 5 | console.log(window); 6 | })(this,document); 7 | console.log(this); 8 | -------------------------------------------------------------------------------- /src/components/video-js/video-js.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/towersxu/vue-components/e7b8e4fedc0873e48f023645838d1c84452a97fd/src/components/video-js/video-js.swf -------------------------------------------------------------------------------- /src/components/video-js/video.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 96 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import app from './app.vue' 3 | 4 | import './styles.css' 5 | 6 | Vue.config.debug = process.env.NODE_ENV !== 'production' 7 | 8 | const App = new Vue({ 9 | el: 'body', 10 | components: { 11 | app 12 | } 13 | }) 14 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | .browsehappy { 2 | margin: 0.2em 0; 3 | background: #ccc; 4 | color: #000; 5 | padding: 0.2em 0; 6 | } 7 | 8 | /* Space out content a bit */ 9 | body { 10 | padding-top: 20px; 11 | padding-bottom: 20px; 12 | } 13 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: { 3 | app: './src/main.js' 4 | }, 5 | output: { 6 | path: './build', 7 | publicPath: '/build/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [ 12 | { test: /\.vue$/, loader: 'vue' }, 13 | { test: /\.js$/, exclude: /node_modules/, loader: 'babel'}, 14 | { test: /\.(png|jpg)$/, loader: 'file' }, 15 | { test: /\.(png|jpg)$/, loader: 'url?limit=10000'}, 16 | { test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, 17 | { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream' }, 18 | { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file' }, 19 | { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml' }, 20 | { test: /\.css$/, loader: 'style-loader!css-loader' } 21 | ] 22 | }, 23 | devtool: '#source-map' 24 | } 25 | -------------------------------------------------------------------------------- /webpack.production.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack') 2 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 3 | 4 | module.exports = { 5 | entry: { 6 | app: './src/main.js' 7 | }, 8 | output: { 9 | path: './build', 10 | publicPath: '/build/', 11 | filename: 'bundle.js' 12 | }, 13 | module: { 14 | loaders: [ 15 | { test: /\.vue$/, loader: 'vue' }, 16 | { test: /\.js$/, exclude: /node_modules/, loader: 'babel'}, 17 | { test: /\.(png|jpg)$/, loader: 'file' }, 18 | { test: /\.(png|jpg)$/, loader: 'url?limit=10000'}, 19 | { test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff' }, 20 | { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream' }, 21 | { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file' }, 22 | { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml' }, 23 | { test: /\.css$/, loader: 'style-loader!css-loader' } 24 | ] 25 | }, 26 | plugins: [ 27 | new webpack.DefinePlugin({ 28 | 'process.env': { 29 | NODE_ENV: '"production"' 30 | } 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | } 36 | }), 37 | new ExtractTextPlugin('[name].min.css', { 38 | allChunks: true 39 | }) 40 | ], 41 | vue: { 42 | loaders: { 43 | css: ExtractTextPlugin.extract('css') 44 | } 45 | } 46 | } 47 | --------------------------------------------------------------------------------