From 6e9e58ed6158e58741aae97fd099b40ac6be6d00 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Wed, 14 Oct 2020 15:56:52 -0400 Subject: [PATCH] chore(): remove old ionic vue directory (#22315) --- vue/.editorconfig | 12 - vue/.gitignore | 21 - vue/README.md | 54 - vue/cookbook/custom-transitions.html | 86 - vue/cookbook/index.html | 72 - vue/cookbook/ionic-controllers.html | 134 -- vue/cookbook/mixed-transitions.html | 86 - vue/cookbook/named-views-transitions.html | 85 - vue/cookbook/named-views.html | 77 - vue/cookbook/tabs.html | 82 - vue/package-lock.json | 1597 ----------------- vue/package.json | 68 - vue/rollup.config.js | 68 - vue/scripts/clean.js | 9 - vue/src/api-utils.ts | 17 - vue/src/app-initialize.ts | 36 - vue/src/components/inputs.ts | 57 - vue/src/components/navigation/ion-page.ts | 9 - vue/src/components/navigation/ion-tabs.ts | 227 --- .../components/navigation/ion-vue-router.ts | 154 -- .../controllers/action-sheet-controller.ts | 9 - vue/src/controllers/alert-controller.ts | 9 - vue/src/controllers/index.ts | 7 - vue/src/controllers/loading-controller.ts | 8 - vue/src/controllers/menu-controller.ts | 101 -- vue/src/controllers/modal-controller.ts | 20 - vue/src/controllers/picker-controller.ts | 9 - vue/src/controllers/popover-controller.ts | 20 - vue/src/controllers/toast-controller.ts | 8 - vue/src/controllers/vue-delegate.ts | 94 - vue/src/index.ts | 11 - vue/src/interfaces.ts | 89 - vue/src/ionic.ts | 118 -- vue/src/router.ts | 124 -- vue/src/util.ts | 32 - vue/tsconfig.json | 37 - vue/tslint.json | 7 - 37 files changed, 3654 deletions(-) delete mode 100644 vue/.editorconfig delete mode 100644 vue/.gitignore delete mode 100644 vue/README.md delete mode 100644 vue/cookbook/custom-transitions.html delete mode 100644 vue/cookbook/index.html delete mode 100644 vue/cookbook/ionic-controllers.html delete mode 100644 vue/cookbook/mixed-transitions.html delete mode 100644 vue/cookbook/named-views-transitions.html delete mode 100644 vue/cookbook/named-views.html delete mode 100644 vue/cookbook/tabs.html delete mode 100644 vue/package-lock.json delete mode 100644 vue/package.json delete mode 100644 vue/rollup.config.js delete mode 100644 vue/scripts/clean.js delete mode 100644 vue/src/api-utils.ts delete mode 100644 vue/src/app-initialize.ts delete mode 100644 vue/src/components/inputs.ts delete mode 100644 vue/src/components/navigation/ion-page.ts delete mode 100644 vue/src/components/navigation/ion-tabs.ts delete mode 100644 vue/src/components/navigation/ion-vue-router.ts delete mode 100644 vue/src/controllers/action-sheet-controller.ts delete mode 100644 vue/src/controllers/alert-controller.ts delete mode 100644 vue/src/controllers/index.ts delete mode 100644 vue/src/controllers/loading-controller.ts delete mode 100644 vue/src/controllers/menu-controller.ts delete mode 100644 vue/src/controllers/modal-controller.ts delete mode 100644 vue/src/controllers/picker-controller.ts delete mode 100644 vue/src/controllers/popover-controller.ts delete mode 100644 vue/src/controllers/toast-controller.ts delete mode 100644 vue/src/controllers/vue-delegate.ts delete mode 100644 vue/src/index.ts delete mode 100644 vue/src/interfaces.ts delete mode 100644 vue/src/ionic.ts delete mode 100644 vue/src/router.ts delete mode 100644 vue/src/util.ts delete mode 100644 vue/tsconfig.json delete mode 100644 vue/tslint.json 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)$"}] - } -}