diff --git a/vue/.editorconfig b/vue/.editorconfig
deleted file mode 100644
index 667a0ad119..0000000000
--- a/vue/.editorconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-root = true
-[*]
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.{js,vue,ts}]
-charset = utf-8
-indent_style = space
-indent_size = 2
-continuation_indent_size = 6
-
diff --git a/vue/.gitignore b/vue/.gitignore
deleted file mode 100644
index bc44866f9d..0000000000
--- a/vue/.gitignore
+++ /dev/null
@@ -1,21 +0,0 @@
-.*
-~*
-
-dist/
-node_modules/
-src/**/*.js
-types/**/*.map
-
-# ignore log files
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-test-report.xml
-
-!.gitignore
-!.editorconfig
-!.eslintrc.js
-!.prettierrc
-!.babelrc
-!.circleci
diff --git a/vue/README.md b/vue/README.md
deleted file mode 100644
index 3c66b9634e..0000000000
--- a/vue/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# @ionic/vue (beta)
-
-Ionic Vue.js specific building blocks on top of [@ionic/core](https://www.npmjs.com/package/@ionic/core) components.
-
-To get started simply install `@ionic/vue` and `@ionic/core` with npm into your project and then register `@ionic/vue` as a plugin to your vue application.
-
-```ts
-import Vue from 'vue';
-import Ionic from '@ionic/vue';
-
-Vue.use(Ionic);
-
-new Vue({
- router,
- store,
- render: h => h(App)
-}).$mount('#app');
-```
-
-## Publishing a Native Application
-
-You can now make use of all of the ionic components in your vue application.
-If you want to publish your app to the App Store or Google Play you will need to use the ionic cli to execute Capacitor commands to do so.
-
-More information on this can be found here. https://ionicframework.com/docs/cli
-If you want to learn more about Capacitor our dedicated site can be found here. https://capacitor.ionicframework.com/
-
-The commands that you will need to execute are below.
-
-```sh
-ionic capacitor add
-ionic capacitor copy
-ionic capacitor run
-```
-
-## Current known limitations
-
-This is an beta release of @ionic/vue so please understand that there are some missing pieces but know that many of the components will work.
-
-- The shorthand `v-model` binding is currently not supported
-- Stack navigation for deep transitions is under heavy development at this time.
-
-## Related
-
-- [Ionic Core Components](https://www.npmjs.com/package/@ionic/core)
-- [Ionic Documentation](https://ionicframework.com/docs/)
-- [Ionic Worldwide Slack](http://ionicworldwide.herokuapp.com/)
-- [Ionic Forum](https://forum.ionicframework.com/)
-- [Ionicons](http://ionicons.com/)
-- [Capacitor](https://capacitor.ionicframework.com/)
-
-## License
-
-- [MIT](https://raw.githubusercontent.com/ionic-team/ionic/master/LICENSE)
diff --git a/vue/cookbook/custom-transitions.html b/vue/cookbook/custom-transitions.html
deleted file mode 100644
index d8ce9250e7..0000000000
--- a/vue/cookbook/custom-transitions.html
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Custom transitions
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vue/cookbook/index.html b/vue/cookbook/index.html
deleted file mode 100644
index c5372d4724..0000000000
--- a/vue/cookbook/index.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Basic routing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vue/cookbook/ionic-controllers.html b/vue/cookbook/ionic-controllers.html
deleted file mode 100644
index 204c6fa273..0000000000
--- a/vue/cookbook/ionic-controllers.html
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Ionic Controllers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Hola
-
-
-
-
- hola macho
-
-
-
-
-
-
-
-
-
diff --git a/vue/cookbook/mixed-transitions.html b/vue/cookbook/mixed-transitions.html
deleted file mode 100644
index eeb90e074d..0000000000
--- a/vue/cookbook/mixed-transitions.html
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Mixed transitions
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vue/cookbook/named-views-transitions.html b/vue/cookbook/named-views-transitions.html
deleted file mode 100644
index 373ff1a91b..0000000000
--- a/vue/cookbook/named-views-transitions.html
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Transitions with named views
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vue/cookbook/named-views.html b/vue/cookbook/named-views.html
deleted file mode 100644
index bfa77926f4..0000000000
--- a/vue/cookbook/named-views.html
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Routing with named views
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vue/cookbook/tabs.html b/vue/cookbook/tabs.html
deleted file mode 100644
index 26c7c28016..0000000000
--- a/vue/cookbook/tabs.html
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
- Ionic v4 + Vue.js - Ionic tabs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vue/package-lock.json b/vue/package-lock.json
deleted file mode 100644
index c42ae54686..0000000000
--- a/vue/package-lock.json
+++ /dev/null
@@ -1,1597 +0,0 @@
-{
- "name": "@ionic/vue",
- "version": "0.0.9",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.10.3",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.3.tgz",
- "integrity": "sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.3"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.10.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz",
- "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.10.3",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.3.tgz",
- "integrity": "sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.3",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@ionic/core": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.2.2.tgz",
- "integrity": "sha512-KUGJIWTcKuMGmLhmVpmszeDHtGoDmDWpR9mXnw/J+GTlS9Ix/b5mIslPbhsrJyI/qR449lL+cAvjbeeoVRUjhg==",
- "requires": {
- "ionicons": "^5.0.1",
- "tslib": "^1.10.0"
- },
- "dependencies": {
- "tslib": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
- "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
- }
- }
- },
- "@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
- "dev": true,
- "requires": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
- },
- "dependencies": {
- "estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
- "dev": true
- }
- }
- },
- "@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
- "dev": true
- },
- "@vue/component-compiler": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@vue/component-compiler/-/component-compiler-3.6.0.tgz",
- "integrity": "sha512-NIA0vmOI4zbtJAn69iZls8IJ8VxmguswAuiUdu8TcR+YYTYzntfw290HUCSFjzAdRg+FUWZv8r+wc3TzJ/IjwA==",
- "dev": true,
- "requires": {
- "@vue/component-compiler-utils": "^2.1.0",
- "clean-css": "^4.1.11",
- "hash-sum": "^1.0.2",
- "postcss-modules-sync": "^1.0.0",
- "source-map": "0.6.*"
- }
- },
- "@vue/component-compiler-utils": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz",
- "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==",
- "dev": true,
- "requires": {
- "consolidate": "^0.15.1",
- "hash-sum": "^1.0.2",
- "lru-cache": "^4.1.2",
- "merge-source-map": "^1.1.0",
- "postcss": "^7.0.14",
- "postcss-selector-parser": "^5.0.0",
- "prettier": "1.16.3",
- "source-map": "~0.6.1",
- "vue-template-es2015-compiler": "^1.9.0"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "babel-code-frame": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
- "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
- "dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "big.js": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
- "dev": true
- },
- "bluebird": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
- "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
- "dev": true
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "clean-css": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
- "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
- "dev": true,
- "requires": {
- "source-map": "~0.6.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "consolidate": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
- "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
- "dev": true,
- "requires": {
- "bluebird": "^3.1.1"
- }
- },
- "css-selector-tokenizer": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
- "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
- "dev": true,
- "requires": {
- "cssesc": "^0.1.0",
- "fastparse": "^1.1.1",
- "regexpu-core": "^1.0.0"
- },
- "dependencies": {
- "cssesc": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
- "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
- "dev": true
- }
- }
- },
- "cssesc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
- "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
- "dev": true
- },
- "de-indent": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
- "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
- "dev": true
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "diff": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
- "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
- "dev": true
- },
- "doctrine": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz",
- "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=",
- "dev": true,
- "requires": {
- "esutils": "^1.1.6",
- "isarray": "0.0.1"
- },
- "dependencies": {
- "esutils": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz",
- "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=",
- "dev": true
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- }
- }
- },
- "emojis-list": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "estree-walker": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
- "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "^0.1.0"
- }
- },
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
- "dev": true,
- "requires": {
- "fill-range": "^2.1.0"
- }
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "fastparse": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
- "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
- "dev": true
- },
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "dev": true,
- "requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
- }
- },
- "find-cache-dir": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
- "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
- "dev": true,
- "optional": true
- },
- "generic-names": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz",
- "integrity": "sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=",
- "dev": true,
- "requires": {
- "loader-utils": "^0.2.16"
- }
- },
- "glob": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "dev": true,
- "requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
- }
- },
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
- "dev": true
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "hash-sum": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
- "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
- "dev": true
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "icss-replace-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
- "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
- "dev": true
- },
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ionicons": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.1.2.tgz",
- "integrity": "sha512-zO7ZgbBbXhpA7cXO2rDzTNdcCqErjg1Sprq/ossTvaiV0MriOjRE7JO3EGvYjDTPzF9YALGpvLXqCgsRT0tprA=="
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
- "dev": true
- },
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
- "dev": true,
- "requires": {
- "is-primitive": "^2.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
- },
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- },
- "jest-worker": {
- "version": "26.1.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.1.0.tgz",
- "integrity": "sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==",
- "dev": true,
- "requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "js-base64": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
- "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "magic-string": {
- "version": "0.25.4",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
- "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.4"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "math-random": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
- "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
- "dev": true
- },
- "merge-source-map": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
- "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
- "dev": true,
- "requires": {
- "source-map": "^0.6.1"
- }
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "dev": true,
- "requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "dev": true,
- "requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "postcss": {
- "version": "7.0.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz",
- "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "postcss-modules-local-by-default": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
- "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
- "dev": true,
- "requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
- }
- },
- "postcss-modules-scope": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
- "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
- "dev": true,
- "requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- }
- }
- },
- "postcss-modules-sync": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-sync/-/postcss-modules-sync-1.0.0.tgz",
- "integrity": "sha1-YZpxnPeN0WpINBNRQLMkz3czS+E=",
- "dev": true,
- "requires": {
- "generic-names": "^1.0.2",
- "icss-replace-symbols": "^1.0.2",
- "postcss": "^5.2.5",
- "postcss-modules-local-by-default": "^1.1.1",
- "postcss-modules-scope": "^1.0.2",
- "string-hash": "^1.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "js-base64": "^2.1.9",
- "source-map": "^0.5.6",
- "supports-color": "^3.2.3"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "postcss-selector-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
- "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
- "dev": true,
- "requires": {
- "cssesc": "^2.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
- },
- "prettier": {
- "version": "1.16.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz",
- "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
- "dev": true
- },
- "randomatic": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
- "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
- "dev": true,
- "requires": {
- "is-number": "^4.0.0",
- "kind-of": "^6.0.0",
- "math-random": "^1.0.1"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "regenerate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
- "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
- "dev": true
- },
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
- "dev": true,
- "requires": {
- "is-equal-shallow": "^0.1.3"
- }
- },
- "regexpu-core": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
- "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
- "dev": true,
- "requires": {
- "regenerate": "^1.2.1",
- "regjsgen": "^0.2.0",
- "regjsparser": "^0.1.4"
- }
- },
- "regjsgen": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
- "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
- "dev": true
- },
- "regjsparser": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
- "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "resolve": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
- "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.5"
- }
- },
- "rollup": {
- "version": "2.18.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.18.1.tgz",
- "integrity": "sha512-w4X77ADA+WTGlapC8Z6yggdJtODw3SBl6R2LSkA7ZW5MtdkgcB7sfaSD1UWyx8diXbMcGIb0eI9gCx/dyqOgNQ==",
- "dev": true,
- "requires": {
- "fsevents": "~2.1.2"
- }
- },
- "rollup-plugin-terser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz",
- "integrity": "sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.8.3",
- "jest-worker": "^26.0.0",
- "serialize-javascript": "^3.0.0",
- "terser": "^4.7.0"
- }
- },
- "rollup-plugin-typescript2": {
- "version": "0.27.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.1.tgz",
- "integrity": "sha512-RJl77Bbj1EunAQDC3dK/O2HWuSUX3oJbRGzyLoS5o9W4Hs1Nix3Gavqj1Lzs5Y6Ff4H2xXfmZ1WWUQCYocSbzQ==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.0.8",
- "find-cache-dir": "^3.3.1",
- "fs-extra": "8.1.0",
- "resolve": "1.15.1",
- "tslib": "1.11.2"
- },
- "dependencies": {
- "resolve": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
- "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "tslib": {
- "version": "1.11.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz",
- "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==",
- "dev": true
- }
- }
- },
- "rollup-plugin-vue": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/rollup-plugin-vue/-/rollup-plugin-vue-4.7.2.tgz",
- "integrity": "sha512-RuAK+YTL81/iccOWoadqQz2TXqOogivjbvtCuU6EfVP9/E5XIjuMNVsVWHkSelZQblI1z2b5tshWL7XoiOfABQ==",
- "dev": true,
- "requires": {
- "@vue/component-compiler": "^3.6",
- "@vue/component-compiler-utils": "^2.1.0",
- "debug": "^4.1.1",
- "hash-sum": "^1.0.2",
- "magic-string": "^0.25.2",
- "querystring": "^0.2.0",
- "rollup-pluginutils": "^2.0.1",
- "source-map": "0.7.3",
- "vue-runtime-helpers": "1.0.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- }
- }
- },
- "rollup-pluginutils": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz",
- "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==",
- "dev": true,
- "requires": {
- "estree-walker": "^0.5.2",
- "micromatch": "^2.3.11"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "serialize-javascript": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
- "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.19",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "sourcemap-codec": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz",
- "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "string-hash": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
- "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "terser": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
- "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
- "dev": true,
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- }
- },
- "tslib": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
- "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
- "dev": true
- },
- "tslint": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz",
- "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
- "dev": true,
- "requires": {
- "babel-code-frame": "^6.22.0",
- "builtin-modules": "^1.1.1",
- "chalk": "^2.3.0",
- "commander": "^2.12.1",
- "diff": "^3.2.0",
- "glob": "^7.1.1",
- "js-yaml": "^3.7.0",
- "minimatch": "^3.0.4",
- "resolve": "^1.3.2",
- "semver": "^5.3.0",
- "tslib": "^1.8.0",
- "tsutils": "^2.27.2"
- }
- },
- "tslint-eslint-rules": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz",
- "integrity": "sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==",
- "dev": true,
- "requires": {
- "doctrine": "0.7.2",
- "tslib": "1.9.0",
- "tsutils": "^3.0.0"
- },
- "dependencies": {
- "tslib": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
- "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==",
- "dev": true
- },
- "tsutils": {
- "version": "3.17.1",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
- "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- }
- }
- },
- "tslint-ionic-rules": {
- "version": "0.0.19",
- "resolved": "https://registry.npmjs.org/tslint-ionic-rules/-/tslint-ionic-rules-0.0.19.tgz",
- "integrity": "sha512-myxelwnK9FkR4mG+PnktKZ2DJp1UnX+22MyiC0V8QZc0464X6X63kRQU8vMtpVlazpvbifsXP9yxct2tHBrN4w==",
- "dev": true,
- "requires": {
- "@types/node": "^10.9.4",
- "tslint-eslint-rules": "^5.3.1"
- },
- "dependencies": {
- "@types/node": {
- "version": "10.14.22",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.22.tgz",
- "integrity": "sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==",
- "dev": true
- }
- }
- },
- "tsutils": {
- "version": "2.29.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
- "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "typescript": {
- "version": "3.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz",
- "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==",
- "dev": true
- },
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
- "dev": true
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
- },
- "vue": {
- "version": "2.6.10",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz",
- "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==",
- "dev": true
- },
- "vue-router": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz",
- "integrity": "sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==",
- "dev": true
- },
- "vue-runtime-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/vue-runtime-helpers/-/vue-runtime-helpers-1.0.0.tgz",
- "integrity": "sha512-DgwCNgIXkq1GJsWwtFOjA/K2nxpjyon/QqAut0EiwrMHBatAPbfdqksDdRoK15b5YrSJRa59rx3pc0L6V4udUA==",
- "dev": true
- },
- "vue-template-compiler": {
- "version": "2.6.10",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz",
- "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==",
- "dev": true,
- "requires": {
- "de-indent": "^1.0.2",
- "he": "^1.1.0"
- }
- },
- "vue-template-es2015-compiler": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
- "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- }
- }
-}
diff --git a/vue/package.json b/vue/package.json
deleted file mode 100644
index 4a270cd437..0000000000
--- a/vue/package.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "name": "@ionic/vue",
- "version": "0.0.9",
- "description": "Vue specific wrappers for @ionic/core",
- "main": "dist/ionic-vue.common.js",
- "types": "dist/types/index.d.ts",
- "module": "dist/ionic-vue.esm.js",
- "unpkg": "dist/ionic-vue.js",
- "jsdelivr": "dist/ionic-vue.js",
- "contributors": [
- "Josh Thomas ",
- "Mike Hartington "
- ],
- "files": [
- "dist/"
- ],
- "bugs": {
- "url": "https://github.com/ionic-team/ionic/issues"
- },
- "keywords": [
- "ionic",
- "framework",
- "vue",
- "mobile",
- "app",
- "webapp",
- "capacitor",
- "cordova",
- "progressive web app",
- "pwa"
- ],
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/ionic-team/ionic.git"
- },
- "scripts": {
- "dev": "rollup -c",
- "watch": "rollup -c -w",
- "build": "npm run clean && NODE_ENV=production rollup -c --configProd",
- "clean": "node scripts/clean.js",
- "lint": "tslint --project .",
- "lint.fix": "tslint --project . --fix",
- "test": "jest --coverage --verbose"
- },
- "dependencies": {
- "@ionic/core": "^5.2.2",
- "ionicons": "^5.1.2"
- },
- "devDependencies": {
- "rollup": "^2.18.1",
- "rollup-plugin-terser": "^6.1.0",
- "rollup-plugin-vue": "^4.3.0",
- "rollup-plugin-typescript2": "^0.27.1",
- "tslib": "1.9.3",
- "tslint": "5.11.0",
- "tslint-ionic-rules": "0.0.19",
- "typescript": "3.9.5",
- "vue": "^2.5.17",
- "vue-template-compiler": "^2.5.17",
- "vue-router": "^3.0.1"
- },
- "peerDependencies": {
- "vue": "^2.5.17",
- "vue-router": "^3.0.1"
- }
-}
diff --git a/vue/rollup.config.js b/vue/rollup.config.js
deleted file mode 100644
index 28e798975f..0000000000
--- a/vue/rollup.config.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import path from 'path'
-import vue from 'rollup-plugin-vue'
-import { terser } from 'rollup-plugin-terser'
-import typescript from 'rollup-plugin-typescript2'
-
-const resolve = _path => path.resolve(__dirname, './', _path)
-
-function outputConfig(suffix, format, opts = {}) {
- return Object.assign(
- {
- file: resolve(`./dist/ionic-vue${suffix}.js`),
- name: 'IonicVue',
- exports: 'named',
- sourcemap: true,
- format,
- },
- opts
- )
-}
-
-function baseConfig() {
- return {
- input: resolve('./src/index.ts'),
- output: [
- outputConfig('', 'umd', {
- globals: {
- vue: 'Vue'
- },
- }),
- outputConfig('.esm', 'esm'),
- outputConfig('.common', 'cjs'),
- ],
- external: [
- 'vue',
- 'vue-router',
- '@ionic/core',
- '@ionic/core/loader',
- 'ionicons',
- 'ionicons/icons',
- ],
- plugins: [
- vue(),
- typescript({
- useTsconfigDeclarationDir: true,
- objectHashIgnoreUnknownHack: true,
- clean: true
- })
- ],
- }
-}
-
-export default args => {
- const configs = [baseConfig()]
-
- if (args.configProd === true) {
- const prodConfig = baseConfig()
- prodConfig.plugins.push(terser())
-
- for (const item of prodConfig.output) {
- item.file = item.file.replace('.js', '.min.js')
- item.sourcemap = false
- }
-
- configs.push(prodConfig)
- }
-
- return configs
-}
diff --git a/vue/scripts/clean.js b/vue/scripts/clean.js
deleted file mode 100644
index 54708e6d34..0000000000
--- a/vue/scripts/clean.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const fs = require('fs-extra')
-const path = require('path')
-
-const cleanDirs = ['dist']
-
-cleanDirs.forEach(dir => {
- const cleanDir = path.join(__dirname, '../', dir)
- fs.removeSync(cleanDir)
-})
diff --git a/vue/src/api-utils.ts b/vue/src/api-utils.ts
deleted file mode 100644
index eef85607e8..0000000000
--- a/vue/src/api-utils.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { HTMLStencilElement } from '@ionic/core';
-
-// A proxy method that initializes the controller and calls requested method
-export function proxyMethod(tag: string, method: string, ...opts: any[]): Promise {
- return initController(tag).then((ctrl: any) => ctrl[method].apply(ctrl, opts));
-}
-
-// Initialize an Ionic controller and append it to DOM
-export function initController(tag: string): Promise {
- let element = document.querySelector(tag) as HTMLElement;
-
- if (!element) {
- element = document.body.appendChild(document.createElement(tag));
- }
-
- return (element as HTMLStencilElement).componentOnReady();
-}
diff --git a/vue/src/app-initialize.ts b/vue/src/app-initialize.ts
deleted file mode 100644
index c39fe0d906..0000000000
--- a/vue/src/app-initialize.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-// Core Ionic types
-// tslint:disable-next-line:no-import-side-effect
-import { IonicConfig } from '@ionic/core';
-
-// Webpack import for ionicons
-import { addIcons } from 'ionicons';
-import { arrowBackSharp, chevronBack, chevronForward, closeCircle, closeSharp, menuOutline, menuSharp, reorderThreeOutline, reorderTwoSharp, searchOutline, searchSharp } from 'ionicons/icons';
-
-// import '@ionic/core/css/ionic.bundle.css';
-// import 'ionicons/dist/collection/icon/icon.css';
-
-import { applyPolyfills, defineCustomElements } from '@ionic/core/loader';
-import { IonicWindow } from './interfaces';
-
-export function appInitialize(config?: IonicConfig) {
- const win: IonicWindow = window as any;
- const Ionic = (win.Ionic = win.Ionic || {});
-
- Ionic.config = config;
- applyPolyfills().then(() => defineCustomElements(win));
-
- // Icons that are used by internal components
- addIcons({
- 'arrow-back-sharp': arrowBackSharp,
- 'chevron-back': chevronBack,
- 'chevron-forward': chevronForward,
- 'close-circle': closeCircle,
- 'close-sharp': closeSharp,
- 'menu-outline': menuOutline,
- 'menu-sharp': menuSharp,
- 'reorder-two-sharp': reorderTwoSharp,
- 'reorder-three-outline': reorderThreeOutline,
- 'search-outline': searchOutline,
- 'search-sharp': searchSharp,
- });
-}
diff --git a/vue/src/components/inputs.ts b/vue/src/components/inputs.ts
deleted file mode 100644
index 2dcdb7ac25..0000000000
--- a/vue/src/components/inputs.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import Vue from 'vue';
-
-/**
- * Create a wrapped input component that captures typical ionic input events
- * and emits core ones so v-model works.
- * @param {} name the vue name of the component
- * @param {*} coreTag the actual tag to render (such as ion-datetime)
- */
-export function createInputComponent(name: string, coreTag: string, modelEvent = 'ionChange', valueProperty = 'value') {
- return Vue.component(name, {
- model: {
- event: modelEvent,
- prop: valueProperty
- },
- render(createElement: any) {
- // Vue types have a bug accessing member properties:
- // https://github.com/vuejs/vue/issues/8721
- const cmp: any = this;
-
- return createElement(coreTag, {
- 'attrs': cmp.attrs,
- 'on': {
- 'ionChange': cmp.handleChange,
- 'ionInput': cmp.handleInput,
- 'ionBlur': cmp.handleBlur,
- 'ionFocus': cmp.handleFocus
- }
- }, this.$slots.default);
- },
- methods: {
- handleChange($event: any) {
- if (modelEvent === 'ionChange') {
- // Vue expects the value to be sent as the argument for v-model, not the
- // actual event object
- this.$emit('ionChange', $event.target[valueProperty]);
- } else {
- this.$emit('ionChange', $event);
- }
- },
- handleInput($event: any) {
- if (modelEvent === 'ionInput') {
- // Vue expects the value to be sent as the argument for v-model, not the
- // actual event object
- this.$emit('ionInput', $event.target[valueProperty]);
- } else {
- this.$emit('ionInput', $event);
- }
- },
- handleBlur($event: any) {
- this.$emit('ionBlur', $event);
- },
- handleFocus($event: any) {
- this.$emit('ionFocus', $event);
- }
- }
- });
-}
diff --git a/vue/src/components/navigation/ion-page.ts b/vue/src/components/navigation/ion-page.ts
deleted file mode 100644
index 6230e7ae2e..0000000000
--- a/vue/src/components/navigation/ion-page.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { CreateElement, RenderContext } from 'vue';
-
-export default {
- name: 'IonPage',
- functional: true,
- render(h: CreateElement, { children }: RenderContext) {
- return h('div', { class: { 'ion-page': true } }, children);
- }
-};
diff --git a/vue/src/components/navigation/ion-tabs.ts b/vue/src/components/navigation/ion-tabs.ts
deleted file mode 100644
index e47484def6..0000000000
--- a/vue/src/components/navigation/ion-tabs.ts
+++ /dev/null
@@ -1,227 +0,0 @@
-import Vue, { CreateElement, RenderContext, VNode } from 'vue';
-import { Route } from 'vue-router';
-
-interface EventListeners {
- [key: string]: Function | Function[];
-}
-
-const tabBars = [] as VNode[];
-const cachedTabs = [] as VNode[];
-
-export default {
- name: 'IonTabs',
- functional: true,
- render(h: CreateElement, { parent, data, slots, listeners }: RenderContext) {
- const renderQueue = [] as VNode[];
- const postRenderQueue = [] as VNode[];
- const route = parent.$route;
- let selectedTab = '';
-
- if (!parent.$router) {
- throw new Error('IonTabs requires an instance of either VueRouter or IonicVueRouter');
- }
-
- // Loop through all of the children in the default slot
- for (let i = 0; i < slots().default.length; i++) {
- const vnode = slots().default[i];
-
- // Not an ion-tab, push to render and post-render processing queues
- if (!vnode.tag || vnode.tag.match(/ion-tab$/) === null) {
- renderQueue.push(vnode);
- postRenderQueue[i] = vnode;
- continue;
- }
-
- const tabName = matchRouteToTab(vnode, route);
- const tabIsCached = cachedTabs[i];
-
- // Landed on tab route
- // Cache the tab, push to render queue and continue iteration
- if (tabName) {
- if (!tabIsCached) {
- cachedTabs[i] = vnode;
- }
-
- selectedTab = tabName;
- vnode.data.attrs.active = true;
- renderQueue.push(vnode);
- continue;
- }
-
- // If tab was previously cached, push to render queue but don't activate
- // Otherwise push an empty node
- renderQueue.push(tabIsCached ? vnode : h());
- }
-
- // Post processing after initial render
- // Required for tabs within Vue components or router view
- Vue.nextTick(() => {
- for (let i = 0; i < postRenderQueue.length; i++) {
- const vnode = postRenderQueue[i];
-
- if (vnode && vnode.elm && vnode.elm.nodeName === 'ION-TAB') {
- const ionTab = vnode.elm as HTMLIonTabElement;
- const vnodeData = {
- data: {
- attrs: { tab: ionTab.getAttribute('tab'), routes: ionTab.getAttribute('route') },
- },
- };
- const tabName = matchRouteToTab(vnodeData as any, route);
-
- // Set tab active state
- ionTab.active = !!tabName;
-
- // Loop through all tab-bars and set active tab
- if (tabName) {
- for (const tabBar of tabBars) {
- (tabBar.elm as HTMLIonTabBarElement).selectedTab = tabName;
- }
- }
-
- cachedTabs[i] = vnode;
- }
- }
-
- // Free tab-bars references
- tabBars.length = 0;
- });
-
- // Render
- return h('div', { ...data, style: hostStyles }, [
- parseSlot(slots().top, selectedTab, listeners),
- h('div', { class: 'tabs-inner', style: tabsInner }, renderQueue),
- parseSlot(slots().bottom, selectedTab, listeners),
- ]);
- }
-};
-
-// Search for ion-tab-bar in VNode array
-function parseSlot(slot: VNode[], tab: string, listeners: EventListeners): VNode[] {
- const vnodes = [] as VNode[];
-
- if (!slot) {
- return vnodes;
- }
-
- for (const vnode of slot) {
- vnodes.push(vnode.tag && vnode.tag.match(/ion-tab-bar$/) ? parseTabBar(vnode, tab, listeners) : vnode);
- }
-
- return vnodes;
-}
-
-// Set selected tab attribute and click handlers
-function parseTabBar(vnode: VNode, tab: string, listeners: EventListeners): VNode {
- const { IonTabsWillChange, IonTabsDidChange } = listeners;
-
- if (!vnode.data) {
- vnode.data = {
- attrs: {
- 'selected-tab': tab,
- },
- };
- } else if (!vnode.data.attrs) {
- vnode.data.attrs = { 'selected-tab': tab };
- } else {
- vnode.data.attrs['selected-tab'] = tab;
- }
-
- // Loop through ion-tab-buttons and assign click handlers
- // If custom click handler was provided, do not override it
- if (vnode.children) {
- for (const child of vnode.children) {
- if (child.tag && child.tag === 'ion-tab-button') {
- const clickHandler = (e: Event) => {
- const path = (child.elm as HTMLIonTabButtonElement).tab || '/';
- const route = hasDataAttr(child, 'to') ? child.data!.attrs!.to : { path };
- e.preventDefault();
-
- if (Array.isArray(IonTabsWillChange)) {
- IonTabsWillChange.map(item => item(route));
- } else if (IonTabsWillChange) {
- IonTabsWillChange(route);
- }
-
- vnode.context!.$router.push(route, () => {
- if (Array.isArray(IonTabsDidChange)) {
- IonTabsDidChange.map(item => item(route));
- } else if (IonTabsDidChange) {
- IonTabsDidChange(route);
- }
- });
- };
-
- if (!child.data || !child.data.on || !child.data.on.click) {
- Object.assign(child.data, { on: { click: clickHandler } });
- } else if (child.data.on.click) {
- // Always push our click handler to end of array
- if (Array.isArray(child.data.on.click)) {
- child.data.on.click.push(clickHandler);
- } else {
- child.data.on.click = [child.data.on.click as Function, clickHandler];
- }
- }
- }
- }
- }
-
- // Store a reference to the matched ion-tab-bar
- tabBars.push(vnode);
-
- return vnode;
-}
-
-// Check if a VNode has a specific attribute set
-function hasDataAttr(vnode: VNode, attr: string) {
- return vnode.data && vnode.data.attrs && vnode.data.attrs[attr];
-}
-
-// Match tab to route through :routes property
-// Otherwise match by URL
-function matchRouteToTab(vnode: VNode, route: Route): string {
- if (!vnode.data || !vnode.data.attrs || !vnode.data.attrs.tab) {
- throw new Error('The tab attribute is required for an ion-tab element');
- }
-
- const tabName = vnode.data.attrs.tab;
-
- // Handle route matching by :routes attribute
- if (vnode.data.attrs.routes) {
- const routes = Array.isArray(vnode.data.attrs.routes)
- ? vnode.data.attrs.routes
- : vnode.data.attrs.routes.replace(' ', '').split(',');
-
- // Parse an array of possible matches
- for (const r of routes) {
- if (route.name === r) {
- return tabName;
- }
- }
- } else {
- if (route.path.indexOf(tabName) > -1) {
- return tabName;
- }
- }
-
- return '';
-}
-
-// CSS for ion-tabs inner and outer elements
-const hostStyles = {
- display: 'flex',
- position: 'absolute',
- top: 0,
- left: 0,
- right: 0,
- bottom: 0,
- flexDirection: 'column',
- width: '100%',
- height: '100%',
- contain: 'layout size style',
-};
-
-const tabsInner = {
- position: 'relative',
- flex: 1,
- contain: 'layout size style',
-};
diff --git a/vue/src/components/navigation/ion-vue-router.ts b/vue/src/components/navigation/ion-vue-router.ts
deleted file mode 100644
index 35ce8f5bc5..0000000000
--- a/vue/src/components/navigation/ion-vue-router.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-import Vue, { CreateElement, RenderContext, VNodeData } from 'vue';
-import { NavDirection } from '@ionic/core';
-
-type TransitionDone = () => void;
-interface Props {
- name: string;
- animated: boolean;
-}
-
-// Component entering the view
-let enteringEl: HTMLElement;
-
-export default {
- name: 'IonVueRouter',
- functional: true,
-
- props: {
- // Router view name
- name: { default: 'default', type: String },
- // Disable transitions
- animated: { default: true, type: Boolean },
- },
-
- render(h: CreateElement, { parent, props, data, children }: RenderContext) {
- if (!parent.$router) {
- throw new Error('IonTabs requires an instance of either VueRouter or IonicVueRouter');
- }
-
- const ionRouterOutletData: VNodeData = {
- ...data,
- ref: 'ionRouterOutlet',
- on: { click: (event: Event) => catchIonicGoBack(parent, event) },
- };
- const routerViewData: VNodeData = { props: { name: props.name } };
- const transitionData: VNodeData = {
- props: { css: false, mode: 'in-out' },
- on: {
- leave: (el: HTMLElement, done: TransitionDone) => {
- leave(parent, props as Props, el, done);
- },
- beforeEnter,
- enter,
- afterEnter,
- beforeLeave,
- afterLeave,
- enterCancelled,
- leaveCancelled,
- }
- };
-
- return h('ion-router-outlet', ionRouterOutletData, [
- h('transition', transitionData, [
- h('router-view', routerViewData, children)
- ])
- ]);
- }
-};
-
-function catchIonicGoBack(parent: Vue, event: Event): void {
- // In case of nested ion-vue-routers run only once
- event.stopImmediatePropagation();
-
- if (!event.target) return;
-
- // We only care for the event coming from Ionic's back button
- const backButton = (event.target as HTMLElement).closest('ion-back-button') as HTMLIonBackButtonElement;
- if (!backButton) return;
-
- const $router = parent.$router;
- let defaultHref: string;
-
- // Explicitly override router direction to always trigger a back transition
- $router.directionOverride = 'back';
-
- // If we can go back - do so
- if ($router.canGoBack()) {
- event.preventDefault();
- $router.back();
- return;
- }
-
- // If there's a default fallback - use it
- defaultHref = backButton.defaultHref as string;
- if (undefined !== defaultHref) {
- event.preventDefault();
- $router.push(defaultHref);
- }
-}
-
-// Transition when we leave the route
-function leave(parent: Vue, props: Props, el: HTMLElement, done: TransitionDone) {
- const promise = transition(parent, props, el);
-
- // Skip any transition if we don't get back a Promise
- if (!promise) {
- done();
- return;
- }
-
- // Perform navigation once the transition was finished
- parent.$router.transition = new Promise(resolve => {
- promise.then(() => {
- resolve();
- done();
- }).catch(console.error);
- });
-}
-
-// Trigger the ionic/core transitions
-function transition(parent: Vue, props: Props, leavingEl: HTMLElement) {
- const ionRouterOutlet = parent.$refs.ionRouterOutlet as HTMLIonRouterOutletElement;
-
- // The Ionic framework didn't load - skip animations
- if (typeof ionRouterOutlet.componentOnReady === 'undefined') {
- return;
- }
-
- // Skip animations if there's no component to navigate to
- // or the current and the "to-be-rendered" components are the same
- if (!enteringEl || enteringEl === leavingEl) {
- return;
- }
-
- // Add the proper Ionic classes, important for smooth transitions
- enteringEl.classList.add('ion-page');
- enteringEl.classList.add('ion-page-invisible');
-
- // Commit to the transition as soon as the Ionic Router Outlet is ready
- return ionRouterOutlet.componentOnReady().then((el: HTMLIonRouterOutletElement) => {
- return el.commit(enteringEl, leavingEl, {
- deepWait: true,
- duration: !props.animated || parent.$router.direction === 'root' ? 0 : undefined,
- direction: parent.$router.direction as NavDirection,
- showGoBack: parent.$router.canGoBack(),
- });
- }).catch(console.error);
-}
-
-// Set the component to be rendered before we render the new route
-function beforeEnter(el: HTMLElement) {
- enteringEl = el;
-}
-
-// Enter the new route
-function enter(_el: HTMLElement, done: TransitionDone) {
- done();
-}
-
-// Vue transition stub functions
-function afterEnter(_el: HTMLElement) { /* */ }
-function afterLeave(_el: HTMLElement) { /* */ }
-function beforeLeave(_el: HTMLElement) { /* */ }
-function enterCancelled(_el: HTMLElement) { /* */ }
-function leaveCancelled(_el: HTMLElement) { /* */ }
diff --git a/vue/src/controllers/action-sheet-controller.ts b/vue/src/controllers/action-sheet-controller.ts
deleted file mode 100644
index f4d8f64706..0000000000
--- a/vue/src/controllers/action-sheet-controller.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { ActionSheetOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-
-export const CTRL = 'ion-action-sheet-controller';
-export class ActionSheetController extends OverlayBaseController {
- constructor() {
- super(CTRL);
- }
-}
diff --git a/vue/src/controllers/alert-controller.ts b/vue/src/controllers/alert-controller.ts
deleted file mode 100644
index 755a161eb1..0000000000
--- a/vue/src/controllers/alert-controller.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { AlertOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-
-export const CTRL = 'ion-alert-controller';
-export class AlertController extends OverlayBaseController {
- constructor() {
- super(CTRL);
- }
-}
diff --git a/vue/src/controllers/index.ts b/vue/src/controllers/index.ts
deleted file mode 100644
index f5101cf8a8..0000000000
--- a/vue/src/controllers/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export { ActionSheetController } from './action-sheet-controller';
-export { AlertController } from './alert-controller';
-export { LoadingController } from './loading-controller';
-export { MenuController } from './menu-controller';
-export { ModalController } from './modal-controller';
-export { PopoverController } from './popover-controller';
-export { ToastController } from './toast-controller';
diff --git a/vue/src/controllers/loading-controller.ts b/vue/src/controllers/loading-controller.ts
deleted file mode 100644
index a9f21414ec..0000000000
--- a/vue/src/controllers/loading-controller.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { LoadingOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-
-export class LoadingController extends OverlayBaseController {
- constructor() {
- super('ion-loading-controller');
- }
-}
diff --git a/vue/src/controllers/menu-controller.ts b/vue/src/controllers/menu-controller.ts
deleted file mode 100644
index 8d5096f1e3..0000000000
--- a/vue/src/controllers/menu-controller.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import { proxyMethod } from '../util';
-
-export const CTRL = 'ion-menu-controller';
-export class MenuController {
-
- /**
- * Programmatically open the Menu.
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return returns a promise when the menu is fully opened
- */
- open(menuId?: string): Promise {
- return proxyMethod(CTRL, 'open', menuId);
- }
-
- /**
- * Programmatically close the Menu. If no `menuId` is given as the first
- * argument then it'll close any menu which is open. If a `menuId`
- * is given then it'll close that exact menu.
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return returns a promise when the menu is fully closed
- */
- close(menuId?: string): Promise {
- return proxyMethod(CTRL, 'close', menuId);
- }
-
- /**
- * Toggle the menu. If it's closed, it will open, and if opened, it
- * will close.
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return returns a promise when the menu has been toggled
- */
- toggle(menuId?: string): Promise {
- return proxyMethod(CTRL, 'toggle', menuId);
- }
-
- /**
- * Used to enable or disable a menu. For example, there could be multiple
- * left menus, but only one of them should be able to be opened at the same
- * time. If there are multiple menus on the same side, then enabling one menu
- * will also automatically disable all the others that are on the same side.
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return Returns the instance of the menu, which is useful for chaining.
- */
- enable(shouldEnable: boolean, menuId?: string): Promise {
- return proxyMethod(CTRL, 'enable', shouldEnable, menuId);
- }
-
- /**
- * Used to enable or disable the ability to swipe open the menu.
- * @param shouldEnable True if it should be swipe-able, false if not.
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return Returns the instance of the menu, which is useful for chaining.
- */
- swipeGesture(shouldEnable: boolean, menuId?: string): Promise {
- return proxyMethod(CTRL, 'swipeGesture', shouldEnable, menuId);
- }
-
- /**
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return Returns true if the specified menu is currently open, otherwise false.
- * If the menuId is not specified, it returns true if ANY menu is currenly open.
- */
- isOpen(menuId?: string): Promise {
- return proxyMethod(CTRL, 'isOpen', menuId);
- }
-
- /**
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return Returns true if the menu is currently enabled, otherwise false.
- */
- isEnabled(menuId?: string): Promise {
- return proxyMethod(CTRL, 'isEnabled', menuId);
- }
-
- /**
- * Used to get a menu instance. If a `menuId` is not provided then it'll
- * return the first menu found. If a `menuId` is `left` or `right`, then
- * it'll return the enabled menu on that side. Otherwise, if a `menuId` is
- * provided, then it'll try to find the menu using the menu's `id`
- * property. If a menu is not found then it'll return `null`.
- * @param [menuId] Optionally get the menu by its id, or side.
- * @return Returns the instance of the menu if found, otherwise `null`.
- */
- get(menuId?: string): Promise {
- return proxyMethod(CTRL, 'get', menuId);
- }
-
- /**
- * @return Returns the instance of the menu already opened, otherwise `null`.
- */
- getOpen(): Promise {
- return proxyMethod(CTRL, 'getOpen');
- }
-
- /**
- * @return Returns an array of all menu instances.
- */
- getMenus(): Promise {
- return proxyMethod(CTRL, 'getMenus');
- }
-}
diff --git a/vue/src/controllers/modal-controller.ts b/vue/src/controllers/modal-controller.ts
deleted file mode 100644
index 275f14fd5d..0000000000
--- a/vue/src/controllers/modal-controller.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ModalOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-import { VueDelegate } from './vue-delegate';
-
-export const CTRL = 'ion-modal-controller';
-export class ModalController extends OverlayBaseController {
-
- constructor(
- private delegate: VueDelegate
- ) {
- super(CTRL);
- }
-
- create(opts: ModalOptions): Promise {
- return super.create({
- ...opts,
- delegate: this.delegate
- });
- }
-}
diff --git a/vue/src/controllers/picker-controller.ts b/vue/src/controllers/picker-controller.ts
deleted file mode 100644
index 424ff4996c..0000000000
--- a/vue/src/controllers/picker-controller.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { PickerOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-
-export const CTRL = 'ion-picker-controller';
-export class PickerController extends OverlayBaseController {
- constructor() {
- super(CTRL);
- }
-}
diff --git a/vue/src/controllers/popover-controller.ts b/vue/src/controllers/popover-controller.ts
deleted file mode 100644
index d5f549ae69..0000000000
--- a/vue/src/controllers/popover-controller.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { PopoverOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-import { VueDelegate } from './vue-delegate';
-
-export const CTRL = 'ion-popover-controller';
-export class PopoverController extends OverlayBaseController {
-
- constructor(
- private delegate: VueDelegate
- ) {
- super(CTRL);
- }
-
- create(opts: PopoverOptions): Promise {
- return super.create({
- ...opts,
- delegate: this.delegate
- });
- }
-}
diff --git a/vue/src/controllers/toast-controller.ts b/vue/src/controllers/toast-controller.ts
deleted file mode 100644
index 2227b24e86..0000000000
--- a/vue/src/controllers/toast-controller.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ToastOptions } from '@ionic/core';
-import { OverlayBaseController } from '../util';
-
-export class ToastController extends OverlayBaseController {
- constructor() {
- super('ion-toast-controller');
- }
-}
diff --git a/vue/src/controllers/vue-delegate.ts b/vue/src/controllers/vue-delegate.ts
deleted file mode 100644
index c0cc3d7d50..0000000000
--- a/vue/src/controllers/vue-delegate.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import { VueConstructor } from 'vue';
-import { FrameworkDelegate, LIFECYCLE_DID_ENTER, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_WILL_UNLOAD } from '@ionic/core';
-import { EsModule, HTMLVueElement, WebpackFunction } from '../interfaces';
-
-
-// Handle creation of sync and async components
-function createVueComponent(vue: VueConstructor, component: WebpackFunction | object | VueConstructor): Promise {
- return Promise.resolve(
- typeof component === 'function' && (component as WebpackFunction).cid === undefined
- ? (component as WebpackFunction)().then((cmp: any) => vue.extend(isESModule(cmp) ? cmp.default : cmp))
- : vue.extend(component)
- );
-}
-
-export class VueDelegate implements FrameworkDelegate {
- constructor(
- public vue: VueConstructor,
- ) {}
-
- // Attach the passed Vue component to DOM
- attachViewToDom(parentElement: HTMLElement, component: HTMLElement | WebpackFunction | object | VueConstructor, opts?: object, classes?: string[]): Promise {
- // Handle HTML elements
- if (isElement(component)) {
- // Add any classes to the element
- addClasses(component as HTMLElement, classes);
-
- // Append the element to DOM
- parentElement.appendChild(component as HTMLElement);
- bindLifecycleEvents(component, parentElement);
- return Promise.resolve(component as HTMLElement);
- }
-
- // Get the Vue controller
- return createVueComponent(this.vue, component).then((Component: VueConstructor) => {
- const componentInstance = new Component(opts);
- componentInstance.$mount();
-
- // Add any classes to the Vue component's root element
- addClasses(componentInstance.$el as HTMLElement, classes);
-
- // Append the Vue component to DOM
- parentElement.appendChild(componentInstance.$el);
- return componentInstance.$el as HTMLElement;
- });
- }
-
- // Remove the earlier created Vue component from DOM
- removeViewFromDom(_parentElement: HTMLElement, childElement: HTMLVueElement): Promise {
- // Destroy the Vue component instance
- if (childElement.__vue__) {
- childElement.__vue__.$destroy();
- }
-
- return Promise.resolve();
- }
-}
-
-const LIFECYCLES = [
- LIFECYCLE_WILL_ENTER,
- LIFECYCLE_DID_ENTER,
- LIFECYCLE_WILL_LEAVE,
- LIFECYCLE_DID_LEAVE,
- LIFECYCLE_WILL_UNLOAD
-];
-
-export function bindLifecycleEvents(instance: any, element: HTMLElement) {
- LIFECYCLES.forEach(eventName => {
- element.addEventListener(eventName, (ev: any) => {
- if (typeof instance[eventName] === 'function') {
- instance[eventName](ev.detail);
- }
- });
- });
-}
-
-// Check Symbol support
-const hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';
-
-// Check if object is an ES module
-function isESModule(obj: EsModule) {
- return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module');
-}
-
-// Check if value is an Element
-function isElement(el: any) {
- return typeof Element !== 'undefined' && el instanceof Element;
-}
-
-// Add an array of classes to an element
-function addClasses(element: HTMLElement, classes: string[] = []) {
- for (const cls of classes) {
- element.classList.add(cls);
- }
-}
diff --git a/vue/src/index.ts b/vue/src/index.ts
deleted file mode 100644
index 27bcb53117..0000000000
--- a/vue/src/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { install } from './ionic';
-
-export default {
- install,
- version: '__VERSION__'
-};
-
-export { Controllers } from './ionic';
-export { default as IonicVueRouter } from './router';
-
-export * from './components/inputs';
diff --git a/vue/src/interfaces.ts b/vue/src/interfaces.ts
deleted file mode 100644
index f93f4d2833..0000000000
--- a/vue/src/interfaces.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-import Vue from 'vue';
-import VueRouter from 'vue-router';
-import { RouterDirection, HTMLStencilElement } from '@ionic/core';
-import { RouterOptions } from 'vue-router/types/router';
-
-declare module 'vue-router/types/router' {
- interface VueRouter {
- direction: RouterDirection;
- directionOverride: RouterDirection | null;
- transition: Promise;
- canGoBack(): boolean;
- }
-}
-
-export interface HTMLVueElement extends HTMLElement {
- __vue__: Vue;
-}
-
-export interface VueWindow extends Window {
- Vue: typeof Vue;
- VueRouter: typeof VueRouter;
- disableIonicTransitions: boolean;
-}
-
-export interface WebpackFunction extends Function {
- cid: number;
-}
-
-export interface EsModule extends Object {
- __esModule?: boolean;
- [Symbol.toStringTag]: string;
-}
-
-export interface IonicGlobal {
- config?: any;
- ael?: (elm: any, eventName: string, cb: (ev: Event) => void, opts: any) => void;
- raf?: (ts: number) => void;
- rel?: (elm: any, eventName: string, cb: (ev: Event) => void, opts: any) => void;
-}
-
-export interface IonicWindow extends Window {
- Ionic: IonicGlobal;
-}
-
-export interface FrameworkDelegate {
- attachViewToDom(parentElement: HTMLElement, component: HTMLElement | WebpackFunction | object | Vue, opts?: object, classes?: string[]): Promise;
- removeViewFromDom(parentElement: HTMLElement, childElement: HTMLVueElement): Promise;
-}
-
-export interface IonBackButton extends HTMLStencilElement {
- defaultHref?: string;
-}
-
-export interface IonRouterOutlet extends HTMLStencilElement {
- commit(enterinEl: HTMLElement, leavingEl: HTMLElement | undefined, opts?: object | undefined): Promise;
-}
-
-export interface ApiCache {
- [key: string]: any;
-}
-
-export interface RouterArgs extends RouterOptions {
- direction?: RouterDirection;
- viewCount?: number;
-}
-
-export interface ProxyControllerInterface {
- create(opts: object): Promise;
- dismiss(): Promise;
- getTop(): Promise;
-}
-
-export interface ProxyDelegateOptions extends Object {
- [key: string]: any;
- delegate?: FrameworkDelegate;
-}
-
-export interface ProxyMenuControllerInterface {
- open(menuId?: string): Promise;
- close(menuId?: string): Promise;
- toggle(menuId?: string): Promise;
- enable(shouldEnable: boolean, menuId?: string): Promise;
- swipeGesture(shouldEnable: boolean, menuId?: string): Promise;
- isOpen(menuId?: string): Promise;
- isEnabled(menuId?: string): Promise;
- get(menuId?: string): Promise;
- getOpen(): Promise;
- getMenus(): Promise;
-}
diff --git a/vue/src/ionic.ts b/vue/src/ionic.ts
deleted file mode 100644
index d83929d3ab..0000000000
--- a/vue/src/ionic.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-import { PluginFunction, VueConstructor, default as VueImport } from 'vue';
-import {
- ActionSheetController,
- AlertController,
- LoadingController,
- MenuController,
- ModalController,
- PopoverController,
- ToastController
-} from './controllers';
-import { IonicConfig } from '@ionic/core';
-import { appInitialize } from './app-initialize';
-import { VueDelegate } from './controllers/vue-delegate';
-import IonTabs from './components/navigation/ion-tabs';
-import IonPage from './components/navigation/ion-page';
-import { createInputComponent } from './components/inputs';
-
-export interface Controllers {
- actionSheetController: ActionSheetController;
- alertController: AlertController;
- loadingController: LoadingController;
- menuController: MenuController;
- modalController: ModalController;
- popoverController: PopoverController;
- toastController: ToastController;
-}
-
-declare module 'vue/types/vue' {
- interface Vue {
- $ionic: Controllers;
- }
-}
-
-
-function createApi(vueInstance: VueConstructor) {
- const cache: Partial = {};
- const vueDelegate = new VueDelegate(vueInstance);
-
- return {
- get actionSheetController() {
- if (!cache.actionSheetController) {
- cache.actionSheetController = new ActionSheetController();
- }
- return cache.actionSheetController;
- },
- get alertController() {
- if (!cache.alertController) {
- cache.alertController = new AlertController();
- }
- return cache.alertController;
- },
- get loadingController() {
- if (!cache.loadingController) {
- cache.loadingController = new LoadingController();
- }
- return cache.loadingController;
- },
- get menuController() {
- if (!cache.menuController) {
- cache.menuController = new MenuController();
- }
- return cache.menuController;
- },
- get modalController() {
- if (!cache.modalController) {
- cache.modalController = new ModalController(vueDelegate);
- }
- return cache.modalController;
- },
- get popoverController() {
- if (!cache.popoverController) {
- cache.popoverController = new PopoverController(vueDelegate);
- }
- return cache.popoverController;
- },
- get toastController() {
- if (!cache.toastController) {
- cache.toastController = new ToastController();
- }
- return cache.toastController;
- }
- };
-}
-
-let Vue: typeof VueImport;
-
-export const install: PluginFunction = (_Vue, config) => {
- if (Vue && _Vue === Vue) {
- if (process.env.NODE_ENV !== 'production') {
- console.error(
- '[Ionic] already installed. Vue.use(Ionic) should be called only once.'
- );
- }
- return;
- }
- Vue = _Vue;
- Vue.config.ignoredElements.push(/^ion-/);
- Vue.component('IonTabs', IonTabs);
- Vue.component('IonPage', IonPage);
-
- createInputComponent('IonCheckboxVue', 'ion-checkbox', 'ionChange', 'checked');
- createInputComponent('IonDatetimeVue', 'ion-datetime');
- createInputComponent('IonInputVue', 'ion-input', 'ionInput');
- createInputComponent('IonRadioVue', 'ion-radio');
- createInputComponent('IonRangeVue', 'ion-range');
- createInputComponent('IonSearchbarVue', 'ion-searchbar', 'ionInput');
- createInputComponent('IonSelectVue', 'ion-select');
- createInputComponent('IonTextareaVue', 'ion-textarea');
- createInputComponent('IonToggleVue', 'ion-toggle', 'ionChange', 'checked');
-
- appInitialize(config);
-
- const api = createApi(Vue);
-
- Object.defineProperty(Vue.prototype, '$ionic', {
- get() { return api; }
- });
-};
diff --git a/vue/src/router.ts b/vue/src/router.ts
deleted file mode 100644
index d123fa4fce..0000000000
--- a/vue/src/router.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import VueRouter, { Route } from 'vue-router';
-import { PluginFunction } from 'vue';
-import { RouterArgs } from './interfaces';
-import IonVueRouter from './components/navigation/ion-vue-router';
-import { BackButtonEvent, RouterDirection } from '@ionic/core';
-
-// Extend the official VueRouter
-export default class Router extends VueRouter {
- direction: RouterDirection;
- directionOverride: RouterDirection | null;
- viewCount: number;
- prevRouteStack: Route[];
- history: any;
- static installed: boolean;
- static install: PluginFunction;
-
- constructor(args: RouterArgs = {} as RouterArgs) {
- super(args);
-
- // The direction user navigates in
- this.direction = args.direction || 'forward';
-
- // Override normal direction
- this.directionOverride = null;
-
- // Number of views navigated
- this.viewCount = args.viewCount || 0;
-
- // Stack of previous routes
- this.prevRouteStack = [];
-
- // Extend the existing history object
- this.extendHistory();
-
- // Wait for transition to finish before confirming navigation
- this.extendTransitionConfirmation();
-
- // Listen to Ionic's back button event
- document.addEventListener('ionBackButton', (e: Event) => {
- (e as BackButtonEvent).detail.register(0, processNextHandler => {
- this.back();
- processNextHandler();
- });
- });
- }
-
- extendTransitionConfirmation() {
- this.history._confirmTransition = this.history.confirmTransition;
- this.history.confirmTransition = async (...opts: any) => {
- if (undefined !== this.transition) {
- await this.transition;
- }
- this.history._confirmTransition(...opts);
- };
- }
-
- extendHistory() {
- // Save a reference to the original method
- this.history._updateRoute = this.history.updateRoute;
-
- this.history.updateRoute = (nextRoute: Route) => {
- // Guesstimate the direction of the next route
- this.direction = this.guessDirection(nextRoute);
-
- // Override the direction
- if (this.directionOverride) {
- this.direction = this.directionOverride;
- }
-
- // Increment or decrement the view count
- this.viewCount += this.direction === 'back' ? -1 : 1;
-
- // Call the original method
- this.history._updateRoute(nextRoute);
-
- // Reset direction overrides
- this.directionOverride = null;
- };
- }
-
- canGoBack(): boolean {
- // We can display the back button if we're not on /
- // or there were more than 1 views rendered
- return this.viewCount > 1 && this.currentRoute.fullPath.length > 1;
- }
-
- guessDirection(nextRoute: Route): RouterDirection {
- if (this.prevRouteStack.length !== 0) {
- const prevRoute: Route = this.prevRouteStack[this.prevRouteStack.length - 1];
-
- // Last route is the same as the next one - go back
- // If we're going to / reset the stack otherwise pop a route
- if (prevRoute.fullPath === nextRoute.fullPath) {
- if (prevRoute.fullPath.length === 1) {
- this.prevRouteStack = [];
- } else {
- this.prevRouteStack.pop();
- }
- return 'back';
- }
- }
-
- // Forward movement, push next route to stack
- if (this.history.current.fullPath !== nextRoute.fullPath) {
- this.prevRouteStack.push(this.history.current);
- }
- return 'forward';
- }
-}
-
-Router.install = (Vue) => {
- // If already installed - skip
- if (Router.installed) {
- return;
- }
-
- Router.installed = true;
-
- // Install the official VueRouter
- VueRouter.install(Vue);
-
- // Register the IonVueRouter component globally
- Vue.component('IonVueRouter', IonVueRouter);
-};
diff --git a/vue/src/util.ts b/vue/src/util.ts
deleted file mode 100644
index 05f1a7e6d9..0000000000
--- a/vue/src/util.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { HTMLStencilElement } from '@ionic/core';
-
-export class OverlayBaseController {
- constructor(private ctrl: string) {}
-
- create(opts?: Opts): Promise {
- return proxyMethod(this.ctrl, 'create', opts);
- }
-
- dismiss(data?: any, role?: string, id?: string): Promise {
- return proxyMethod(this.ctrl, 'dismiss', data, role, id);
- }
-
- getTop(): Promise {
- return proxyMethod(this.ctrl, 'getTop');
- }
-}
-
-export function proxyMethod(ctrlName: string, methodName: string, ...args: any[]) {
- const controller = ensureElementInBody(ctrlName);
- return controller.componentOnReady()
- .then(() => (controller as any)[methodName].apply(controller, args));
-}
-
-export function ensureElementInBody(elementName: string) {
- let element = document.querySelector(elementName);
- if (!element) {
- element = document.createElement(elementName);
- document.body.appendChild(element);
- }
- return element as HTMLStencilElement;
-}
diff --git a/vue/tsconfig.json b/vue/tsconfig.json
deleted file mode 100644
index 7a69a5473a..0000000000
--- a/vue/tsconfig.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "compilerOptions": {
- "alwaysStrict": true,
- "strict": true,
- "allowSyntheticDefaultImports": true,
- "allowUnreachableCode": false,
- "declaration": true,
- "declarationMap": true,
- "declarationDir": "dist/types",
- "experimentalDecorators": true,
- "forceConsistentCasingInFileNames": true,
- "jsx": "react",
- "jsxFactory": "h",
- "lib": [
- "dom",
- "es2017"
- ],
- "module": "es2015",
- "moduleResolution": "node",
- "noImplicitAny": true,
- "noImplicitReturns": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "outDir": "dist",
- "pretty": true,
- "removeComments": false,
- "rootDir": "src",
- "strictPropertyInitialization": false,
- "target": "es5"
- },
- "include": [
- "src/**/*.ts"
- ],
- "exclude": [
- "node_modules"
- ]
-}
diff --git a/vue/tslint.json b/vue/tslint.json
deleted file mode 100644
index 0532515130..0000000000
--- a/vue/tslint.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "tslint-ionic-rules",
- "rules": {
- "no-non-null-assertion": false,
- "no-import-side-effect": [true, {"ignore-module": "(svg|\\.css)$"}]
- }
-}