├── typings └── index.d.ts ├── .npmignore ├── .jsbeautifyrc ├── .babelrc ├── typings.json ├── .travis.yml ├── test └── unit │ ├── specs │ ├── VueTouchKeyboard.spec.js │ └── index.spec.js │ ├── index.js │ ├── style.scss │ ├── karma.conf.js │ └── webpack.test.config.js ├── .gitignore ├── dev ├── main.js ├── index.html └── app.vue ├── src ├── index.js ├── icons │ └── backspace.svg ├── layouts.js └── keyboard.vue ├── .gitattributes ├── .eslintrc.js ├── LICENSE ├── webpack.dev.config.js ├── webpack.build.config.js ├── dist ├── vue-touch-keyboard.css └── vue-touch-keyboard.js ├── package.json ├── CHANGELOG.md └── README.md /typings/index.d.ts: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | docs 3 | bower.json 4 | -------------------------------------------------------------------------------- /.jsbeautifyrc: -------------------------------------------------------------------------------- 1 | { 2 | "html": { 3 | "indent_char": "\t", 4 | "indent_size": 1 5 | } 6 | } -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-0"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } -------------------------------------------------------------------------------- /typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDevDependencies": { 3 | "vue": "registry:dt/vue#1.0.21+20160929090511" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | cache: 3 | directories: 4 | - node_modules 5 | node_js: 6 | - "6" 7 | - "5" 8 | - "4" 9 | after_success: 10 | - npm run coverall 11 | -------------------------------------------------------------------------------- /test/unit/specs/VueTouchKeyboard.spec.js: -------------------------------------------------------------------------------- 1 | /* 2 | import { expect } from "chai"; 3 | 4 | import Vue from "vue"; 5 | import VueTouchKeyboard from "src/index"; 6 | 7 | Vue.use(VueTouchKeyboard); 8 | */ -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | coverage/ 4 | docs/_book/ 5 | npm-debug.log 6 | selenium-debug.log 7 | test/unit/coverage 8 | test/e2e/reports 9 | stats.json 10 | typings/ 11 | typings.json -------------------------------------------------------------------------------- /dev/main.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | 3 | (function() { 4 | 5 | let App = require("./App.vue"); 6 | 7 | let app = new Vue({ 8 | el: "app", 9 | components: { 10 | App 11 | } 12 | }); 13 | })(); -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | let component = require("./keyboard.vue"); 2 | 3 | module.exports = { 4 | component, 5 | layouts: require("./layouts"), 6 | 7 | install(Vue) { 8 | Vue.component("VueTouchKeyboard", component); 9 | } 10 | }; -------------------------------------------------------------------------------- /dev/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue-touch-keyboard development environment 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/icons/backspace.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/unit/specs/index.spec.js: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | 3 | import VueTouchKeyboard from "src/index"; 4 | 5 | describe("module", () => { 6 | 7 | it("module properties", () => { 8 | 9 | expect(VueTouchKeyboard).to.be.exist; 10 | expect(VueTouchKeyboard).to.have.property("component"); 11 | expect(VueTouchKeyboard).to.have.property("layouts"); 12 | expect(VueTouchKeyboard.install).to.be.a("function"); 13 | 14 | }); 15 | 16 | }); -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /test/unit/index.js: -------------------------------------------------------------------------------- 1 | // require all test files (files that ends with .spec.js) 2 | var testsContext = require.context("./specs", true, /\.spec$/); 3 | testsContext.keys().forEach(testsContext); 4 | 5 | 6 | // require all src files except main.js for coverage. 7 | // you can also change this to match only the subset of files that 8 | // you want coverage for. 9 | var srcContext = require.context("src", true, /\.(js|vue)$/); 10 | srcContext.keys().forEach(srcContext); 11 | 12 | require("./style.scss"); -------------------------------------------------------------------------------- /test/unit/style.scss: -------------------------------------------------------------------------------- 1 | html { 2 | background: #CCC; 3 | font-family: Arial, Tahoma; 4 | font-size: 14px; 5 | 6 | } 7 | 8 | * { 9 | box-sizing: border-box; 10 | } 11 | 12 | .test-unit { 13 | min-width: 22%; 14 | display: inline-block; 15 | vertical-align: top; 16 | margin: 10px; 17 | padding: 10px; 18 | 19 | border: 1px solid #888; 20 | border-radius: 8px; 21 | 22 | background: #EEE; 23 | 24 | h2 { 25 | margin: 0; 26 | border-bottom: 1px solid #888; 27 | margin-bottom: 10px; 28 | font-size: 14px; 29 | } 30 | 31 | fieldset { 32 | margin: 0; 33 | padding: 0; 34 | border: 0; 35 | } 36 | } -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | "env": { 4 | "browser": true, 5 | "commonjs": true, 6 | "es6": true, 7 | "jquery": false, 8 | mocha: true 9 | }, 10 | "extends": "eslint:recommended", 11 | "parserOptions": { 12 | "sourceType": "module" 13 | }, 14 | "plugins": [ 15 | "html" 16 | ], 17 | "rules": { 18 | "indent": [ 19 | "warn", 20 | "tab" 21 | ], 22 | "quotes": [ 23 | "warn", 24 | "double" 25 | ], 26 | "semi": [ 27 | "error", 28 | "always" 29 | ], 30 | "no-var": [ 31 | "error" 32 | ], 33 | "no-console": [ 34 | "off" 35 | ], 36 | "no-unused-vars": [ 37 | "warn" 38 | ] 39 | } 40 | }; -------------------------------------------------------------------------------- /test/unit/karma.conf.js: -------------------------------------------------------------------------------- 1 | var wsConfig = require("./webpack.test.config"); 2 | 3 | module.exports = function(config) { 4 | var settings = { 5 | // base path that will be used to resolve all patterns (eg. files, exclude) 6 | basePath: "", 7 | 8 | browsers: ["PhantomJS"], 9 | 10 | reporters: ["spec", "coverage"], 11 | 12 | frameworks: ["mocha", "chai", "sinon-chai"], 13 | 14 | files: [ 15 | "./index.js" 16 | ], 17 | 18 | exclude: [], 19 | 20 | preprocessors: { 21 | "./index.js": ["webpack", "sourcemap"] 22 | }, 23 | 24 | webpack: wsConfig, 25 | 26 | webpackMiddleware: { 27 | noInfo: true 28 | }, 29 | 30 | port: 9876, 31 | 32 | colors: true, 33 | 34 | logLevel: config.LOG_INFO, 35 | 36 | autoWatch: false, 37 | 38 | singleRun: true, 39 | 40 | coverageReporter: { 41 | dir: "./coverage", 42 | reporters: [ 43 | { type: "lcov", subdir: "." }, 44 | { type: "text-summary" } 45 | ] 46 | } 47 | } 48 | 49 | config.set(settings); 50 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Icebob 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /webpack.dev.config.js: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | var webpack = require("webpack"); 3 | 4 | var loaders = [ 5 | { 6 | "test": /\.js?$/, 7 | "exclude": /node_modules/, 8 | "loader": "babel" 9 | }, 10 | { 11 | "test": /\.css?$/, 12 | "loader": "style!css" 13 | }, 14 | { 15 | "test": /\.scss?$/, 16 | "loader": "style!css!sass" 17 | }, 18 | { 19 | "test": /\.jade?$/, 20 | "loader": "jade" 21 | }, 22 | { 23 | "test": /\.vue?$/, 24 | "loader": "vue" 25 | }, 26 | { 27 | test: /\.(woff2?|svg)$/, 28 | loader: "url" 29 | //loader: "url?limit=10000" 30 | }, 31 | { 32 | test: /\.(ttf|eot)$/, 33 | loader: "url" 34 | } 35 | ]; 36 | 37 | module.exports = { 38 | devtool: "eval-source-map", 39 | 40 | entry: { 41 | app: path.resolve("dev", "main.js") 42 | }, 43 | 44 | output: { 45 | path: path.resolve("dev"), 46 | filename: "[name].js", 47 | publicPath: "/" 48 | }, 49 | 50 | plugins: [ 51 | ], 52 | 53 | module: { 54 | loaders 55 | }, 56 | 57 | resolve: { 58 | packageAlias: "browser", 59 | alias: { 60 | "vue$": "vue/dist/vue.common.js" 61 | } 62 | }, 63 | 64 | vue: { 65 | autoprefixer: { 66 | browsers: ["last 2 versions"] 67 | } 68 | } 69 | }; 70 | -------------------------------------------------------------------------------- /test/unit/webpack.test.config.js: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | var webpack = require("webpack"); 3 | var sourceDir = path.resolve(__dirname, "../../src"); 4 | 5 | module.exports = { 6 | devtool: "eval-source-map", 7 | 8 | module: { 9 | preLoaders: [ 10 | { 11 | test: /\.js$/, 12 | loader: "isparta", 13 | include: sourceDir, 14 | exclude: /node_modules/ 15 | } 16 | ], 17 | 18 | loaders: [ 19 | { 20 | "test": /\.vue$/, 21 | "loader": "vue" 22 | }, 23 | { 24 | "test": /\.js$/, 25 | //"include": /test\/unit/, 26 | "exclude": /node_modules/, 27 | "loader": "babel" 28 | }, 29 | { 30 | "test": /\.css?$/, 31 | "loader": "style!css" 32 | }, 33 | { 34 | "test": /\.scss?$/, 35 | "loader": "style!css!sass" 36 | }, 37 | { 38 | "test": /\.jade?$/, 39 | "loader": "jade" 40 | }, 41 | { 42 | test: /\.(woff2?|svg)$/, 43 | loader: "url" 44 | //loader: "url?limit=10000" 45 | }, 46 | { 47 | test: /\.(ttf|eot)$/, 48 | loader: "url" 49 | } 50 | ], 51 | noParse: [ 52 | /node_modules\/sinon\//, 53 | ] 54 | }, 55 | 56 | resolve: { 57 | packageAlias: "browser", 58 | alias: { 59 | "src": sourceDir, 60 | "sinon": "sinon/pkg/sinon" 61 | } 62 | }, 63 | plugins: [ 64 | ], 65 | 66 | vue: { 67 | autoprefixer: { 68 | browsers: ["last 2 versions"] 69 | }, 70 | loaders: { 71 | js: "isparta" 72 | } 73 | } 74 | 75 | }; 76 | -------------------------------------------------------------------------------- /webpack.build.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require("webpack"); 2 | var version = require("./package.json").version; 3 | var banner = "/**\n" + " * vue-touch-keyboard v" + version + "\n" + " * https://github.com/icebob/vue-touch-keyboard\n" + " * Released under the MIT License.\n" + " */\n"; 4 | var ExtractTextPlugin = require("extract-text-webpack-plugin"); 5 | var StatsPlugin = require("stats-webpack-plugin"); 6 | 7 | var loaders = [ 8 | { 9 | "test": /\.js?$/, 10 | "exclude": /node_modules/, 11 | "loader": "babel" 12 | }, 13 | { 14 | "test": /\.vue$/, 15 | "loader": "vue" 16 | }, 17 | { 18 | test: /\.svg$/, 19 | loader: "url" 20 | } 21 | ]; 22 | 23 | module.exports = [ 24 | { 25 | entry: "./src/index", 26 | output: { 27 | path: "./dist", 28 | filename: "vue-touch-keyboard.js", 29 | library: "VueTouchKeyboard", 30 | libraryTarget: "umd" 31 | }, 32 | 33 | plugins: [ 34 | new webpack.DefinePlugin({ 35 | "process.env" : { 36 | NODE_ENV : JSON.stringify("production") 37 | } 38 | }), 39 | new webpack.optimize.UglifyJsPlugin({ 40 | compress: { 41 | warnings: false 42 | } 43 | }), 44 | new webpack.optimize.DedupePlugin(), 45 | new webpack.BannerPlugin(banner, { 46 | raw: true 47 | }), 48 | new ExtractTextPlugin("vue-touch-keyboard.css", { allChunks: true }), 49 | new StatsPlugin("../stats.json", { 50 | chunkModules: true 51 | //exclude: [/node_modules[\\\/]react/] 52 | }) 53 | ], 54 | 55 | module: { 56 | loaders 57 | }, 58 | 59 | vue: { 60 | loaders: { 61 | css: ExtractTextPlugin.extract("css"), 62 | postcss: ExtractTextPlugin.extract("css"), 63 | sass: ExtractTextPlugin.extract("css!sass"), 64 | } 65 | }, 66 | 67 | resolve: { 68 | packageAlias: "browser", 69 | alias: { 70 | "vue$": "vue/dist/vue.common.js" 71 | } 72 | } 73 | } 74 | 75 | ]; -------------------------------------------------------------------------------- /dist/vue-touch-keyboard.css: -------------------------------------------------------------------------------- 1 | /** 2 | * vue-touch-keyboard v0.2.0 3 | * https://github.com/icebob/vue-touch-keyboard 4 | * Released under the MIT License. 5 | */ 6 | 7 | .vue-touch-keyboard .keyboard{width:100%;margin:0}.vue-touch-keyboard .keyboard .line{display:flex;justify-content:space-around}.vue-touch-keyboard .keyboard .line:not(:last-child){margin-bottom:.5em}.vue-touch-keyboard .keyboard .key{flex:40;height:2.2em;line-height:2.2em;overflow:hidden;vertical-align:middle;border:1px solid #ccc;color:#333;background-color:#fff;box-shadow:0 2px 2px rgba(0,0,0,.6);border-radius:.35em;font-size:1.25em;text-align:center;white-space:nowrap;user-select:none;cursor:pointer}.vue-touch-keyboard .keyboard .key:not(:last-child){margin-right:.5em}@media screen and (max-width:650px){.vue-touch-keyboard .keyboard .key:not(:last-child){margin-right:.1em}.vue-touch-keyboard .keyboard .key{font-size:1em;font-weight:600}.vue-touch-keyboard .keyboard .key.control{font-size:1em}}.vue-touch-keyboard .keyboard .key.backspace{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgMGg0OHY0OGgtNDh6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQ0IDZoLTMwYy0xLjM4IDAtMi40Ny43LTMuMTkgMS43NmwtMTAuODEgMTYuMjMgMTAuODEgMTYuMjNjLjcyIDEuMDYgMS44MSAxLjc4IDMuMTkgMS43OGgzMGMyLjIxIDAgNC0xLjc5IDQtNHYtMjhjMC0yLjIxLTEuNzktNC00LTR6bS02IDI1LjE3bC0yLjgzIDIuODMtNy4xNy03LjE3LTcuMTcgNy4xNy0yLjgzLTIuODMgNy4xNy03LjE3LTcuMTctNy4xNyAyLjgzLTIuODMgNy4xNyA3LjE3IDcuMTctNy4xNyAyLjgzIDIuODMtNy4xNyA3LjE3IDcuMTcgNy4xN3oiIGZpbGw9IndoaXRlIi8+PC9zdmc+);background-position:50%;background-repeat:no-repeat;background-size:35%}.vue-touch-keyboard .keyboard .key.half{flex:20}.vue-touch-keyboard .keyboard .key.control{color:#fff;background-color:#7d7d7d;border-color:#656565}.vue-touch-keyboard .keyboard .key.featured{color:#fff;background-color:#337ab7;border-color:#2e6da4}.vue-touch-keyboard .keyboard .key:hover{color:#333;background-color:#d6d6d6;border-color:#adadad}.vue-touch-keyboard .keyboard .key:active{transform:scale(.98);color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.vue-touch-keyboard .keyboard .key.activated{color:#fff;background-color:#5bc0de;border-color:#46b8da}.vue-touch-keyboard .keyboard .placeholder{flex:20;height:2.2em;line-height:2.2em}.vue-touch-keyboard .keyboard .placeholder:not(:last-child){margin-right:.5em}.vue-touch-keyboard .keyboard:after,.vue-touch-keyboard .keyboard:before{content:"";display:table}.vue-touch-keyboard .keyboard:after{clear:both} 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-touch-keyboard", 3 | "version": "0.2.0", 4 | "description": "Virtual keyboard component for Vue.js", 5 | "homepage": "https://github.com/icebob/vue-touch-keyboard", 6 | "main": "dist/vue-touch-keyboard.js", 7 | "scripts": { 8 | "prebuild": "npm run test", 9 | "build": "webpack --progress --config webpack.build.config.js", 10 | "dev": "webpack-dev-server --config webpack.dev.config.js --inline --hot --content-base dev/", 11 | "lint": "eslint --ext=.js,.vue src test/unit/specs", 12 | "coverall": "cat ./test/unit/coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", 13 | "coverage": "npm run test && npm run coverall", 14 | "changelog": "conventional-changelog -i CHANGELOG.md -s", 15 | "docs": "cd docs && gitbook serve", 16 | "unit": "karma start test/unit/karma.conf.js", 17 | "e2e": "node test/e2e/runner.js", 18 | "pretest": "npm run lint", 19 | "test": "npm run unit", 20 | "ci": "karma start test/unit/karma.conf.js --auto-watch --no-single-run --reporters=dots --port=9877" 21 | }, 22 | "keywords": [ 23 | "vue", 24 | "vuejs", 25 | "form", 26 | "generator", 27 | "schema", 28 | "json" 29 | ], 30 | "repository": { 31 | "type": "git", 32 | "url": "https://github.com/icebob/vue-touch-keyboard.git" 33 | }, 34 | "files": [ 35 | "dist/vue-touch-keyboard.js", 36 | "dist/vue-touch-keyboard.css", 37 | "src" 38 | ], 39 | "author": "Icebob", 40 | "license": "MIT", 41 | "devDependencies": { 42 | "babel-core": "6.23.1", 43 | "babel-loader": "6.3.2", 44 | "babel-plugin-transform-runtime": "6.23.0", 45 | "babel-preset-es2015": "6.22.0", 46 | "babel-preset-stage-0": "6.22.0", 47 | "chai": "3.5.0", 48 | "conventional-changelog-cli": "1.2.0", 49 | "conventional-github-releaser": "1.1.3", 50 | "coveralls": "2.11.16", 51 | "css-loader": "0.26.2", 52 | "eslint": "3.16.1", 53 | "eslint-friendly-formatter": "2.0.7", 54 | "eslint-loader": "1.6.3", 55 | "eslint-plugin-html": "2.0.1", 56 | "eslint-plugin-vue": "2.0.1", 57 | "extract-text-webpack-plugin": "1.0.1", 58 | "file-loader": "0.10.1", 59 | "git-commit-message-convention": "git://github.com/kazupon/git-commit-message-convention.git#065dfffbe2de5f6f16150aac9d4db7fdf5515e56", 60 | "inject-loader": "2.0.1", 61 | "isparta-loader": "2.0.0", 62 | "jade": "1.11.0", 63 | "jade-loader": "0.8.0", 64 | "karma": "1.3.0", 65 | "karma-chai": "0.1.0", 66 | "karma-chrome-launcher": "1.0.1", 67 | "karma-coverage": "1.1.1", 68 | "karma-coveralls": "1.1.2", 69 | "karma-mocha": "1.2.0", 70 | "karma-phantomjs-launcher": "1.0.2", 71 | "karma-sinon-chai": "1.2.4", 72 | "karma-sourcemap-loader": "0.3.7", 73 | "karma-spec-reporter": "0.0.30", 74 | "karma-webpack": "1.8.0", 75 | "lodash": "4.17.4", 76 | "lolex": "1.6.0", 77 | "mocha": "2.5.3", 78 | "mocha-generators": "1.2.0", 79 | "mocha-loader": "0.7.1", 80 | "node-sass": "3.10.0", 81 | "phantomjs-prebuilt": "2.1.14", 82 | "sass-loader": "3.2.0", 83 | "sinon": "1.17.7", 84 | "sinon-chai": "2.8.0", 85 | "stats-webpack-plugin": "0.4.3", 86 | "style-loader": "0.13.2", 87 | "url-loader": "0.5.8", 88 | "vue": "2.2.1", 89 | "vue-hot-reload-api": "2.0.11", 90 | "vue-html-loader": "1.2.4", 91 | "vue-loader": "11.1.3", 92 | "vue-style-loader": "2.0.3", 93 | "vue-template-compiler": "2.2.1", 94 | "webpack": "1.13.2", 95 | "webpack-dev-middleware": "1.10.1", 96 | "webpack-dev-server": "1.16.1", 97 | "webpack-merge": "0.14.1" 98 | }, 99 | "dependencies": { 100 | "babel-runtime": "6.23.0" 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /dev/app.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 103 | 104 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 0.2.0 (2017-03-02) 3 | 4 | * migrate files to vue2 ([f512f34](https://github.com/icebob/vue-touch-keyboard/commit/f512f34)) 5 | * skip typings ([fecca11](https://github.com/icebob/vue-touch-keyboard/commit/fecca11)) 6 | * docs: fix npm link ([d4bb635](https://github.com/icebob/vue-touch-keyboard/commit/d4bb635)) 7 | 8 | 9 | 10 | 11 | # 0.1.0 (2016-10-28) 12 | 13 | * :package: build ([222e1d9](https://github.com/icebob/vue-touch-keyboard/commit/222e1d9)) 14 | * :package: build ([eea3480](https://github.com/icebob/vue-touch-keyboard/commit/eea3480)) 15 | * :package: build ([3daae1e](https://github.com/icebob/vue-touch-keyboard/commit/3daae1e)) 16 | * :package: build ([75eeca4](https://github.com/icebob/vue-touch-keyboard/commit/75eeca4)) 17 | * :package: build ([b76287e](https://github.com/icebob/vue-touch-keyboard/commit/b76287e)) 18 | * :package: build ([3fe74c3](https://github.com/icebob/vue-touch-keyboard/commit/3fe74c3)) 19 | * :package: build ([3b6f746](https://github.com/icebob/vue-touch-keyboard/commit/3b6f746)) 20 | * :package: build ([3e56711](https://github.com/icebob/vue-touch-keyboard/commit/3e56711)) 21 | * :package: build ([867731f](https://github.com/icebob/vue-touch-keyboard/commit/867731f)) 22 | * add accept event handler ([a5f305b](https://github.com/icebob/vue-touch-keyboard/commit/a5f305b)) 23 | * add asserts ([1d39a02](https://github.com/icebob/vue-touch-keyboard/commit/1d39a02)) 24 | * base library code ([0f6526a](https://github.com/icebob/vue-touch-keyboard/commit/0f6526a)) 25 | * create base code ([e2d2a5b](https://github.com/icebob/vue-touch-keyboard/commit/e2d2a5b)) 26 | * fix image markdown ([a33ddb9](https://github.com/icebob/vue-touch-keyboard/commit/a33ddb9)) 27 | * fix layout ([f2da48f](https://github.com/icebob/vue-touch-keyboard/commit/f2da48f)) 28 | * fix lint errors ([fe572c8](https://github.com/icebob/vue-touch-keyboard/commit/fe572c8)) 29 | * Initial commit ([1c8644d](https://github.com/icebob/vue-touch-keyboard/commit/1c8644d)) 30 | * linting ([9ec6aec](https://github.com/icebob/vue-touch-keyboard/commit/9ec6aec)) 31 | * modify layout & add backspace icon ([2a4c419](https://github.com/icebob/vue-touch-keyboard/commit/2a4c419)) 32 | * organize code ([d16d59d](https://github.com/icebob/vue-touch-keyboard/commit/d16d59d)) 33 | * removed fix width from style ([91513f1](https://github.com/icebob/vue-touch-keyboard/commit/91513f1)) 34 | * rename mini layout to compact ([609cffb](https://github.com/icebob/vue-touch-keyboard/commit/609cffb)) 35 | * rename props ([68532d9](https://github.com/icebob/vue-touch-keyboard/commit/68532d9)) 36 | * rename vars ([5953216](https://github.com/icebob/vue-touch-keyboard/commit/5953216)) 37 | * rewrite layouts ([fa21941](https://github.com/icebob/vue-touch-keyboard/commit/fa21941)) 38 | * scrolling to input ([5befa87](https://github.com/icebob/vue-touch-keyboard/commit/5befa87)) 39 | * simpler layout ([908ced0](https://github.com/icebob/vue-touch-keyboard/commit/908ced0)) 40 | * try to lock focus on input ([f20b5b5](https://github.com/icebob/vue-touch-keyboard/commit/f20b5b5)) 41 | * Update README.md ([a0c1280](https://github.com/icebob/vue-touch-keyboard/commit/a0c1280)) 42 | * Update README.md ([aab6503](https://github.com/icebob/vue-touch-keyboard/commit/aab6503)) 43 | * update screenshot ([af38439](https://github.com/icebob/vue-touch-keyboard/commit/af38439)) 44 | * docs: add readme ([9693159](https://github.com/icebob/vue-touch-keyboard/commit/9693159)) 45 | * docs: change screenshot ([4704ac5](https://github.com/icebob/vue-touch-keyboard/commit/4704ac5)) 46 | * docs: improve readme ([886123f](https://github.com/icebob/vue-touch-keyboard/commit/886123f)) 47 | * docs: update badges ([77cd0e9](https://github.com/icebob/vue-touch-keyboard/commit/77cd0e9)) 48 | * docs: update readme ([48719b9](https://github.com/icebob/vue-touch-keyboard/commit/48719b9)) 49 | * docs: update screenshot url ([5e0d6c4](https://github.com/icebob/vue-touch-keyboard/commit/5e0d6c4)) 50 | * fix: Handle maxlength prop ([133d51d](https://github.com/icebob/vue-touch-keyboard/commit/133d51d)) 51 | * new: add {next} function. ([cdd2106](https://github.com/icebob/vue-touch-keyboard/commit/cdd2106)) 52 | * layout: more similar to real keyboard layout ([964eaeb](https://github.com/icebob/vue-touch-keyboard/commit/964eaeb)) 53 | * dev: fix app ([50a4162](https://github.com/icebob/vue-touch-keyboard/commit/50a4162)) 54 | * dev: styling dev example ([0cc19f7](https://github.com/icebob/vue-touch-keyboard/commit/0cc19f7)) 55 | * dev: update code ([9e3b69e](https://github.com/icebob/vue-touch-keyboard/commit/9e3b69e)) 56 | * style: fix placeholder margin ([5f9cbb1](https://github.com/icebob/vue-touch-keyboard/commit/5f9cbb1)) 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/layouts.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | "normal": { 4 | 5 | _meta: { 6 | "tab": { key: "\t", text: "Tab", width: 60, classes: "control"}, 7 | "shiftl": { keySet: "shifted", text: "Shift", width: 100, classes: "control"}, 8 | "shiftr": { keySet: "shifted", text: "Shift", width: 100, classes: "control"}, 9 | "caps": { keySet: "capsed", text: "Caps lock", width: 80, classes: "control"}, 10 | "space": { key: " ", text: "Space", width: 180}, 11 | "enter": { key: "\r\n", text: "Enter", width: 80, classes: "control"}, 12 | "backspace": { func: "backspace", classes: "control backspace", width: 65}, 13 | "accept": { func: "accept", text: "Close", classes: "control featured"}, 14 | "next": { func: "next", text: "Next", classes: "control featured"} 15 | }, 16 | 17 | default: [ 18 | "` 1 2 3 4 5 6 7 8 9 0 - = {backspace}", 19 | "{tab} q w e r t y u i o p [ ] \\", 20 | "{caps} a s d f g h j k l ; ' {enter}", 21 | "{shiftl} z x c v b n m , . / {shiftr}", 22 | "{next} {space} {accept}" 23 | ], 24 | shifted: [ 25 | "~ ! @ # $ % ^ & * ( ) _ + {backspace}", 26 | "{tab} Q W E R T Y U I O P { } |", 27 | "{caps} A S D F G H J K L : \" {enter}", 28 | "{shiftl} Z X C V B N M < > ? {shiftr}", 29 | "{next} {space} {accept}" 30 | ], 31 | 32 | capsed: [ 33 | "` 1 2 3 4 5 6 7 8 9 0 - = {backspace}", 34 | "{tab} Q W E R T Y U I O P [ ] \\", 35 | "{caps} A S D F G H J K L ; ' {enter}", 36 | "{shiftl} Z X C V B N M , . / {shiftr}", 37 | "{next} {space} {accept}" 38 | ] 39 | }, 40 | per_normal : { 41 | _meta: { 42 | tab: { 43 | key: "\t" 44 | , text: "Tab" 45 | , width: 60 46 | , classes: "control" 47 | } 48 | , caps: { 49 | keySet: "capsed" 50 | , text: "Caps lock" 51 | , width: 80 52 | , classes: "control" 53 | } 54 | , space: { 55 | key: " " 56 | , text: "فاصله" 57 | , width: 180 58 | } 59 | , enter: { 60 | key: "\r\n" 61 | , text: "Enter" 62 | , width: 80 63 | , classes: "control" 64 | } 65 | , backspace: { 66 | func: "backspace" 67 | , classes: "control backspace" 68 | , width: 65 69 | } 70 | , accept: { 71 | func: "accept" 72 | , text: "بستن" 73 | , classes: "control featured" 74 | } 75 | , next: { 76 | func: "next" 77 | , text: "بعدی" 78 | , classes: "control featured" 79 | } 80 | , shiftl: { 81 | keySet: "shifted" 82 | , text: "تغییر" 83 | , width: 100 84 | , classes: "control" 85 | } 86 | }, 87 | "default": ["` 1 2 3 4 5 6 7 8 9 0 - = {backspace}", "{tab} ض ص ث ق ف غ ع ه خ ح ج چ", "{caps} ش س ی ب ل ا ت ن م ک گ {enter}", "{shiftl} ؟ ظ ط ز ر ذ د و ، . پ ئ / ", "{next} {space} {accept}"] , 88 | shifted : ["~ ! @ # $ % ^ & * ( ) _ + {backspace}", "{tab} ض ص ث ق ف غ ع ه خ ح ج چ", "{caps} ش س ی ب ل ا ت ن م ک گ {enter}", "{shiftl} ؟ ظ ط ز ر ذ د و { } [ ] / ", "{next} {space} {accept}"] 89 | }, 90 | "compact": { 91 | 92 | _meta: { 93 | "default": { keySet: "default", text: "abc", classes: "control"}, 94 | "alpha": { keySet: "default", text: "Abc", classes: "control"}, 95 | "shift": { keySet: "shifted", text: "ABC", classes: "control"}, 96 | "numbers": { keySet: "numbers", text: "123", classes: "control"}, 97 | "space": { key: " ", text: "Space", width: 200}, 98 | "backspace": { func: "backspace", classes: "control"}, 99 | "accept": { func: "accept", text: "Close", classes: "control featured"}, 100 | "next": { func: "next", text: "Next", classes: "featured"}, 101 | "zero": { key: "0", width: 130} 102 | }, 103 | 104 | default: [ 105 | "q w e r t y u i o p", 106 | " a s d f g h j k l ", 107 | "{shift} z x c v b n m {backspace}", 108 | "{numbers} , {space} . {next} {accept}" 109 | ], 110 | 111 | shifted: [ 112 | "Q W E R T Y U I O P", 113 | " A S D F G H J K L ", 114 | "{default} Z X C V B N M ", 115 | "{numbers} _ {space} {backspace} {next} {accept}" 116 | ], 117 | 118 | numbers: [ 119 | "1 2 3", 120 | "4 5 6", 121 | "7 8 9", 122 | " {alpha} . {zero} {backspace} {next} {accept}" 123 | ] 124 | }, 125 | 126 | "numeric": { 127 | 128 | _meta: { 129 | "backspace": { func: "backspace", classes: "control"}, 130 | "accept": { func: "accept", text: "Close", classes: "control featured"}, 131 | "next": { func: "next", text: "Next", classes: "control featured"}, 132 | "zero": { key: "0", width: 130} 133 | }, 134 | 135 | default: [ 136 | "1 2 3", 137 | "4 5 6", 138 | "7 8 9", 139 | "_ - . {zero} {backspace} {next} {accept}" 140 | ] 141 | } 142 | 143 | }; 144 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-touch-keyboard [![NPM version](https://img.shields.io/npm/v/vue-touch-keyboard.svg)](https://www.npmjs.com/package/vue-touch-keyboard) ![VueJS v2.x compatible](https://img.shields.io/badge/vue%202.x-compatible-green.svg) 2 | 3 | Virtual keyboard component for Vue.js v2.x. Designed to Raspberry Pi Touch Display 4 | 5 | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/5f3594b30dd4489094730fa2babd7ba5)](https://www.codacy.com/app/mereg-norbert/vue-touch-keyboard?utm_source=github.com&utm_medium=referral&utm_content=icebob/vue-touch-keyboard&utm_campaign=Badge_Grade) 6 | [![Build Status](https://travis-ci.org/icebob/vue-touch-keyboard.svg?branch=master)](https://travis-ci.org/icebob/vue-touch-keyboard) 7 | [![Coverage Status](https://coveralls.io/repos/github/icebob/vue-touch-keyboard/badge.svg?branch=master)](https://coveralls.io/github/icebob/vue-touch-keyboard?branch=master) 8 | [![NPMS.io score](https://badges.npms.io/vue-touch-keyboard.svg)]() 9 | 10 | [![Dependency Status](https://david-dm.org/icebob/vue-touch-keyboard.svg)](https://david-dm.org/icebob/vue-touch-keyboard) 11 | [![devDependency Status](https://david-dm.org/icebob/vue-touch-keyboard/dev-status.svg)](https://david-dm.org/icebob/vue-touch-keyboard#info=devDependencies) 12 | [![Downloads](https://img.shields.io/npm/dt/vue-touch-keyboard.svg)](https://www.npmjs.com/package/vue-touch-keyboard) 13 | 14 | ## Demo 15 | [JSFiddle demo](https://jsfiddle.net/icebob/88n7c1L8/) 16 | 17 | [![Screenshot](https://cloud.githubusercontent.com/assets/306521/19721016/d56005bc-9b70-11e6-8568-39dc207bc466.png)]() 18 | 19 | ## Features 20 | - 3 built-in layouts, but you can create custom layouts 21 | - **no external dependencies** 22 | - full responsive 23 | - customizable styles 24 | - ...etc 25 | 26 | ## Installation 27 | ### NPM 28 | You can install it via [NPM](http://npmjs.org/). 29 | ``` 30 | $ npm install vue-touch-keyboard 31 | ``` 32 | ### Manual 33 | Download zip package and unpack and add the `vue-touch-keyboard.css` and `vue-touch-keyboard.js` file to your project from dist folder. 34 | ``` 35 | https://github.com/icebob/vue-touch-keyboard/archive/master.zip 36 | ``` 37 | 38 | ## Usage 39 | ```html 40 | 46 | 47 | 83 | ``` 84 | 85 | ## Properties 86 | Property | Default | Accepted values | Description 87 | ------------- | -------- | --------------- | ----------- 88 | `input` | required | `HTMLInputElement` | The target input HTML element 89 | `layout` | required | `String` or `Object` | Layout of keys. If you are using the built-in layouts, you can set as the name of the layout. If you want to use custom layout, you need to set a layout `Object`. 90 | `accept` | `null` | `Function` | Event handler. Fired when the "Accept/Close" button pressed. 91 | `cancel` | `null` | `Function` | Event handler. Fired when the "Cancel" button pressed. 92 | `change` | `null` | `Function` | Event handler. Fired when the input value changed. 93 | `next` | `null` | `Function` | Event handler. Fired when the "Next" button pressed or the length of the value of the input reached the `maxLength` of the `input` 94 | `options` | `{}` | `Object` | Functional options. 95 | 96 | ## Options 97 | Option | Default | Accepted values | Description 98 | ----------- | -------- | --------------- | ----------- 99 | `useKbEvents` | `false` | `boolean` | If true, the component will generate a `keypress` event and trigger it. If it returns with `false`, it won't insert the new character. 100 | 101 | ## Built-in layouts 102 | * `normal` - Normal full layout. Similar as real keyboard layouts 103 | * `numeric` - Only for numbers 104 | * `compact` - Compact layout. Similar as mobile phone keyboard layouts 105 | 106 | ## Supported languages 107 | Two languages are currently supported. More might be added soon. 108 | 109 | Here you can see list of languages and their supported layouts. 110 | 111 | Language | Language code | Normal | Numeric | Compact 112 | ----------- |---------| -------- | ---------------| ----------- 113 | English | - |✓ | ✓ | ✓ 114 | Persian |per | ✓ | × | × 115 | 116 | How to use? You shoud change `data-layout` , this is the syntax: 117 | `Language code` + `_` + `Name of layout` 118 | 119 | For English `Language code` is not needed just write the `Name of layout` . 120 | 121 | ##### Example 122 | ``` 123 | //to use English 124 | 125 | 126 | // to use Persian 127 | 128 | 129 | ``` 130 | 131 | ## Development 132 | This command will start a `webpack-dev-server` with content of `dev` folder. 133 | ```bash 134 | npm run dev 135 | ``` 136 | 137 | ## Build 138 | This command will build a distributable version in the `dist` directory. 139 | ```bash 140 | npm run build 141 | ``` 142 | 143 | ## Test 144 | ```bash 145 | npm test 146 | ``` 147 | 148 | ## Contribution 149 | Please send pull requests improving the usage and fixing bugs, improving documentation and providing better examples, or providing some testing, because these things are important. 150 | 151 | ## License 152 | vue-touch-keyboard is available under the [MIT license](https://tldrlegal.com/license/mit-license). 153 | 154 | ## Contact 155 | 156 | Copyright (C) 2017 Icebob 157 | 158 | [![@icebob](https://img.shields.io/badge/github-icebob-green.svg)](https://github.com/icebob) [![@icebob](https://img.shields.io/badge/twitter-Icebobcsi-blue.svg)](https://twitter.com/Icebobcsi) 159 | -------------------------------------------------------------------------------- /src/keyboard.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 280 | 281 | -------------------------------------------------------------------------------- /dist/vue-touch-keyboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | * vue-touch-keyboard v0.2.0 3 | * https://github.com/icebob/vue-touch-keyboard 4 | * Released under the MIT License. 5 | */ 6 | 7 | ! function(t, e) { 8 | "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.VueTouchKeyboard = e() : t.VueTouchKeyboard = e() 9 | }(this, function() { 10 | return function(t) { 11 | function e(r) { 12 | if (n[r]) return n[r].exports; 13 | var o = n[r] = { 14 | exports: {}, 15 | id: r, 16 | loaded: !1 17 | }; 18 | return t[r].call(o.exports, o, o.exports, e), o.loaded = !0, o.exports 19 | } 20 | var n = {}; 21 | return e.m = t, e.c = n, e.p = "", e(0) 22 | }([function(t, e, n) { 23 | "use strict"; 24 | var r = n(1); 25 | t.exports = { 26 | component: r, 27 | layouts: n(73), 28 | install: function(t) { 29 | t.component("VueTouchKeyboard", r) 30 | } 31 | } 32 | }, function(t, e, n) { 33 | n(2); 34 | var r = n(3)(n(4), n(84), null, null); 35 | t.exports = r.exports 36 | }, function(t, e) {}, function(t, e) { 37 | t.exports = function(t, e, n, r) { 38 | var o, i = t = t || {}, 39 | c = typeof t["default"]; 40 | "object" !== c && "function" !== c || (o = t, i = t["default"]); 41 | var u = "function" == typeof i ? i.options : i; 42 | if (e && (u.render = e.render, u.staticRenderFns = e.staticRenderFns), n && (u._scopeId = n), r) { 43 | var s = Object.create(u.computed || null); 44 | Object.keys(r).forEach(function(t) { 45 | var e = r[t]; 46 | s[t] = function() { 47 | return e 48 | } 49 | }), u.computed = s 50 | } 51 | return { 52 | esModule: o, 53 | exports: i, 54 | options: u 55 | } 56 | } 57 | }, function(t, e, n) { 58 | "use strict"; 59 | 60 | function r(t) { 61 | return t && t.__esModule ? t : { 62 | "default": t 63 | } 64 | } 65 | Object.defineProperty(e, "__esModule", { 66 | value: !0 67 | }); 68 | var o = n(5), 69 | i = r(o), 70 | c = n(73), 71 | u = r(c), 72 | s = n(74), 73 | f = r(s), 74 | a = n(83), 75 | l = r(a); 76 | e["default"] = { 77 | props: { 78 | input: HTMLInputElement, 79 | layout: [String, Object], 80 | accept: Function, 81 | cancel: Function, 82 | change: Function, 83 | next: Function, 84 | options: { 85 | type: Object, 86 | "default": function() { 87 | return {} 88 | } 89 | } 90 | }, 91 | data: function() { 92 | return { 93 | currentKeySet: "default", 94 | inputScrollLeft: 0 95 | } 96 | }, 97 | computed: { 98 | keySet: function p() { 99 | var t = this.getLayout(); 100 | if (t) { 101 | var p = t[this.currentKeySet]; 102 | if (p) { 103 | var e = [], 104 | n = t._meta || {}; 105 | return p.forEach(function(t) { 106 | var r = []; 107 | t.split(" ").forEach(function(t) { 108 | if ((0, l["default"])(t)) r.push(t); 109 | else if ((0, f["default"])(t)) 110 | if (t.length > 2 && "{" == t[0] && "}" == t[t.length - 1]) { 111 | var e = t.substring(1, t.length - 1); 112 | n[e] ? r.push(n[e]) : console.warn("Missing named key from meta: " + e) 113 | } else "" == t ? r.push({ 114 | placeholder: !0 115 | }) : r.push({ 116 | key: t, 117 | text: t 118 | }) 119 | }), e.push(r) 120 | }), e 121 | } 122 | } 123 | } 124 | }, 125 | watch: { 126 | layout: function() { 127 | console.log("Layout changed"), this.currentKeySet = "default" 128 | } 129 | }, 130 | methods: { 131 | getLayout: function() { 132 | return (0, f["default"])(this.layout) ? u["default"][this.layout] : this.layout 133 | }, 134 | changeKeySet: function(t) { 135 | var e = this.getLayout(); 136 | null != e[t] && (this.currentKeySet = t) 137 | }, 138 | toggleKeySet: function(t) { 139 | this.currentKeySet = this.currentKeySet == t ? "default" : t 140 | }, 141 | getCaptionOfKey: function(t) { 142 | return t.text || t.key || "" 143 | }, 144 | getClassesOfKey: function(t) { 145 | if (t.placeholder) return "placeholder"; 146 | var e = "key " + (t.func || "") + " " + (t.classes || ""); 147 | return t.keySet && this.currentKeySet == t.keySet && (e += " activated"), e 148 | }, 149 | getKeyStyle: function(t) { 150 | if (t.width) return { 151 | flex: t.width 152 | } 153 | }, 154 | supportsSelection: function() { 155 | return /text|password|search|tel|url/.test(this.input.type) 156 | }, 157 | getCaret: function() { 158 | if (this.supportsSelection()) { 159 | var t = { 160 | start: this.input.selectionStart || 0, 161 | end: this.input.selectionEnd || 0 162 | }; 163 | return t.end < t.start && (t.end = t.start), t 164 | } 165 | var e = this.input.value; 166 | return { 167 | start: e.length, 168 | end: e.length 169 | } 170 | }, 171 | backspace: function(t, e) { 172 | return e = e.substring(0, t.start - 1) + e.substring(t.start), t.start -= 1, t.end = t.start, e 173 | }, 174 | insertChar: function(t, e, n) { 175 | return e = e.substr(0, t.start) + n.toString() + e.substr(t.start), t.start += n.length, t.end = t.start, e 176 | }, 177 | mousedown: function() { 178 | this.input && (this.inputScrollLeft = this.input.scrollLeft) 179 | }, 180 | clickKey: function(t) { 181 | if (this.input) { 182 | var e = this.getCaret(), 183 | n = this.input.value, 184 | r = null; 185 | if ("object" == ("undefined" == typeof t ? "undefined" : (0, i["default"])(t))) 186 | if (t.keySet) this.toggleKeySet(t.keySet); 187 | else if (t.func) switch (t.func) { 188 | case "backspace": 189 | n = this.backspace(e, n); 190 | break; 191 | case "accept": 192 | return void(this.accept && this.accept(n)); 193 | case "cancel": 194 | return void(this.cancel && this.cancel()); 195 | case "next": 196 | return void(this.next && this.next()) 197 | } else r = t.key; 198 | else r = t; 199 | if (r) { 200 | if (this.input.maxLength <= 0 || n.length < this.input.maxLength) 201 | if (this.options.useKbEvents) { 202 | var o = document.createEvent("Event"); 203 | o.initEvent("keypress", !0, !0), o.which = o.keyCode = r.charCodeAt(), this.input.dispatchEvent(o) && (n = this.insertChar(e, n, r)) 204 | } else n = this.insertChar(e, n, r); 205 | "shifted" == this.currentKeySet && this.changeKeySet("default") 206 | } 207 | this.input.value = n, this.setFocusToInput(e), this.change && this.change(n, r), this.input.maxLength > 0 && n.length >= this.input.maxLength && this.next && this.next() 208 | } 209 | }, 210 | setFocusToInput: function(t) { 211 | this.input.focus(), t && this.supportsSelection() && (this.input.selectionStart = t.start, this.input.selectionEnd = t.end) 212 | } 213 | }, 214 | mounted: function() { 215 | this.input && this.setFocusToInput() 216 | } 217 | } 218 | }, function(t, e, n) { 219 | "use strict"; 220 | 221 | function r(t) { 222 | return t && t.__esModule ? t : { 223 | "default": t 224 | } 225 | } 226 | e.__esModule = !0; 227 | var o = n(6), 228 | i = r(o), 229 | c = n(57), 230 | u = r(c), 231 | s = "function" == typeof u["default"] && "symbol" == typeof i["default"] ? function(t) { 232 | return typeof t 233 | } : function(t) { 234 | return t && "function" == typeof u["default"] && t.constructor === u["default"] && t !== u["default"].prototype ? "symbol" : typeof t 235 | }; 236 | e["default"] = "function" == typeof u["default"] && "symbol" === s(i["default"]) ? function(t) { 237 | return "undefined" == typeof t ? "undefined" : s(t) 238 | } : function(t) { 239 | return t && "function" == typeof u["default"] && t.constructor === u["default"] && t !== u["default"].prototype ? "symbol" : "undefined" == typeof t ? "undefined" : s(t) 240 | } 241 | }, function(t, e, n) { 242 | t.exports = { 243 | "default": n(7), 244 | __esModule: !0 245 | } 246 | }, function(t, e, n) { 247 | n(8), n(52), t.exports = n(56).f("iterator") 248 | }, function(t, e, n) { 249 | "use strict"; 250 | var r = n(9)(!0); 251 | n(12)(String, "String", function(t) { 252 | this._t = String(t), this._i = 0 253 | }, function() { 254 | var t, e = this._t, 255 | n = this._i; 256 | return n >= e.length ? { 257 | value: void 0, 258 | done: !0 259 | } : (t = r(e, n), this._i += t.length, { 260 | value: t, 261 | done: !1 262 | }) 263 | }) 264 | }, function(t, e, n) { 265 | var r = n(10), 266 | o = n(11); 267 | t.exports = function(t) { 268 | return function(e, n) { 269 | var i, c, u = String(o(e)), 270 | s = r(n), 271 | f = u.length; 272 | return s < 0 || s >= f ? t ? "" : void 0 : (i = u.charCodeAt(s), i < 55296 || i > 56319 || s + 1 === f || (c = u.charCodeAt(s + 1)) < 56320 || c > 57343 ? t ? u.charAt(s) : i : t ? u.slice(s, s + 2) : (i - 55296 << 10) + (c - 56320) + 65536) 273 | } 274 | } 275 | }, function(t, e) { 276 | var n = Math.ceil, 277 | r = Math.floor; 278 | t.exports = function(t) { 279 | return isNaN(t = +t) ? 0 : (t > 0 ? r : n)(t) 280 | } 281 | }, function(t, e) { 282 | t.exports = function(t) { 283 | if (void 0 == t) throw TypeError("Can't call method on " + t); 284 | return t 285 | } 286 | }, function(t, e, n) { 287 | "use strict"; 288 | var r = n(13), 289 | o = n(14), 290 | i = n(29), 291 | c = n(19), 292 | u = n(30), 293 | s = n(31), 294 | f = n(32), 295 | a = n(48), 296 | l = n(50), 297 | p = n(49)("iterator"), 298 | h = !([].keys && "next" in [].keys()), 299 | y = "@@iterator", 300 | d = "keys", 301 | v = "values", 302 | b = function() { 303 | return this 304 | }; 305 | t.exports = function(t, e, n, x, g, m, S) { 306 | f(n, e, x); 307 | var O, k, w, j = function(t) { 308 | if (!h && t in C) return C[t]; 309 | switch (t) { 310 | case d: 311 | return function() { 312 | return new n(this, t) 313 | }; 314 | case v: 315 | return function() { 316 | return new n(this, t) 317 | } 318 | } 319 | return function() { 320 | return new n(this, t) 321 | } 322 | }, 323 | _ = e + " Iterator", 324 | E = g == v, 325 | P = !1, 326 | C = t.prototype, 327 | K = C[p] || C[y] || g && C[g], 328 | F = K || j(g), 329 | T = g ? E ? j("entries") : F : void 0, 330 | M = "Array" == e ? C.entries || K : K; 331 | if (M && (w = l(M.call(new t)), w !== Object.prototype && (a(w, _, !0), r || u(w, p) || c(w, p, b))), E && K && K.name !== v && (P = !0, F = function() { 332 | return K.call(this) 333 | }), r && !S || !h && !P && C[p] || c(C, p, F), s[e] = F, s[_] = b, g) 334 | if (O = { 335 | values: E ? F : j(v), 336 | keys: m ? F : j(d), 337 | entries: T 338 | }, S) 339 | for (k in O) k in C || i(C, k, O[k]); 340 | else o(o.P + o.F * (h || P), e, O); 341 | return O 342 | } 343 | }, function(t, e) { 344 | t.exports = !0 345 | }, function(t, e, n) { 346 | var r = n(15), 347 | o = n(16), 348 | i = n(17), 349 | c = n(19), 350 | u = "prototype", 351 | s = function(t, e, n) { 352 | var f, a, l, p = t & s.F, 353 | h = t & s.G, 354 | y = t & s.S, 355 | d = t & s.P, 356 | v = t & s.B, 357 | b = t & s.W, 358 | x = h ? o : o[e] || (o[e] = {}), 359 | g = x[u], 360 | m = h ? r : y ? r[e] : (r[e] || {})[u]; 361 | h && (n = e); 362 | for (f in n) a = !p && m && void 0 !== m[f], a && f in x || (l = a ? m[f] : n[f], x[f] = h && "function" != typeof m[f] ? n[f] : v && a ? i(l, r) : b && m[f] == l ? function(t) { 363 | var e = function(e, n, r) { 364 | if (this instanceof t) { 365 | switch (arguments.length) { 366 | case 0: 367 | return new t; 368 | case 1: 369 | return new t(e); 370 | case 2: 371 | return new t(e, n) 372 | } 373 | return new t(e, n, r) 374 | } 375 | return t.apply(this, arguments) 376 | }; 377 | return e[u] = t[u], e 378 | }(l) : d && "function" == typeof l ? i(Function.call, l) : l, d && ((x.virtual || (x.virtual = {}))[f] = l, t & s.R && g && !g[f] && c(g, f, l))) 379 | }; 380 | s.F = 1, s.G = 2, s.S = 4, s.P = 8, s.B = 16, s.W = 32, s.U = 64, s.R = 128, t.exports = s 381 | }, function(t, e) { 382 | var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); 383 | "number" == typeof __g && (__g = n) 384 | }, function(t, e) { 385 | var n = t.exports = { 386 | version: "2.4.0" 387 | }; 388 | "number" == typeof __e && (__e = n) 389 | }, function(t, e, n) { 390 | var r = n(18); 391 | t.exports = function(t, e, n) { 392 | if (r(t), void 0 === e) return t; 393 | switch (n) { 394 | case 1: 395 | return function(n) { 396 | return t.call(e, n) 397 | }; 398 | case 2: 399 | return function(n, r) { 400 | return t.call(e, n, r) 401 | }; 402 | case 3: 403 | return function(n, r, o) { 404 | return t.call(e, n, r, o) 405 | } 406 | } 407 | return function() { 408 | return t.apply(e, arguments) 409 | } 410 | } 411 | }, function(t, e) { 412 | t.exports = function(t) { 413 | if ("function" != typeof t) throw TypeError(t + " is not a function!"); 414 | return t 415 | } 416 | }, function(t, e, n) { 417 | var r = n(20), 418 | o = n(28); 419 | t.exports = n(24) ? function(t, e, n) { 420 | return r.f(t, e, o(1, n)) 421 | } : function(t, e, n) { 422 | return t[e] = n, t 423 | } 424 | }, function(t, e, n) { 425 | var r = n(21), 426 | o = n(23), 427 | i = n(27), 428 | c = Object.defineProperty; 429 | e.f = n(24) ? Object.defineProperty : function(t, e, n) { 430 | if (r(t), e = i(e, !0), r(n), o) try { 431 | return c(t, e, n) 432 | } catch (u) {} 433 | if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); 434 | return "value" in n && (t[e] = n.value), t 435 | } 436 | }, function(t, e, n) { 437 | var r = n(22); 438 | t.exports = function(t) { 439 | if (!r(t)) throw TypeError(t + " is not an object!"); 440 | return t 441 | } 442 | }, function(t, e) { 443 | t.exports = function(t) { 444 | return "object" == typeof t ? null !== t : "function" == typeof t 445 | } 446 | }, function(t, e, n) { 447 | t.exports = !n(24) && !n(25)(function() { 448 | return 7 != Object.defineProperty(n(26)("div"), "a", { 449 | get: function() { 450 | return 7 451 | } 452 | }).a 453 | }) 454 | }, function(t, e, n) { 455 | t.exports = !n(25)(function() { 456 | return 7 != Object.defineProperty({}, "a", { 457 | get: function() { 458 | return 7 459 | } 460 | }).a 461 | }) 462 | }, function(t, e) { 463 | t.exports = function(t) { 464 | try { 465 | return !!t() 466 | } catch (e) { 467 | return !0 468 | } 469 | } 470 | }, function(t, e, n) { 471 | var r = n(22), 472 | o = n(15).document, 473 | i = r(o) && r(o.createElement); 474 | t.exports = function(t) { 475 | return i ? o.createElement(t) : {} 476 | } 477 | }, function(t, e, n) { 478 | var r = n(22); 479 | t.exports = function(t, e) { 480 | if (!r(t)) return t; 481 | var n, o; 482 | if (e && "function" == typeof(n = t.toString) && !r(o = n.call(t))) return o; 483 | if ("function" == typeof(n = t.valueOf) && !r(o = n.call(t))) return o; 484 | if (!e && "function" == typeof(n = t.toString) && !r(o = n.call(t))) return o; 485 | throw TypeError("Can't convert object to primitive value") 486 | } 487 | }, function(t, e) { 488 | t.exports = function(t, e) { 489 | return { 490 | enumerable: !(1 & t), 491 | configurable: !(2 & t), 492 | writable: !(4 & t), 493 | value: e 494 | } 495 | } 496 | }, function(t, e, n) { 497 | t.exports = n(19) 498 | }, function(t, e) { 499 | var n = {}.hasOwnProperty; 500 | t.exports = function(t, e) { 501 | return n.call(t, e) 502 | } 503 | }, function(t, e) { 504 | t.exports = {} 505 | }, function(t, e, n) { 506 | "use strict"; 507 | var r = n(33), 508 | o = n(28), 509 | i = n(48), 510 | c = {}; 511 | n(19)(c, n(49)("iterator"), function() { 512 | return this 513 | }), t.exports = function(t, e, n) { 514 | t.prototype = r(c, { 515 | next: o(1, n) 516 | }), i(t, e + " Iterator") 517 | } 518 | }, function(t, e, n) { 519 | var r = n(21), 520 | o = n(34), 521 | i = n(46), 522 | c = n(43)("IE_PROTO"), 523 | u = function() {}, 524 | s = "prototype", 525 | f = function() { 526 | var t, e = n(26)("iframe"), 527 | r = i.length, 528 | o = "<", 529 | c = ">"; 530 | for (e.style.display = "none", n(47).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write(o + "script" + c + "document.F=Object" + o + "/script" + c), t.close(), f = t.F; r--;) delete f[s][i[r]]; 531 | return f() 532 | }; 533 | t.exports = Object.create || function(t, e) { 534 | var n; 535 | return null !== t ? (u[s] = r(t), n = new u, u[s] = null, n[c] = t) : n = f(), void 0 === e ? n : o(n, e) 536 | } 537 | }, function(t, e, n) { 538 | var r = n(20), 539 | o = n(21), 540 | i = n(35); 541 | t.exports = n(24) ? Object.defineProperties : function(t, e) { 542 | o(t); 543 | for (var n, c = i(e), u = c.length, s = 0; u > s;) r.f(t, n = c[s++], e[n]); 544 | return t 545 | } 546 | }, function(t, e, n) { 547 | var r = n(36), 548 | o = n(46); 549 | t.exports = Object.keys || function(t) { 550 | return r(t, o) 551 | } 552 | }, function(t, e, n) { 553 | var r = n(30), 554 | o = n(37), 555 | i = n(40)(!1), 556 | c = n(43)("IE_PROTO"); 557 | t.exports = function(t, e) { 558 | var n, u = o(t), 559 | s = 0, 560 | f = []; 561 | for (n in u) n != c && r(u, n) && f.push(n); 562 | for (; e.length > s;) r(u, n = e[s++]) && (~i(f, n) || f.push(n)); 563 | return f 564 | } 565 | }, function(t, e, n) { 566 | var r = n(38), 567 | o = n(11); 568 | t.exports = function(t) { 569 | return r(o(t)) 570 | } 571 | }, function(t, e, n) { 572 | var r = n(39); 573 | t.exports = Object("z").propertyIsEnumerable(0) ? Object : function(t) { 574 | return "String" == r(t) ? t.split("") : Object(t) 575 | } 576 | }, function(t, e) { 577 | var n = {}.toString; 578 | t.exports = function(t) { 579 | return n.call(t).slice(8, -1) 580 | } 581 | }, function(t, e, n) { 582 | var r = n(37), 583 | o = n(41), 584 | i = n(42); 585 | t.exports = function(t) { 586 | return function(e, n, c) { 587 | var u, s = r(e), 588 | f = o(s.length), 589 | a = i(c, f); 590 | if (t && n != n) { 591 | for (; f > a;) 592 | if (u = s[a++], u != u) return !0 593 | } else 594 | for (; f > a; a++) 595 | if ((t || a in s) && s[a] === n) return t || a || 0; return !t && -1 596 | } 597 | } 598 | }, function(t, e, n) { 599 | var r = n(10), 600 | o = Math.min; 601 | t.exports = function(t) { 602 | return t > 0 ? o(r(t), 9007199254740991) : 0 603 | } 604 | }, function(t, e, n) { 605 | var r = n(10), 606 | o = Math.max, 607 | i = Math.min; 608 | t.exports = function(t, e) { 609 | return t = r(t), t < 0 ? o(t + e, 0) : i(t, e) 610 | } 611 | }, function(t, e, n) { 612 | var r = n(44)("keys"), 613 | o = n(45); 614 | t.exports = function(t) { 615 | return r[t] || (r[t] = o(t)) 616 | } 617 | }, function(t, e, n) { 618 | var r = n(15), 619 | o = "__core-js_shared__", 620 | i = r[o] || (r[o] = {}); 621 | t.exports = function(t) { 622 | return i[t] || (i[t] = {}) 623 | } 624 | }, function(t, e) { 625 | var n = 0, 626 | r = Math.random(); 627 | t.exports = function(t) { 628 | return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++n + r).toString(36)) 629 | } 630 | }, function(t, e) { 631 | t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") 632 | }, function(t, e, n) { 633 | t.exports = n(15).document && document.documentElement 634 | }, function(t, e, n) { 635 | var r = n(20).f, 636 | o = n(30), 637 | i = n(49)("toStringTag"); 638 | t.exports = function(t, e, n) { 639 | t && !o(t = n ? t : t.prototype, i) && r(t, i, { 640 | configurable: !0, 641 | value: e 642 | }) 643 | } 644 | }, function(t, e, n) { 645 | var r = n(44)("wks"), 646 | o = n(45), 647 | i = n(15).Symbol, 648 | c = "function" == typeof i, 649 | u = t.exports = function(t) { 650 | return r[t] || (r[t] = c && i[t] || (c ? i : o)("Symbol." + t)) 651 | }; 652 | u.store = r 653 | }, function(t, e, n) { 654 | var r = n(30), 655 | o = n(51), 656 | i = n(43)("IE_PROTO"), 657 | c = Object.prototype; 658 | t.exports = Object.getPrototypeOf || function(t) { 659 | return t = o(t), r(t, i) ? t[i] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? c : null 660 | } 661 | }, function(t, e, n) { 662 | var r = n(11); 663 | t.exports = function(t) { 664 | return Object(r(t)) 665 | } 666 | }, function(t, e, n) { 667 | n(53); 668 | for (var r = n(15), o = n(19), i = n(31), c = n(49)("toStringTag"), u = ["NodeList", "DOMTokenList", "MediaList", "StyleSheetList", "CSSRuleList"], s = 0; s < 5; s++) { 669 | var f = u[s], 670 | a = r[f], 671 | l = a && a.prototype; 672 | l && !l[c] && o(l, c, f), i[f] = i.Array 673 | } 674 | }, function(t, e, n) { 675 | "use strict"; 676 | var r = n(54), 677 | o = n(55), 678 | i = n(31), 679 | c = n(37); 680 | t.exports = n(12)(Array, "Array", function(t, e) { 681 | this._t = c(t), this._i = 0, this._k = e 682 | }, function() { 683 | var t = this._t, 684 | e = this._k, 685 | n = this._i++; 686 | return !t || n >= t.length ? (this._t = void 0, o(1)) : "keys" == e ? o(0, n) : "values" == e ? o(0, t[n]) : o(0, [n, t[n]]) 687 | }, "values"), i.Arguments = i.Array, r("keys"), r("values"), r("entries") 688 | }, function(t, e) { 689 | t.exports = function() {} 690 | }, function(t, e) { 691 | t.exports = function(t, e) { 692 | return { 693 | value: e, 694 | done: !!t 695 | } 696 | } 697 | }, function(t, e, n) { 698 | e.f = n(49) 699 | }, function(t, e, n) { 700 | t.exports = { 701 | "default": n(58), 702 | __esModule: !0 703 | } 704 | }, function(t, e, n) { 705 | n(59), n(70), n(71), n(72), t.exports = n(16).Symbol 706 | }, function(t, e, n) { 707 | "use strict"; 708 | var r = n(15), 709 | o = n(30), 710 | i = n(24), 711 | c = n(14), 712 | u = n(29), 713 | s = n(60).KEY, 714 | f = n(25), 715 | a = n(44), 716 | l = n(48), 717 | p = n(45), 718 | h = n(49), 719 | y = n(56), 720 | d = n(61), 721 | v = n(62), 722 | b = n(63), 723 | x = n(66), 724 | g = n(21), 725 | m = n(37), 726 | S = n(27), 727 | O = n(28), 728 | k = n(33), 729 | w = n(67), 730 | j = n(69), 731 | _ = n(20), 732 | E = n(35), 733 | P = j.f, 734 | C = _.f, 735 | K = w.f, 736 | F = r.Symbol, 737 | T = r.JSON, 738 | M = T && T.stringify, 739 | A = "prototype", 740 | L = h("_hidden"), 741 | I = h("toPrimitive"), 742 | N = {}.propertyIsEnumerable, 743 | R = a("symbol-registry"), 744 | W = a("symbols"), 745 | z = a("op-symbols"), 746 | D = Object[A], 747 | J = "function" == typeof F, 748 | B = r.QObject, 749 | G = !B || !B[A] || !B[A].findChild, 750 | V = i && f(function() { 751 | return 7 != k(C({}, "a", { 752 | get: function() { 753 | return C(this, "a", { 754 | value: 7 755 | }).a 756 | } 757 | })).a 758 | }) ? function(t, e, n) { 759 | var r = P(D, e); 760 | r && delete D[e], C(t, e, n), r && t !== D && C(D, e, r) 761 | } : C, 762 | U = function(t) { 763 | var e = W[t] = k(F[A]); 764 | return e._k = t, e 765 | }, 766 | Y = J && "symbol" == typeof F.iterator ? function(t) { 767 | return "symbol" == typeof t 768 | } : function(t) { 769 | return t instanceof F 770 | }, 771 | H = function(t, e, n) { 772 | return t === D && H(z, e, n), g(t), e = S(e, !0), g(n), o(W, e) ? (n.enumerable ? (o(t, L) && t[L][e] && (t[L][e] = !1), n = k(n, { 773 | enumerable: O(0, !1) 774 | })) : (o(t, L) || C(t, L, O(1, {})), t[L][e] = !0), V(t, e, n)) : C(t, e, n) 775 | }, 776 | Q = function(t, e) { 777 | g(t); 778 | for (var n, r = b(e = m(e)), o = 0, i = r.length; i > o;) H(t, n = r[o++], e[n]); 779 | return t 780 | }, 781 | X = function(t, e) { 782 | return void 0 === e ? k(t) : Q(k(t), e) 783 | }, 784 | Z = function(t) { 785 | var e = N.call(this, t = S(t, !0)); 786 | return !(this === D && o(W, t) && !o(z, t)) && (!(e || !o(this, t) || !o(W, t) || o(this, L) && this[L][t]) || e) 787 | }, 788 | q = function(t, e) { 789 | if (t = m(t), e = S(e, !0), t !== D || !o(W, e) || o(z, e)) { 790 | var n = P(t, e); 791 | return !n || !o(W, e) || o(t, L) && t[L][e] || (n.enumerable = !0), n 792 | } 793 | }, 794 | $ = function(t) { 795 | for (var e, n = K(m(t)), r = [], i = 0; n.length > i;) o(W, e = n[i++]) || e == L || e == s || r.push(e); 796 | return r 797 | }, 798 | tt = function(t) { 799 | for (var e, n = t === D, r = K(n ? z : m(t)), i = [], c = 0; r.length > c;) !o(W, e = r[c++]) || n && !o(D, e) || i.push(W[e]); 800 | return i 801 | }; 802 | J || (F = function() { 803 | if (this instanceof F) throw TypeError("Symbol is not a constructor!"); 804 | var t = p(arguments.length > 0 ? arguments[0] : void 0), 805 | e = function(n) { 806 | this === D && e.call(z, n), o(this, L) && o(this[L], t) && (this[L][t] = !1), V(this, t, O(1, n)) 807 | }; 808 | return i && G && V(D, t, { 809 | configurable: !0, 810 | set: e 811 | }), U(t) 812 | }, u(F[A], "toString", function() { 813 | return this._k 814 | }), j.f = q, _.f = H, n(68).f = w.f = $, n(65).f = Z, n(64).f = tt, i && !n(13) && u(D, "propertyIsEnumerable", Z, !0), y.f = function(t) { 815 | return U(h(t)) 816 | }), c(c.G + c.W + c.F * !J, { 817 | Symbol: F 818 | }); 819 | for (var et = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), nt = 0; et.length > nt;) h(et[nt++]); 820 | for (var et = E(h.store), nt = 0; et.length > nt;) d(et[nt++]); 821 | c(c.S + c.F * !J, "Symbol", { 822 | "for": function(t) { 823 | return o(R, t += "") ? R[t] : R[t] = F(t) 824 | }, 825 | keyFor: function(t) { 826 | if (Y(t)) return v(R, t); 827 | throw TypeError(t + " is not a symbol!") 828 | }, 829 | useSetter: function() { 830 | G = !0 831 | }, 832 | useSimple: function() { 833 | G = !1 834 | } 835 | }), c(c.S + c.F * !J, "Object", { 836 | create: X, 837 | defineProperty: H, 838 | defineProperties: Q, 839 | getOwnPropertyDescriptor: q, 840 | getOwnPropertyNames: $, 841 | getOwnPropertySymbols: tt 842 | }), T && c(c.S + c.F * (!J || f(function() { 843 | var t = F(); 844 | return "[null]" != M([t]) || "{}" != M({ 845 | a: t 846 | }) || "{}" != M(Object(t)) 847 | })), "JSON", { 848 | stringify: function(t) { 849 | if (void 0 !== t && !Y(t)) { 850 | for (var e, n, r = [t], o = 1; arguments.length > o;) r.push(arguments[o++]); 851 | return e = r[1], "function" == typeof e && (n = e), !n && x(e) || (e = function(t, e) { 852 | if (n && (e = n.call(this, t, e)), !Y(e)) return e 853 | }), r[1] = e, M.apply(T, r) 854 | } 855 | } 856 | }), F[A][I] || n(19)(F[A], I, F[A].valueOf), l(F, "Symbol"), l(Math, "Math", !0), l(r.JSON, "JSON", !0) 857 | }, function(t, e, n) { 858 | var r = n(45)("meta"), 859 | o = n(22), 860 | i = n(30), 861 | c = n(20).f, 862 | u = 0, 863 | s = Object.isExtensible || function() { 864 | return !0 865 | }, 866 | f = !n(25)(function() { 867 | return s(Object.preventExtensions({})) 868 | }), 869 | a = function(t) { 870 | c(t, r, { 871 | value: { 872 | i: "O" + ++u, 873 | w: {} 874 | } 875 | }) 876 | }, 877 | l = function(t, e) { 878 | if (!o(t)) return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t; 879 | if (!i(t, r)) { 880 | if (!s(t)) return "F"; 881 | if (!e) return "E"; 882 | a(t) 883 | } 884 | return t[r].i 885 | }, 886 | p = function(t, e) { 887 | if (!i(t, r)) { 888 | if (!s(t)) return !0; 889 | if (!e) return !1; 890 | a(t) 891 | } 892 | return t[r].w 893 | }, 894 | h = function(t) { 895 | return f && y.NEED && s(t) && !i(t, r) && a(t), t 896 | }, 897 | y = t.exports = { 898 | KEY: r, 899 | NEED: !1, 900 | fastKey: l, 901 | getWeak: p, 902 | onFreeze: h 903 | } 904 | }, function(t, e, n) { 905 | var r = n(15), 906 | o = n(16), 907 | i = n(13), 908 | c = n(56), 909 | u = n(20).f; 910 | t.exports = function(t) { 911 | var e = o.Symbol || (o.Symbol = i ? {} : r.Symbol || {}); 912 | "_" == t.charAt(0) || t in e || u(e, t, { 913 | value: c.f(t) 914 | }) 915 | } 916 | }, function(t, e, n) { 917 | var r = n(35), 918 | o = n(37); 919 | t.exports = function(t, e) { 920 | for (var n, i = o(t), c = r(i), u = c.length, s = 0; u > s;) 921 | if (i[n = c[s++]] === e) return n 922 | } 923 | }, function(t, e, n) { 924 | var r = n(35), 925 | o = n(64), 926 | i = n(65); 927 | t.exports = function(t) { 928 | var e = r(t), 929 | n = o.f; 930 | if (n) 931 | for (var c, u = n(t), s = i.f, f = 0; u.length > f;) s.call(t, c = u[f++]) && e.push(c); 932 | return e 933 | } 934 | }, function(t, e) { 935 | e.f = Object.getOwnPropertySymbols 936 | }, function(t, e) { 937 | e.f = {}.propertyIsEnumerable 938 | }, function(t, e, n) { 939 | var r = n(39); 940 | t.exports = Array.isArray || function(t) { 941 | return "Array" == r(t) 942 | } 943 | }, function(t, e, n) { 944 | var r = n(37), 945 | o = n(68).f, 946 | i = {}.toString, 947 | c = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], 948 | u = function(t) { 949 | try { 950 | return o(t) 951 | } catch (e) { 952 | return c.slice() 953 | } 954 | }; 955 | t.exports.f = function(t) { 956 | return c && "[object Window]" == i.call(t) ? u(t) : o(r(t)) 957 | } 958 | }, function(t, e, n) { 959 | var r = n(36), 960 | o = n(46).concat("length", "prototype"); 961 | e.f = Object.getOwnPropertyNames || function(t) { 962 | return r(t, o) 963 | } 964 | }, function(t, e, n) { 965 | var r = n(65), 966 | o = n(28), 967 | i = n(37), 968 | c = n(27), 969 | u = n(30), 970 | s = n(23), 971 | f = Object.getOwnPropertyDescriptor; 972 | e.f = n(24) ? f : function(t, e) { 973 | if (t = i(t), e = c(e, !0), s) try { 974 | return f(t, e) 975 | } catch (n) {} 976 | if (u(t, e)) return o(!r.f.call(t, e), t[e]) 977 | } 978 | }, function(t, e) {}, function(t, e, n) { 979 | n(61)("asyncIterator") 980 | }, function(t, e, n) { 981 | n(61)("observable") 982 | }, function(t, e) { 983 | "use strict"; 984 | t.exports = { 985 | normal: { 986 | _meta: { 987 | tab: { 988 | key: "\t", 989 | text: "Tab", 990 | width: 60, 991 | classes: "control" 992 | }, 993 | shiftl: { 994 | keySet: "shifted", 995 | text: "Shift", 996 | width: 100, 997 | classes: "control" 998 | }, 999 | shiftr: { 1000 | keySet: "shifted", 1001 | text: "Shift", 1002 | width: 100, 1003 | classes: "control" 1004 | }, 1005 | caps: { 1006 | keySet: "capsed", 1007 | text: "Caps lock", 1008 | width: 80, 1009 | classes: "control" 1010 | }, 1011 | space: { 1012 | key: " ", 1013 | text: "Space", 1014 | width: 180 1015 | }, 1016 | enter: { 1017 | key: "\r\n", 1018 | text: "Enter", 1019 | width: 80, 1020 | classes: "control" 1021 | }, 1022 | backspace: { 1023 | func: "backspace", 1024 | classes: "control backspace", 1025 | width: 65 1026 | }, 1027 | accept: { 1028 | func: "accept", 1029 | text: "Close", 1030 | classes: "control featured" 1031 | }, 1032 | next: { 1033 | func: "next", 1034 | text: "Next", 1035 | classes: "control featured" 1036 | } 1037 | }, 1038 | "default": ["` 1 2 3 4 5 6 7 8 9 0 - = {backspace}", "{tab} q w e r t y u i o p [ ] \\", "{caps} a s d f g h j k l ; ' {enter}", "{shiftl} z x c v b n m , . / {shiftr}", "{next} {space} {accept}"], 1039 | shifted: ["~ ! @ # $ % ^ & * ( ) _ + {backspace}", "{tab} Q W E R T Y U I O P { } |", '{caps} A S D F G H J K L : " {enter}', "{shiftl} Z X C V B N M < > ? {shiftr}", "{next} {space} {accept}"], 1040 | capsed: ["` 1 2 3 4 5 6 7 8 9 0 - = {backspace}", "{tab} Q W E R T Y U I O P [ ] \\", "{caps} A S D F G H J K L ; ' {enter}", "{shiftl} Z X C V B N M , . / {shiftr}", "{next} {space} {accept}"] 1041 | }, 1042 | per_normal : { 1043 | _meta: { 1044 | tab: { 1045 | key: "\t" 1046 | , text: "Tab" 1047 | , width: 60 1048 | , classes: "control" 1049 | } 1050 | , caps: { 1051 | keySet: "capsed" 1052 | , text: "Caps lock" 1053 | , width: 80 1054 | , classes: "control" 1055 | } 1056 | , space: { 1057 | key: " " 1058 | , text: "فاصله" 1059 | , width: 180 1060 | } 1061 | , enter: { 1062 | key: "\r\n" 1063 | , text: "Enter" 1064 | , width: 80 1065 | , classes: "control" 1066 | } 1067 | , backspace: { 1068 | func: "backspace" 1069 | , classes: "control backspace" 1070 | , width: 65 1071 | } 1072 | , accept: { 1073 | func: "accept" 1074 | , text: "بستن" 1075 | , classes: "control featured" 1076 | } 1077 | , next: { 1078 | func: "next" 1079 | , text: "بعدی" 1080 | , classes: "control featured" 1081 | }, 1082 | shiftl: { 1083 | keySet: "shifted" 1084 | , text: "تغییر" 1085 | , width: 100 1086 | , classes: "control" 1087 | } 1088 | }, 1089 | "default": ["` 1 2 3 4 5 6 7 8 9 0 - = {backspace}", "{tab} ض ص ث ق ف غ ع ه خ ح ج چ", "{caps} ش س ی ب ل ا ت ن م ک گ {enter}", "{shiftl} ؟ ظ ط ز ر ذ د و ، . پ ئ / ", "{next} {space} {accept}"] , 1090 | shifted : ["~ ! @ # $ % ^ & * ( ) _ + {backspace}", "{tab} ض ص ث ق ف غ ع ه خ ح ج چ", "{caps} ش س ی ب ل ا ت ن م ک گ {enter}", "{shiftl} ؟ ظ ط ز ر ذ د و { } [ ] / ", "{next} {space} {accept}"] 1091 | }, 1092 | compact: { 1093 | _meta: { 1094 | "default": { 1095 | keySet: "default", 1096 | text: "abc", 1097 | classes: "control" 1098 | }, 1099 | alpha: { 1100 | keySet: "default", 1101 | text: "Abc", 1102 | classes: "control" 1103 | }, 1104 | shift: { 1105 | keySet: "shifted", 1106 | text: "ABC", 1107 | classes: "control" 1108 | }, 1109 | numbers: { 1110 | keySet: "numbers", 1111 | text: "123", 1112 | classes: "control" 1113 | }, 1114 | space: { 1115 | key: " ", 1116 | text: "Space", 1117 | width: 200 1118 | }, 1119 | backspace: { 1120 | func: "backspace", 1121 | classes: "control" 1122 | }, 1123 | accept: { 1124 | func: "accept", 1125 | text: "Close", 1126 | classes: "control featured" 1127 | }, 1128 | next: { 1129 | func: "next", 1130 | text: "Next", 1131 | classes: "featured" 1132 | }, 1133 | zero: { 1134 | key: "0", 1135 | width: 130 1136 | } 1137 | }, 1138 | "default": ["q w e r t y u i o p", " a s d f g h j k l ", "{shift} z x c v b n m {backspace}", "{numbers} , {space} . {next} {accept}"], 1139 | shifted: ["Q W E R T Y U I O P", " A S D F G H J K L ", "{default} Z X C V B N M ", "{numbers} _ {space} {backspace} {next} {accept}"], 1140 | numbers: ["1 2 3", "4 5 6", "7 8 9", " {alpha} . {zero} {backspace} {next} {accept}"] 1141 | }, 1142 | numeric: { 1143 | _meta: { 1144 | backspace: { 1145 | func: "backspace", 1146 | classes: "control" 1147 | }, 1148 | accept: { 1149 | func: "accept", 1150 | text: "Close", 1151 | classes: "control featured" 1152 | }, 1153 | next: { 1154 | func: "next", 1155 | text: "Next", 1156 | classes: "control featured" 1157 | }, 1158 | zero: { 1159 | key: "0", 1160 | width: 130 1161 | } 1162 | }, 1163 | "default": ["1 2 3", "4 5 6", "7 8 9", "_ - . {zero} {backspace} {next} {accept}"] 1164 | } 1165 | } 1166 | }, function(t, e, n) { 1167 | function r(t) { 1168 | return "string" == typeof t || !i(t) && c(t) && o(t) == u 1169 | } 1170 | var o = n(75), 1171 | i = n(81), 1172 | c = n(82), 1173 | u = "[object String]"; 1174 | t.exports = r 1175 | }, function(t, e, n) { 1176 | function r(t) { 1177 | return null == t ? void 0 === t ? s : u : f && f in Object(t) ? i(t) : c(t) 1178 | } 1179 | var o = n(76), 1180 | i = n(79), 1181 | c = n(80), 1182 | u = "[object Null]", 1183 | s = "[object Undefined]", 1184 | f = o ? o.toStringTag : void 0; 1185 | t.exports = r 1186 | }, function(t, e, n) { 1187 | var r = n(77), 1188 | o = r.Symbol; 1189 | t.exports = o 1190 | }, function(t, e, n) { 1191 | var r = n(78), 1192 | o = "object" == typeof self && self && self.Object === Object && self, 1193 | i = r || o || Function("return this")(); 1194 | t.exports = i 1195 | }, function(t, e) { 1196 | (function(e) { 1197 | var n = "object" == typeof e && e && e.Object === Object && e; 1198 | t.exports = n 1199 | }).call(e, function() { 1200 | return this 1201 | }()) 1202 | }, function(t, e, n) { 1203 | function r(t) { 1204 | var e = c.call(t, s), 1205 | n = t[s]; 1206 | try { 1207 | t[s] = void 0; 1208 | var r = !0 1209 | } catch (o) {} 1210 | var i = u.call(t); 1211 | return r && (e ? t[s] = n : delete t[s]), i 1212 | } 1213 | var o = n(76), 1214 | i = Object.prototype, 1215 | c = i.hasOwnProperty, 1216 | u = i.toString, 1217 | s = o ? o.toStringTag : void 0; 1218 | t.exports = r 1219 | }, function(t, e) { 1220 | function n(t) { 1221 | return o.call(t) 1222 | } 1223 | var r = Object.prototype, 1224 | o = r.toString; 1225 | t.exports = n 1226 | }, function(t, e) { 1227 | var n = Array.isArray; 1228 | t.exports = n 1229 | }, function(t, e) { 1230 | function n(t) { 1231 | return null != t && "object" == typeof t 1232 | } 1233 | t.exports = n 1234 | }, function(t, e) { 1235 | function n(t) { 1236 | var e = typeof t; 1237 | return null != t && ("object" == e || "function" == e) 1238 | } 1239 | t.exports = n 1240 | }, function(t, e) { 1241 | t.exports = { 1242 | render: function() { 1243 | var t = this, 1244 | e = t.$createElement, 1245 | n = t._self._c || e; 1246 | return n("div", { 1247 | staticClass: "vue-touch-keyboard" 1248 | }, [n("div", { 1249 | staticClass: "keyboard" 1250 | }, t._l(t.keySet, function(e, r) { 1251 | return n("div", { 1252 | key: "index", 1253 | staticClass: "line" 1254 | }, t._l(e, function(e, r) { 1255 | return n("span", { 1256 | key: "index", 1257 | "class": t.getClassesOfKey(e), 1258 | style: t.getKeyStyle(e), 1259 | domProps: { 1260 | textContent: t._s(t.getCaptionOfKey(e)) 1261 | }, 1262 | on: { 1263 | click: function(n) { 1264 | t.clickKey(e) 1265 | }, 1266 | mousedown: t.mousedown 1267 | } 1268 | }) 1269 | })) 1270 | }))]) 1271 | }, 1272 | staticRenderFns: [] 1273 | } 1274 | }]) 1275 | }); --------------------------------------------------------------------------------