diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 7b162571b..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Build Oruga -on: - push: - branches: [ develop ] - pull_request: - branches: [ develop ] -jobs: - build: - runs-on: ubuntu-latest - strategy: - max-parallel: 24 - matrix: - node-version: [16.x, 17.x] - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} ๐ชข - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: Install dependencies ๐ฆ - run: npm install && npm run bootstrap - - name: Run tests ๐งช - run: npm run ci:oruga - - name: Upload coverage ๐ - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: oruga diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index e1c11f6e0..52c8d6d55 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -22,9 +22,6 @@ jobs: git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" - run: npm install - run: npm run bootstrap - - run: npm run publish:lib:oruga - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm run publish:lib:oruga-next env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 6863e9d08..72153c729 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,6 @@ node_modules packages/docs/.vuepress/dist/ packages/storybook/.dist/ packages/storybook/* -packages/oruga/coverage/* -packages/oruga/README.md packages/demo-vue3/* packages/oruga-next/README.md packages/docs-next/.vitepress/cache/ diff --git a/.scripts/config-sync.js b/.scripts/config-sync.js index a4f81fe3c..a5d3d2449 100755 --- a/.scripts/config-sync.js +++ b/.scripts/config-sync.js @@ -1,12 +1,8 @@ const replace = require('replace-in-file') const jsonPaths = [ - 'packages/docs/package.json', - 'packages/docs/package-lock.json', 'packages/docs-next/package.json', 'packages/docs-next/package-lock.json', - 'packages/oruga/package.json', - 'packages/oruga/package-lock.json', 'packages/oruga-next/package.json', 'packages/oruga-next/package-lock.json', ] diff --git a/README.md b/README.md index ff913f838..44bc69865 100644 --- a/README.md +++ b/README.md @@ -14,15 +14,6 @@ > Oruga is a lightweight library of UI components for [Vue.js](https://vuejs.org/) without CSS framework dependency -<p align="center"> - <a href="https://www.npmjs.com/package/@oruga-ui/oruga"><img src="https://img.shields.io/npm/v/@oruga-ui/oruga.svg?logo=npm" /></a> - <a href="https://www.npmjs.com/package/@oruga-ui/oruga"><img src="https://img.shields.io/npm/dt/@oruga-ui/oruga.svg" /></a> - <a href="https://github.com/oruga-ui/oruga/actions"><img src="https://github.com/oruga-ui/oruga/actions/workflows/build.yml/badge.svg" /><a> - <a href="https://codecov.io/gh/oruga-ui/oruga"><img src="https://codecov.io/gh/oruga-ui/oruga/branch/develop/graph/badge.svg?flag=oruga" /></a> -</p> - -*Oruga Next version for Vue 3.x* - <p align="center"> <a href="https://www.npmjs.com/package/@oruga-ui/oruga-next"><img src="https://img.shields.io/npm/v/@oruga-ui/oruga-next.svg?logo=npm" /></a> <a href="https://www.npmjs.com/package/@oruga-ui/oruga-next"><img src="https://img.shields.io/npm/dt/@oruga-ui/oruga-next.svg" /></a> @@ -30,6 +21,10 @@ <a href="https://codecov.io/gh/oruga-ui/oruga"><img src="https://codecov.io/gh/oruga-ui/oruga/branch/develop/graph/badge.svg?flag=oruga-next" /></a> </p> +> [!NOTE] +> **_Oruga for Vue 2.x deprecated_** +> Due to [EOL for Vue 2.x](https://v2.vuejs.org/lts/) at the end of the year, from now on Oruga for Vue 2 is deprecated. Further enhancements will only be developed for Oruga-next. See [#496](https://github.com/oruga-ui/oruga/issues/496). + ### Contact us ๐พ <p align="center"> @@ -42,10 +37,6 @@ <a href="https://ko-fi.com/orugaui"><img alt="Donate using Ko-fi" src="https://img.shields.io/badge/donate-ko--fi-00AA00.svg?logo=ko-fi" /></a> </p> -> [!NOTE] -> **_Oruga for Vue 2.x deprecated_** -> Due to [EOL for Vue 2.x](https://v2.vuejs.org/lts/) at the end of the year, from now on Oruga for Vue 2 is deprecated and will not receive any further updates. Further enhancements will only be developed for Oruga-next. See [#496](https://github.com/oruga-ui/oruga/issues/496). - ## Features diff --git a/package.json b/package.json index ac8eaa83e..47d573ef7 100644 --- a/package.json +++ b/package.json @@ -7,25 +7,13 @@ "license": "MIT", "scripts": { "bootstrap": "lerna bootstrap", - "test:oruga": "lerna run test --scope @oruga-ui/oruga", "test:oruga-next": "lerna run test --scope @oruga-ui/oruga-next", "test:ts:oruga-next": "lerna run test:ts --scope @oruga-ui/oruga-next", "test:watch:oruga-next": "lerna run test:watch --scope @oruga-ui/oruga-next", - "ci:oruga": "lerna run ci --scope @oruga-ui/oruga", - "lint:oruga": "lerna run lint --scope @oruga-ui/oruga", - "lint:fix:oruga": "lerna run lint:fix --scope @oruga-ui/oruga", - "lint:staged:oruga": "lerna run lint:staged --scope @oruga-ui/oruga", - "unit:oruga": "lerna run unit --scope @oruga-ui/oruga", - "build:lib:oruga": "lerna run build:lib --parallel --scope @oruga-ui/oruga", - "build:lib:watch:oruga": "lerna run build:lib:watch --parallel --scope @oruga-ui/oruga", - "build:docs:oruga": "lerna run docs:build --scope @oruga-ui/docs", - "build:docs:hacktoberfest": "lerna run docs:hacktoberfest --scope @oruga-ui/docs", - "build:docs:watch:oruga": "lerna run docs:dev --parallel --scope @oruga-ui/docs", "build:docs-next:oruga": "lerna run docs:build --parallel --scope @oruga-ui/docs-next", "build:docs-next:watch:oruga": "lerna run docs:dev --parallel --scope @oruga-ui/docs-next", "build:lib:oruga-next": "lerna run build:lib --parallel --scope @oruga-ui/oruga-next", "build:lib:watch:oruga-next": "lerna run build:lib:watch --parallel --scope @oruga-ui/oruga-next", - "publish:lib:oruga": "lerna run publish:lib --scope @oruga-ui/oruga", "publish:lib:oruga-next": "lerna run publish:lib --scope @oruga-ui/oruga-next", "test:all": "lerna run test --stream", "version": "node .scripts/config-sync && git add . && conventional-changelog -p angular -i CHANGELOG.md -s && node .scripts/wait-confirm && git add CHANGELOG.md", diff --git a/packages/README.md b/packages/README.md index 09353d862..663544b46 100644 --- a/packages/README.md +++ b/packages/README.md @@ -2,6 +2,5 @@ ## Packages for Oruga -1. **docs** - Oruga documentation -2. **oruga** - Main source code for Oruga -2. **oruga-next** - Build config for Vue 3 relative to oruga source code +1. **docs-next** - Oruga documentation +2. **oruga-next** - Main source code for Oruga diff --git a/packages/docs/.prettierrc b/packages/docs/.prettierrc deleted file mode 100644 index f1293f529..000000000 --- a/packages/docs/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "semi": false, - "printWidth": 180, - "singleQuote": true -} diff --git a/packages/docs/.vuepress/DocWrapper.vue b/packages/docs/.vuepress/DocWrapper.vue deleted file mode 100644 index de2461ea4..000000000 --- a/packages/docs/.vuepress/DocWrapper.vue +++ /dev/null @@ -1,91 +0,0 @@ -<script> -import { setValueByPath } from '../../oruga/src/utils/helpers' -const UNDERLINE_CLASS = 'odocs-underline-element' - -export default { - beforeDestroy() { - clearInterval(this.interval) - this.interval = null - }, - mounted() { - this.interval = null - this.$root.$on('inspect-class', (className, action) => { - clearInterval(this.interval) - this.classes = Object.assign({}, {}) - this.data = Object.assign({}, {}) - this.classesApplied = null - this.$nextTick(() => { - if (action) { - action(this) - } - setValueByPath(this.classes, className, () => UNDERLINE_CLASS) - this.classes = Object.assign({}, this.classes) - this.data = Object.assign({}, this.data) - this.$nextTick(() => { - this.interval = setInterval(() => { - let el = document.getElementsByClassName(UNDERLINE_CLASS)[0] - if (el) { - clearInterval(this.interval) - this.classesApplied = el.className.replace(UNDERLINE_CLASS, '').replace(/\s/g, ' ') - } - }, 300) - }) - }) - }) - }, - data() { - return { - classes: {}, - data: {}, - classesApplied: null, - } - }, - render (createElement) { - let el = createElement('span', - { - attrs: { - id: 'docs__element__to__inspect' - } - }, - [ - this.classesApplied ? createElement('div', {}, [ - createElement('b', 'Classes applied to the element'), - createElement( - 'div', - { - attrs: { - class: 'odocs-classes-applied', - }, - domProps: { - innerHTML: this.classesApplied - }, - } - ), - ]) : null, - this.$scopedSlots.default({ - ...this.classes, - ...this.data, - }) - ], - ) - return el - } -} -</script> - -<style> -.odocs-underline-element { - border: 2px solid #bd1313!important; -} -.odocs-classes-applied { - margin-top: 1rem; - margin-bottom: 1rem; - font-weight: bold; - background: black; - color: white; - display: flex; - align-items: center; - padding: 1rem; - border-radius: 0.3rem; -} -</style> diff --git a/packages/docs/.vuepress/Expo.vue b/packages/docs/.vuepress/Expo.vue deleted file mode 100644 index 41dbacd61..000000000 --- a/packages/docs/.vuepress/Expo.vue +++ /dev/null @@ -1,43 +0,0 @@ -<template> - <client-only> - <vue-telescope-expo :slugs="{ui: 'oruga'}" sortBy="lastDetectedAt" sortDirection="desc"> - <template v-slot:buttons="{ loading, hasMoreItems, loadMoreItems}"> - <o-button v-if="hasMoreItems" root-class="loadingbtn" elements-wrapper-class="loadingbtnwrapper" @click="loadMoreItems"> - <o-icon root-class="loadingicon" v-if="loading" pack="fas" icon="sync-alt" spin> </o-icon> - <span v-else>Load more</span> - </o-button> - </template> - <template v-slot:retry="{firstLoadItems}"> - <p>Something went wrong!</p> - <o-button @click="firstLoadItems">Retry</o-button> - </template> - </vue-telescope-expo> - </client-only> -</template> - -<script> -import VueTelescopeExpo from 'vue-telescope-expo' -import 'vue-telescope-expo/dist/vue-telescope-expo.css' -export default { - components: { VueTelescopeExpo }, -} -</script> - -<style scoped> -.loadingbtn { - min-width: 9rem; - border-color: transparent; - color: #fff; - cursor: pointer; - justify-content: center; - padding: calc(.5em - 1px) 1em; - text-align: center; - white-space: nowrap; - border-radius: 4px; - padding-left: 1rem; - padding-right: 1rem; -} -.loadingicon { - margin-top: 0.3rem; -} -</style> diff --git a/packages/docs/.vuepress/HFRepos.vue b/packages/docs/.vuepress/HFRepos.vue deleted file mode 100644 index 66bf13989..000000000 --- a/packages/docs/.vuepress/HFRepos.vue +++ /dev/null @@ -1,104 +0,0 @@ -<template> - <client-only> - <div> - <div class="hfrepos__container"> - <o-loading :full-page="false" :active="repos.length === 0" /> - <div v-for="repo of filteredRepos" :key="repo.id" class="hfrepo"> - <div class="hfrepo__header"> - <div class="hfrepo__title">{{repo.name}}</div> - <p class="hfrepo__subtitle">{{repo.description}}</p> - </div> - <div class="hfrepo__actions"> - <o-button override rootClass="hfrepo__btn" @click="goToRepo(repo)">Explore repo</o-button> - <o-button override rootClass="hfrepo__btn" @click="goToIssues(repo)">See issues</o-button> - </div> - </div> - </div> - </div> - </client-only> -</template> - -<script> -export default { - props: { - filter_fullname: { - type: String, - default: null - } - }, - data() { - return { - repos: [] - } - }, - mounted: function() { - fetch("/hfrepos.json") - .then(data => data.json()) - .then(data => this.repos = data.items) - }, - computed: { - filteredRepos() { - if (!this.filter_fullname) { - return this.repos - } - const regex = new RegExp(this.filter_fullname, "gi") - return this.repos.filter((repo) => repo.full_name.match(regex)) - } - }, - methods: { - goToIssues(repo) { - window.location.href = `${repo.html_url}/issues/?q=is:issue+is:open+label:hacktoberfest`; - }, - goToRepo(repo) { - window.location.href = repo.html_url; - } - } -} -</script> - -<style scoped> -.hfrepos__container { - position: relative; - min-height: 100px; -} - -.hfrepo { - margin-top: 1rem; - margin-bottom: 1rem; - background: #f4f0e1; - color: #2B3531; - padding: 1rem; - border-radius: 1rem; - width: 80%; -} - -@media (max-width: 1100px) { - .hfrepo { - width: 100%; - } -} - -.hfrepo__title { - font-weight: 800; - text-transform: capitalize; -} - -.hfrepo__header { - margin-bottom: 1.7rem; -} - -.hfrepo__btn { - cursor: pointer; - background: #F74700; - color: white; - padding: 0.9rem; - border: 0; - border-radius: 0.5rem; - text-decoration: none !important; - min-width: 8rem; - box-shadow: none; - outline: 0; - -webkit-appearance: none; - font-weight: bold; -} -</style> diff --git a/packages/docs/.vuepress/Inspector.vue b/packages/docs/.vuepress/Inspector.vue deleted file mode 100644 index 73f704dcd..000000000 --- a/packages/docs/.vuepress/Inspector.vue +++ /dev/null @@ -1,164 +0,0 @@ -<template> - <div> - <o-collapse class="inspector__summary" :open="false"> - <div - slot="trigger" - slot-scope="props" - class="inspector__summary-trigger" - role="button" - > - <div> - How does <i>Class props inspector</i> work? - </div> - <a > - <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon> - </a> - </div> - <div class="inspector__summary-content"> - <div class="inspector__summary-intro"><i>Class props inspector</i> is useful to see class props you want to use to customize Oruga components and how they change a component. You can click on <b>Inspect</b> button to find the exact element where a specific class prop acts. <br><br> - In the <i>Class props inspector</i> there are other columns</div> - <p class="inspector__summary-class"> - <h4> - Class prop - </h4> - <div> - This column contains the name of the Class prop you want to inspect.<br> - If you find a name with a link (<span>โท <a>classPropName</a></span>) this refers to a subitem (e.g. <i>Dropdown Item</i> in <i>Dropdown</i>). - </div> - </p> - <p class="inspector__summary-class"> - <h4> - Description - </h4> - <div> - This column contains the description of the Class prop you want to inspect.<br> - ๐ This icon indicates some warning, e.g. <i>this Class prop is visible only on mobile.</i><br> - ๐ This icon indicates that you should pay attention to CSS specificity. See <a href="/documentation/#deal-with-specificity">"Deal with specificity"</a> section in the documentation. - </div> - </p> - <p class="inspector__summary-class"> - <h4> - Props - </h4> - <div> - This column contains a list of props that activate the class, e.g. if a class prop contains <code>disabled</code> prop it means that only when the component has <code>disabled</code> prop. - </div> - </p> - <p class="inspector__summary-class"> - <h4> - Suffixes - </h4> - <div> - This column contains all the possible suffixes that you'll receive if you use a function to customize your Class prop. You'll find more info in the <a href="/documentation/#overriding-classes">"Overriding section"</a>. - </div> - </p> - </div> - </o-collapse> - <table> - <tr> - <th>Class prop</th> - <th>Description</th> - <th>Props</th> - <th>Suffixes</th> - <th></th> - </tr> - <tr v-for="(data, index) of classesToInspect" :key="data.class" :class="{ inspector__highlight: index === selectedElementIndex }"> - <td v-if="!data.subitem">{{data.class}}</td> - <td v-if="data.subitem">โท <a :href="`#${subitem}`">{{data.class}}</a></td> - <td> - <span>{{data.description | addDotToTheEnd}}</span> - <span v-if="data.componentRef"> - More detail <a target="_blank" :href="`/components/${data.componentRef}.html#class-props`">here</a> - </span> - <span v-if="data.warning"><br>๐ <i><span v-html="data.warning"></span></i></span> - <span v-if="data.specificity"><br>๐ <i><span>Classes applied have a higher specificity than expected <span v-html="data.specificity"></span></span></i></span> - </td> - <td> - <span v-if="data.properties"><code style='white-space: nowrap; padding: 0;' v-html="setByProperties(data.properties)"></code></span> - </td> - <td> - <span v-if="data.suffixes"><code style='white-space: nowrap; padding: 0;' v-html="setByProperties(data.suffixes)"></code></span> - </td> - <td> - <button v-if="!data.nospec === true" class="inspector__btn" type="button" @click="inspectClass(index, data)">Inspect</button> - </td> - </tr> - </table> - </div> -</template> - -<script> -export default { - data () { - return { - selectedElementIndex: Number - } - }, - filters: { - addDotToTheEnd (value) { - if (!value.endsWith('.')) - return value + '.' - return value - } - }, - computed: { - classesToInspect() { - this.inspectData.sort(function(propa, propb) { - return (propa.class < propb.class) ? -1 : (propa.class > propb.class) ? 1 : 0; - }); - return this.inspectData - } - }, - props: { - inspectData: Array, - subitem: String - }, - methods: { - setByProperties(props) { - return props ? props.join('<br>') : null - }, - inspectClass(index, selectedData) { - this.selectedElementIndex = index - const selectedClass = selectedData.realClass || selectedData.class - this.$root.$emit('inspect-class', selectedClass, selectedData.action) - document.getElementById("class-props").scrollIntoView(); - } - } -} -</script> - -<style scoped> -.inspector__summary { - margin-top: 2rem; -} -.inspector__summary-class h4 { - margin-block-start: 0.33em; - margin-block-end: 0.33em; -} -.inspector__summary-trigger div { - margin-right: 0.5rem; -} -.inspector__summary-trigger { - display: flex; - align-items: center; - margin-bottom: 0.5rem; -} -.inspector__summary-content { - border: 1px solid #dfe2e5; - padding: 0.5rem; -} -.inspector__btn { - cursor: pointer; - background: #bd1313 !important; - color: white!important; - font-weight: bold!important; - border: 0; - box-shadow: none; - border-radius: 0.3rem; - padding: 0.4rem; -} -.inspector__highlight, .inspector__highlight code, .inspector__highlight a { - background: #bd1313 !important; - color: white!important; -} -</style> diff --git a/packages/docs/.vuepress/config.js b/packages/docs/.vuepress/config.js deleted file mode 100644 index 9aeac7779..000000000 --- a/packages/docs/.vuepress/config.js +++ /dev/null @@ -1,94 +0,0 @@ -const path = require('path') -const fs = require('fs') - -const componentsFolder = path.join(__dirname, '../components/') -const components = fs.readdirSync(componentsFolder).map(c => c.replace('.md', '')) -const sidebarComponents = components.map(c => `/components/${c}`) - -module.exports = { - title: `Oruga`, - description: 'UI components for Vue.js and CSS framework agnostic', - head: [ - ['link', { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }], - ['meta', { charset: 'utf-8' }], - ['meta', { name: 'viewport', content: 'width=device-width, initial-scale=1' }], - ['meta', { name: 'title', content: 'Oruga UI - Vue.js' }], - ['meta', { name: 'og:locale', content: 'en_US' }], - ['meta', { name: 'og:type', content: 'website' }], - ['meta', { name: 'og:url', content: 'https://oruga.io' }], - ['meta', { name: 'og:title', content: 'UI components for Vue.js and CSS framework agnostic' }], - ['meta', { name: 'og:site_name', content: 'Oruga' }], - ['meta', { name: 'og:description', content: "Oruga UI is like a caterpillar, minimal and yet functional. It's in your hands turning it into a butterfly" }], - ['meta', { name: 'og:image', content: 'https://oruga.io/logo-banner.png?v=3' }], - ['meta', { name: 'og:image:type', content: 'image/png' }], - ['meta', { name: 'twitter:card', content: 'summary_large_image' }], - ['meta', { name: 'twitter:site', content: '@oruga_ui' }], - ['meta', { name: 'twitter:title', content: 'UI components for Vue.js and CSS framework agnostic' }], - ['meta', { name: 'twitter:description', content: "Oruga UI is like a caterpillar, minimal and yet functional. It's in your hands turning it into a butterfly" }], - ['meta', { name: 'twitter:image', content: 'https://oruga.io/logo-banner.png?v=3' }] - ], - plugins: [ - [ - 'demo-block', - { - settings: { - jsLib: ['https://oruga-documentation-preview.netlify.app/cdn/oruga.min.js'], - cssLib: [ - 'https://oruga-documentation-preview.netlify.app/cdn/oruga.min.css', - 'https://cdn.jsdelivr.net/npm/@mdi/font@5.8.55/css/materialdesignicons.min.css' - ], - vue: 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js', - jsfiddle: false, - codepen: true - } - } - ] - ], - configureWebpack: { - resolve: { - alias: { - vue: 'vue/dist/vue.common.js', - 'process.env.NODE_ENV': process.env.NODE_ENV - } - } - }, - markdown: { - config: md => { - // use more markdown-it plugins! - md.use(require('markdown-it-include')) - } - }, - themeConfig: { - home: true, - logo: '/logo.png', - repo: 'oruga-ui/oruga', - editLinks: true, - docsDir: 'packages/docs', - docsBranch: 'develop', - nav: [ - { text: 'Home', link: '/' }, - { text: 'Documentation', link: '/documentation/' }, - { text: 'Expo', link: '/expo/' }, - { text: 'Donate โ๏ธ', items: [ - {text:'Ko-fi', link: 'https://ko-fi.com/orugaui' } - ] - }, - // { text: '๐ Hacktoberfest', link: '/hacktoberfest/' }, - { text: 'Discord', link: 'https://discord.gg/RuKuBYN' }, - { text: 'Twitter', link: 'https://twitter.com/oruga_ui' }, - ], - sidebar: [ - { - title: 'Get started', - collapsable: true, - path: '/documentation/', - sidebarDepth: 2 - }, - { - title: 'Components', - collapsable: false, - children: sidebarComponents - } - ] - } -} diff --git a/packages/docs/.vuepress/enhanceApp.js b/packages/docs/.vuepress/enhanceApp.js deleted file mode 100644 index 47d7a83ac..000000000 --- a/packages/docs/.vuepress/enhanceApp.js +++ /dev/null @@ -1,46 +0,0 @@ - -import Oruga from '../../oruga/dist/oruga'; - -import { library } from '@fortawesome/fontawesome-svg-core'; -import { fas } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; - -import DocWrapper from './DocWrapper.vue'; -import Inspector from './Inspector.vue'; -import CarbonAds from './theme/components/CarbonAds.vue' -import Expo from './Expo.vue'; -import HFRepos from './HFRepos.vue'; - -import toggleStyle from './theme/components/togglestyles.js' - -export default ({ - Vue -}) => { - - library.add(fas); - Vue.component('vue-fontawesome', FontAwesomeIcon); - - Vue.component('CarbonAds', CarbonAds); - Vue.component('doc-wrapper', DocWrapper); - Vue.component('inspector', Inspector); - Vue.component('expo', Expo); - Vue.component('HFRepos', HFRepos); - - - Vue.use(Oruga, { - iconPack: 'fas', - iconComponent: 'vue-fontawesome' - }); - - if (process.env.NODE_ENV !== 'production') { - import('../../oruga/dist/oruga-full-vars.css'); - } - - // plugin-demo-block - if (typeof window !== 'undefined') { - window.Vue = Vue; - const value = localStorage.getItem('oruga.io_lite') === 'true'; - toggleStyle(value, true); - } - -} diff --git a/packages/docs/.vuepress/meta/robots.txt b/packages/docs/.vuepress/meta/robots.txt deleted file mode 100644 index 1f53798bb..000000000 --- a/packages/docs/.vuepress/meta/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: / diff --git a/packages/docs/.vuepress/public/_redirects b/packages/docs/.vuepress/public/_redirects deleted file mode 100644 index 578649911..000000000 --- a/packages/docs/.vuepress/public/_redirects +++ /dev/null @@ -1,2 +0,0 @@ -## fix previous seo path (google) -/guide /documentation 301! \ No newline at end of file diff --git a/packages/docs/.vuepress/public/banner08CRredlogo.png b/packages/docs/.vuepress/public/banner08CRredlogo.png deleted file mode 100644 index 56d00862b..000000000 Binary files a/packages/docs/.vuepress/public/banner08CRredlogo.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/defaultswitch.mp4 b/packages/docs/.vuepress/public/defaultswitch.mp4 deleted file mode 100644 index 8b8700c44..000000000 Binary files a/packages/docs/.vuepress/public/defaultswitch.mp4 and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicon-16x16.png b/packages/docs/.vuepress/public/favicon-16x16.png deleted file mode 100644 index 9a9ba6ab6..000000000 Binary files a/packages/docs/.vuepress/public/favicon-16x16.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicon-32x32.png b/packages/docs/.vuepress/public/favicon-32x32.png deleted file mode 100644 index f9dadeadf..000000000 Binary files a/packages/docs/.vuepress/public/favicon-32x32.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicon.ico b/packages/docs/.vuepress/public/favicon.ico deleted file mode 100644 index 466656596..000000000 Binary files a/packages/docs/.vuepress/public/favicon.ico and /dev/null differ diff --git a/packages/docs/.vuepress/public/hfrepos.json b/packages/docs/.vuepress/public/hfrepos.json deleted file mode 100644 index 8bc7e669e..000000000 --- a/packages/docs/.vuepress/public/hfrepos.json +++ /dev/null @@ -1,504 +0,0 @@ -{ - "total_count": 5, - "incomplete_results": false, - "items": [ - { - "id": 268736505, - "node_id": "MDEwOlJlcG9zaXRvcnkyNjg3MzY1MDU=", - "name": "oruga", - "full_name": "oruga-ui/oruga", - "private": false, - "owner": { - "login": "oruga-ui", - "id": 66300512, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy", - "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/oruga-ui", - "html_url": "https://github.com/oruga-ui", - "followers_url": "https://api.github.com/users/oruga-ui/followers", - "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}", - "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}", - "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions", - "organizations_url": "https://api.github.com/users/oruga-ui/orgs", - "repos_url": "https://api.github.com/users/oruga-ui/repos", - "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}", - "received_events_url": "https://api.github.com/users/oruga-ui/received_events", - "type": "Organization", - "site_admin": false - }, - "html_url": "https://github.com/oruga-ui/oruga", - "description": "๐ Oruga is a lightweight library of UI components without CSS framework dependency", - "fork": false, - "url": "https://api.github.com/repos/oruga-ui/oruga", - "forks_url": "https://api.github.com/repos/oruga-ui/oruga/forks", - "keys_url": "https://api.github.com/repos/oruga-ui/oruga/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/oruga-ui/oruga/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/oruga-ui/oruga/teams", - "hooks_url": "https://api.github.com/repos/oruga-ui/oruga/hooks", - "issue_events_url": "https://api.github.com/repos/oruga-ui/oruga/issues/events{/number}", - "events_url": "https://api.github.com/repos/oruga-ui/oruga/events", - "assignees_url": "https://api.github.com/repos/oruga-ui/oruga/assignees{/user}", - "branches_url": "https://api.github.com/repos/oruga-ui/oruga/branches{/branch}", - "tags_url": "https://api.github.com/repos/oruga-ui/oruga/tags", - "blobs_url": "https://api.github.com/repos/oruga-ui/oruga/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/oruga-ui/oruga/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/oruga-ui/oruga/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/oruga-ui/oruga/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/oruga-ui/oruga/statuses/{sha}", - "languages_url": "https://api.github.com/repos/oruga-ui/oruga/languages", - "stargazers_url": "https://api.github.com/repos/oruga-ui/oruga/stargazers", - "contributors_url": "https://api.github.com/repos/oruga-ui/oruga/contributors", - "subscribers_url": "https://api.github.com/repos/oruga-ui/oruga/subscribers", - "subscription_url": "https://api.github.com/repos/oruga-ui/oruga/subscription", - "commits_url": "https://api.github.com/repos/oruga-ui/oruga/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/oruga-ui/oruga/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/oruga-ui/oruga/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/oruga-ui/oruga/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/oruga-ui/oruga/contents/{+path}", - "compare_url": "https://api.github.com/repos/oruga-ui/oruga/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/oruga-ui/oruga/merges", - "archive_url": "https://api.github.com/repos/oruga-ui/oruga/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/oruga-ui/oruga/downloads", - "issues_url": "https://api.github.com/repos/oruga-ui/oruga/issues{/number}", - "pulls_url": "https://api.github.com/repos/oruga-ui/oruga/pulls{/number}", - "milestones_url": "https://api.github.com/repos/oruga-ui/oruga/milestones{/number}", - "notifications_url": "https://api.github.com/repos/oruga-ui/oruga/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/oruga-ui/oruga/labels{/name}", - "releases_url": "https://api.github.com/repos/oruga-ui/oruga/releases{/id}", - "deployments_url": "https://api.github.com/repos/oruga-ui/oruga/deployments", - "created_at": "2020-06-02T07:52:58Z", - "updated_at": "2021-09-29T02:39:29Z", - "pushed_at": "2021-09-29T14:10:35Z", - "git_url": "git://github.com/oruga-ui/oruga.git", - "ssh_url": "git@github.com:oruga-ui/oruga.git", - "clone_url": "https://github.com/oruga-ui/oruga.git", - "svn_url": "https://github.com/oruga-ui/oruga", - "homepage": "https://oruga.io", - "size": 6572, - "stargazers_count": 478, - "watchers_count": 478, - "language": "Vue", - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": false, - "has_pages": false, - "forks_count": 50, - "mirror_url": null, - "archived": false, - "disabled": false, - "open_issues_count": 9, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZTEz" - }, - "allow_forking": true, - "forks": 50, - "open_issues": 9, - "watchers": 478, - "default_branch": "develop", - "score": 1.0 - }, - { - "id": 368601767, - "node_id": "MDEwOlJlcG9zaXRvcnkzNjg2MDE3Njc=", - "name": "oruga-bulma", - "full_name": "oruga-ui/oruga-bulma", - "private": false, - "owner": { - "login": "oruga-ui", - "id": 66300512, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy", - "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/oruga-ui", - "html_url": "https://github.com/oruga-ui", - "followers_url": "https://api.github.com/users/oruga-ui/followers", - "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}", - "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}", - "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions", - "organizations_url": "https://api.github.com/users/oruga-ui/orgs", - "repos_url": "https://api.github.com/users/oruga-ui/repos", - "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}", - "received_events_url": "https://api.github.com/users/oruga-ui/received_events", - "type": "Organization", - "site_admin": false - }, - "html_url": "https://github.com/oruga-ui/oruga-bulma", - "description": "๐ Customisation of Oruga components with Bulma framework", - "fork": false, - "url": "https://api.github.com/repos/oruga-ui/oruga-bulma", - "forks_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/forks", - "keys_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/teams", - "hooks_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/hooks", - "issue_events_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/issues/events{/number}", - "events_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/events", - "assignees_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/assignees{/user}", - "branches_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/branches{/branch}", - "tags_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/tags", - "blobs_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/statuses/{sha}", - "languages_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/languages", - "stargazers_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/stargazers", - "contributors_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/contributors", - "subscribers_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/subscribers", - "subscription_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/subscription", - "commits_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/contents/{+path}", - "compare_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/merges", - "archive_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/downloads", - "issues_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/issues{/number}", - "pulls_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/pulls{/number}", - "milestones_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/milestones{/number}", - "notifications_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/labels{/name}", - "releases_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/releases{/id}", - "deployments_url": "https://api.github.com/repos/oruga-ui/oruga-bulma/deployments", - "created_at": "2021-05-18T16:42:13Z", - "updated_at": "2021-09-28T15:41:44Z", - "pushed_at": "2021-09-15T22:38:01Z", - "git_url": "git://github.com/oruga-ui/oruga-bulma.git", - "ssh_url": "git@github.com:oruga-ui/oruga-bulma.git", - "clone_url": "https://github.com/oruga-ui/oruga-bulma.git", - "svn_url": "https://github.com/oruga-ui/oruga-bulma", - "homepage": "", - "size": 408, - "stargazers_count": 27, - "watchers_count": 27, - "language": "SCSS", - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": false, - "has_pages": false, - "forks_count": 1, - "mirror_url": null, - "archived": false, - "disabled": false, - "open_issues_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZTEz" - }, - "allow_forking": true, - "forks": 1, - "open_issues": 0, - "watchers": 27, - "default_branch": "master", - "score": 1.0 - }, - { - "id": 314646698, - "node_id": "MDEwOlJlcG9zaXRvcnkzMTQ2NDY2OTg=", - "name": "demo-tailwindcss", - "full_name": "oruga-ui/demo-tailwindcss", - "private": false, - "owner": { - "login": "oruga-ui", - "id": 66300512, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy", - "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/oruga-ui", - "html_url": "https://github.com/oruga-ui", - "followers_url": "https://api.github.com/users/oruga-ui/followers", - "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}", - "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}", - "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions", - "organizations_url": "https://api.github.com/users/oruga-ui/orgs", - "repos_url": "https://api.github.com/users/oruga-ui/repos", - "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}", - "received_events_url": "https://api.github.com/users/oruga-ui/received_events", - "type": "Organization", - "site_admin": false - }, - "html_url": "https://github.com/oruga-ui/demo-tailwindcss", - "description": "๐ TailwindCSS 2 + Oruga demo", - "fork": false, - "url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss", - "forks_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/forks", - "keys_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/teams", - "hooks_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/hooks", - "issue_events_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/issues/events{/number}", - "events_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/events", - "assignees_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/assignees{/user}", - "branches_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/branches{/branch}", - "tags_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/tags", - "blobs_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/statuses/{sha}", - "languages_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/languages", - "stargazers_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/stargazers", - "contributors_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/contributors", - "subscribers_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/subscribers", - "subscription_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/subscription", - "commits_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/contents/{+path}", - "compare_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/merges", - "archive_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/downloads", - "issues_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/issues{/number}", - "pulls_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/pulls{/number}", - "milestones_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/milestones{/number}", - "notifications_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/labels{/name}", - "releases_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/releases{/id}", - "deployments_url": "https://api.github.com/repos/oruga-ui/demo-tailwindcss/deployments", - "created_at": "2020-11-20T19:10:16Z", - "updated_at": "2021-09-29T14:22:17Z", - "pushed_at": "2021-02-06T11:12:30Z", - "git_url": "git://github.com/oruga-ui/demo-tailwindcss.git", - "ssh_url": "git@github.com:oruga-ui/demo-tailwindcss.git", - "clone_url": "https://github.com/oruga-ui/demo-tailwindcss.git", - "svn_url": "https://github.com/oruga-ui/demo-tailwindcss", - "homepage": "https://oruga-tailwindcss-demo.netlify.app", - "size": 1259, - "stargazers_count": 14, - "watchers_count": 14, - "language": "Vue", - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": true, - "has_pages": false, - "forks_count": 1, - "mirror_url": null, - "archived": false, - "disabled": false, - "open_issues_count": 0, - "license": null, - "allow_forking": true, - "forks": 1, - "open_issues": 0, - "watchers": 14, - "default_branch": "master", - "score": 1.0 - }, - { - "id": 375468305, - "node_id": "MDEwOlJlcG9zaXRvcnkzNzU0NjgzMDU=", - "name": "vue-telescope-expo", - "full_name": "oruga-ui/vue-telescope-expo", - "private": false, - "owner": { - "login": "oruga-ui", - "id": 66300512, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy", - "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/oruga-ui", - "html_url": "https://github.com/oruga-ui", - "followers_url": "https://api.github.com/users/oruga-ui/followers", - "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}", - "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}", - "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions", - "organizations_url": "https://api.github.com/users/oruga-ui/orgs", - "repos_url": "https://api.github.com/users/oruga-ui/repos", - "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}", - "received_events_url": "https://api.github.com/users/oruga-ui/received_events", - "type": "Organization", - "site_admin": false - }, - "html_url": "https://github.com/oruga-ui/vue-telescope-expo", - "description": "๐ญ Fully customizable VueTelescope expo for your website", - "fork": false, - "url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo", - "forks_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/forks", - "keys_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/teams", - "hooks_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/hooks", - "issue_events_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/issues/events{/number}", - "events_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/events", - "assignees_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/assignees{/user}", - "branches_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/branches{/branch}", - "tags_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/tags", - "blobs_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/statuses/{sha}", - "languages_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/languages", - "stargazers_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/stargazers", - "contributors_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/contributors", - "subscribers_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/subscribers", - "subscription_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/subscription", - "commits_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/contents/{+path}", - "compare_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/merges", - "archive_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/downloads", - "issues_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/issues{/number}", - "pulls_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/pulls{/number}", - "milestones_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/milestones{/number}", - "notifications_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/labels{/name}", - "releases_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/releases{/id}", - "deployments_url": "https://api.github.com/repos/oruga-ui/vue-telescope-expo/deployments", - "created_at": "2021-06-09T19:29:42Z", - "updated_at": "2021-09-29T14:21:50Z", - "pushed_at": "2021-09-28T22:25:12Z", - "git_url": "git://github.com/oruga-ui/vue-telescope-expo.git", - "ssh_url": "git@github.com:oruga-ui/vue-telescope-expo.git", - "clone_url": "https://github.com/oruga-ui/vue-telescope-expo.git", - "svn_url": "https://github.com/oruga-ui/vue-telescope-expo", - "homepage": "", - "size": 6381, - "stargazers_count": 8, - "watchers_count": 8, - "language": "JavaScript", - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": true, - "has_pages": false, - "forks_count": 0, - "mirror_url": null, - "archived": false, - "disabled": false, - "open_issues_count": 0, - "license": { - "key": "mit", - "name": "MIT License", - "spdx_id": "MIT", - "url": "https://api.github.com/licenses/mit", - "node_id": "MDc6TGljZW5zZTEz" - }, - "allow_forking": true, - "forks": 0, - "open_issues": 0, - "watchers": 8, - "default_branch": "master", - "score": 1.0 - }, - { - "id": 323762219, - "node_id": "MDEwOlJlcG9zaXRvcnkzMjM3NjIyMTk=", - "name": "demo-multiframework", - "full_name": "oruga-ui/demo-multiframework", - "private": false, - "owner": { - "login": "oruga-ui", - "id": 66300512, - "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MzAwNTEy", - "avatar_url": "https://avatars.githubusercontent.com/u/66300512?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/oruga-ui", - "html_url": "https://github.com/oruga-ui", - "followers_url": "https://api.github.com/users/oruga-ui/followers", - "following_url": "https://api.github.com/users/oruga-ui/following{/other_user}", - "gists_url": "https://api.github.com/users/oruga-ui/gists{/gist_id}", - "starred_url": "https://api.github.com/users/oruga-ui/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/oruga-ui/subscriptions", - "organizations_url": "https://api.github.com/users/oruga-ui/orgs", - "repos_url": "https://api.github.com/users/oruga-ui/repos", - "events_url": "https://api.github.com/users/oruga-ui/events{/privacy}", - "received_events_url": "https://api.github.com/users/oruga-ui/received_events", - "type": "Organization", - "site_admin": false - }, - "html_url": "https://github.com/oruga-ui/demo-multiframework", - "description": "๐งถ Oruga combined with 4 different styles: Tailwind, Bootstrap 5, Bulma and Material!", - "fork": false, - "url": "https://api.github.com/repos/oruga-ui/demo-multiframework", - "forks_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/forks", - "keys_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/keys{/key_id}", - "collaborators_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/collaborators{/collaborator}", - "teams_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/teams", - "hooks_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/hooks", - "issue_events_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/issues/events{/number}", - "events_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/events", - "assignees_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/assignees{/user}", - "branches_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/branches{/branch}", - "tags_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/tags", - "blobs_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/blobs{/sha}", - "git_tags_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/tags{/sha}", - "git_refs_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/refs{/sha}", - "trees_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/trees{/sha}", - "statuses_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/statuses/{sha}", - "languages_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/languages", - "stargazers_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/stargazers", - "contributors_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/contributors", - "subscribers_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/subscribers", - "subscription_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/subscription", - "commits_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/commits{/sha}", - "git_commits_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/git/commits{/sha}", - "comments_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/comments{/number}", - "issue_comment_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/issues/comments{/number}", - "contents_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/contents/{+path}", - "compare_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/compare/{base}...{head}", - "merges_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/merges", - "archive_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/{archive_format}{/ref}", - "downloads_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/downloads", - "issues_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/issues{/number}", - "pulls_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/pulls{/number}", - "milestones_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/milestones{/number}", - "notifications_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/notifications{?since,all,participating}", - "labels_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/labels{/name}", - "releases_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/releases{/id}", - "deployments_url": "https://api.github.com/repos/oruga-ui/demo-multiframework/deployments", - "created_at": "2020-12-23T00:20:56Z", - "updated_at": "2021-09-29T14:22:39Z", - "pushed_at": "2021-03-01T23:53:56Z", - "git_url": "git://github.com/oruga-ui/demo-multiframework.git", - "ssh_url": "git@github.com:oruga-ui/demo-multiframework.git", - "clone_url": "https://github.com/oruga-ui/demo-multiframework.git", - "svn_url": "https://github.com/oruga-ui/demo-multiframework", - "homepage": "https://oruga-multiframework-demo.netlify.app", - "size": 1208, - "stargazers_count": 5, - "watchers_count": 5, - "language": "Vue", - "has_issues": true, - "has_projects": true, - "has_downloads": true, - "has_wiki": true, - "has_pages": false, - "forks_count": 0, - "mirror_url": null, - "archived": false, - "disabled": false, - "open_issues_count": 0, - "license": null, - "allow_forking": true, - "forks": 0, - "open_issues": 0, - "watchers": 5, - "default_branch": "master", - "score": 1.0 - } - ] -} diff --git a/packages/docs/.vuepress/public/inspectormov.mp4 b/packages/docs/.vuepress/public/inspectormov.mp4 deleted file mode 100644 index 77b0f69f1..000000000 Binary files a/packages/docs/.vuepress/public/inspectormov.mp4 and /dev/null differ diff --git a/packages/docs/.vuepress/public/logo-banner.png b/packages/docs/.vuepress/public/logo-banner.png deleted file mode 100644 index 87669bb6c..000000000 Binary files a/packages/docs/.vuepress/public/logo-banner.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/logo.png b/packages/docs/.vuepress/public/logo.png deleted file mode 100644 index 269045a6d..000000000 Binary files a/packages/docs/.vuepress/public/logo.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/oruga.svg b/packages/docs/.vuepress/public/oruga.svg deleted file mode 100644 index bd089f647..000000000 --- a/packages/docs/.vuepress/public/oruga.svg +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="297.463px" height="277.146px" viewBox="0 0 297.463 277.146" enable-background="new 0 0 297.463 277.146" - xml:space="preserve"> -<g id="Livello_1"> - <g> - <g> - <defs> - <path id="XMLID_1_" d="M71.915,118.993c-8.891-9.093-9.771-23.597-2.637-34.588c4.633-7.136,10.906-12.337,18.791-15.568 - c1.852-0.76,3.762-1.288,5.773-1.238c2.607,0.063,3.459,1.036,2.984,3.621c-0.852,4.647-1.059,9.313-0.402,13.979 - c1.301,9.223,5.654,17,11.703,23.91c1.547,1.767,3.256,3.394,4.893,5.085c0.713,0.54,1.443,1.063,2.137,1.629 - c1.887,1.538,2.137,3.358,0.639,5.529c-2.098,3.04-5.16,4.607-8.676,5.411C94.155,129.727,81.823,129.128,71.915,118.993z - M114.005,107.814c4.699,6,10.369,10.111,18.473,9.343c4.148-0.393,8.18-1.143,11.121-4.541c0.709-0.82,1.148-1.505,0.117-2.494 - c-1.314-1.262-1.98-2.977-2.738-4.61c-2.094-4.511-3.133-9.336-4.271-14.133c-2.053-12.818-1.475-25.313,4.404-37.205 - c1.244-2.517,0.574-4.55-1.691-6.187c-1.451-1.046-3.111-1.485-4.846-1.724c-5.059-0.697-9.773,0.734-14.428,2.405 - c-15.018,5.395-23.029,20.471-19.285,35.955C103.038,93.635,108.052,100.976,114.005,107.814z M72.53,158.015 - c11.268,0.801,21.281-2.824,30.043-9.902c1.27-1.026,2.516-2.143,3.146-3.741c2.018-2.543,3.062-5.433,2.807-8.678 - c-0.145-1.839-0.732-3.537-2.916-3.963c-1.201-1.127-2.629-0.677-3.973-0.503c-6.098,0.791-12.17,0.826-18.262-0.141 - c-7.008-1.112-12.926-3.885-16.979-10.033c-1.578-2.399-4.289-2.92-7.053-1.657c-3.846,1.757-5.85,5.026-6.762,8.958 - c-1.432,6.158,0.117,11.941,2.607,17.544C58.528,153.417,64.536,157.446,72.53,158.015z M140.448,90.345 - c0.631,6.587,2.51,12.753,6.389,18.176c3.633,5.079,8.551,7.579,14.895,7.194c1.547-0.094,2.088-0.328,1.439-1.966 - c-1.004-2.539-1.293-5.266-1.779-7.943c-1.031-5.704-0.332-11.344,0.42-16.989c0.635-2.274,1.008-4.663,1.951-6.801 - c3.217-7.315,7.664-13.783,13.543-19.291c3.818-3.577,3.312-8.273-0.871-11.476c-2.92-2.235-6.381-3.094-9.877-3.676 - c-11.168-1.861-20.209,1.458-24.699,13.022C138.081,70.323,138.862,80.33,140.448,90.345z M113.636,196.8 - c3.006-3.895,5.467-8.078,5.586-13.222c0.037-4.431-1.721-7.871-5.576-10.105c-3.428-1.983-6.592-1.285-8.85,1.834 - c-1.613,2.228-3.57,4.086-5.832,5.658c-6.031,4.191-12.865,6.184-19.965,7.61c-5.443,1.095-7.295,5.403-4.66,10.312 - c4.711,8.784,16.275,12.932,25.467,9.106C105.507,205.621,109.925,201.609,113.636,196.8z M221.854,85.946 - c-3.982-4.245-9.346-4.801-14.451-1.874c-6.488,3.719-11.221,9.301-15.799,15.034c-3.154,3.399-5.582,7.304-7.785,11.349 - c-2.053,3.771-3.773,7.678-4.379,11.993c-0.562,4.018,0.65,5.715,4.631,6.31c0.73,0.109,1.475,0.199,2.209,0.192 - c8.672-0.078,16.92-2.195,24.982-5.202c2.527-0.8,5.018-1.669,7.402-2.875c5.111-2.584,8.904-6.397,10.152-12.018 - C230.776,100.024,227.897,92.385,221.854,85.946z M75.521,184.817c11.283-0.754,20.295-5.691,26.852-14.946 - c2.252-3.182,3.225-6.844,2.889-10.791c-0.387-4.569-2.898-5.917-6.705-3.539c-5.801,3.624-12.064,6.024-18.85,6.849 - c-5.861,0.713-11.475-0.298-16.82-2.91c-2.896-1.417-4.924-0.391-5.807,2.69c-0.227,0.787-0.41,1.614-0.434,2.43 - C56.397,173.033,62.468,185.353,75.521,184.817z M176.597,68.592c-5.064,5.724-8.701,12.426-11.062,19.754 - c-3.473,9.492-3.145,18.738,1.961,27.595c1.799,3.118,4.246,5.701,7.447,7.466c2.287,1.263,2.844,0.954,3.061-1.58 - c0.127-1.479,0.242-2.963,0.482-4.425c1.293-7.902,5.701-14.265,10.234-20.56c3.635-4.511,7.766-8.549,12.146-12.305 - c4.506-3.858,6.748-9.788,5.182-14.539c-1.613-4.891-7.889-9.285-13.436-9.521C185.737,60.185,180.747,63.9,176.597,68.592z - M137.554,191.954c-1.727-3.502-4.908-5.155-8.715-5.117c-3.748,0.037-6.26,2.08-7.635,5.63 - c-2.291,5.917-6.334,10.361-11.75,13.618c-2.195,1.32-4.34,2.733-6.033,4.708c-2.535,2.958-2.66,6.111,0.027,8.838 - c3.879,3.932,8.441,6.604,14.424,6.518c6.033,0.052,10.912-2.752,14.9-7.289c2.574-2.927,4.068-6.362,5.182-10.154 - C139.636,202.979,140.253,197.427,137.554,191.954z M146.581,191.735c-4.975,0.543-6.004,2.067-5.238,6.599 - c0.559,3.31,1.299,6.639,0.855,10.055c-0.533,4.138-2.629,7.582-4.76,11.028c-3.02,4.885-1.232,9.44,4.223,11.282 - c5.203,1.758,9.805,0.531,13.871-2.755c5.895-4.765,7.893-11.351,8.154-18.957c-0.096-0.929-0.23-2.155-0.354-3.382 - C162.505,197.409,154.755,190.845,146.581,191.735z M183.151,195.513c-3.217-2.854-7.979-3.062-12.988-0.421 - c-3.932,2.072-4.486,3.383-3.668,8.859c0.615,4.117,0.633,8.241,0.17,12.367c-0.549,4.886,2.061,8.196,6.949,8.627 - c1.395,0.122,2.814,0.1,4.215,0.007c7.748-0.514,12.066-5.155,11.984-14.666C189.61,205.769,188.155,199.95,183.151,195.513z - M201.89,186.944c-4.242,0.235-8.779,1.029-12.797,3.604c-2.199,1.409-2.303,2.221-0.666,4.001 - c1.701,1.852,2.98,3.914,3.768,6.325c0.916,2.797,0.803,5.7,1.111,8.559c0.504,4.684,3.072,6.054,7.139,3.686 - c3.613-2.104,6.578-4.985,9.293-8.118c1.914-2.207,3.707-4.618,3.795-7.63C213.698,191.755,210.126,186.757,201.89,186.944z - M220.335,172.629c-5.391,2.183-9.75,5.833-13.594,10.127c-0.369,0.413-0.873,0.9-0.619,1.519 - c0.289,0.701,1.008,0.397,1.537,0.401c3.139,0.026,5.914,0.8,7.541,3.771c1.127,2.059,1.541,4.333,1.734,6.652 - c0.039,0.464-0.143,1.079,0.469,1.281c0.576,0.189,0.906-0.316,1.193-0.688c4.242-5.525,7.098-11.66,8.117-17.77 - C226.747,172.854,224.271,171.037,220.335,172.629z M182.751,130.827c-1.328-0.086-1.27,0.688-1.328,1.521 - c-0.252,3.475,2.146,6.811,6.375,7.774c10.227,2.33,19.674,0.672,27.812-6.382c5.035-4.187,8.701-9.353,11.139-15.433 - c-4.23,3.235-8.912,5.578-13.641,7.843C203.28,129.594,193.212,131.516,182.751,130.827z M149.718,124.172 - c0.047,2.834,2,5.207,4.299,5.218c2.219,0.01,4.314-2.548,4.301-5.253c-0.014-2.726-2.057-5.308-4.225-5.339 - C151.714,118.763,149.673,121.272,149.718,124.172z M111.401,159.137c-0.051,2.009,1.639,3.679,3.791,3.751 - c2.871,0.094,6.17-2.843,6.229-5.545c0.047-2.054-1.572-3.662-3.781-3.754C114.634,153.464,111.472,156.276,111.401,159.137z - M126.144,130.436c-0.002-2.961-2.645-5.356-5.9-5.351c-2.461,0.006-4.127,1.461-4.133,3.606 - c-0.006,2.718,2.955,5.332,6.047,5.336C124.728,134.031,126.147,132.754,126.144,130.436z M133.659,183.116 - c0.176,1.788,1.117,2.905,3.1,2.752c2.229-0.052,4.289-2.307,4.217-4.63c-0.061-1.883-1.074-2.937-2.928-2.972 - C135.841,178.227,133.442,180.879,133.659,183.116z M171.858,185.08c-1.689-0.004-2.262,1.368-2.295,2.973 - c0.086,1.795,0.834,3.312,2.783,3.391c1.838,0.075,2.498-1.433,2.418-3.044C174.679,186.62,173.835,185.085,171.858,185.08z - M198.519,180.226c-0.051-1.612-0.791-3.001-2.453-3.111c-1.516-0.101-2.32,1.371-2.27,2.678 - c0.055,1.456,0.699,3.043,2.512,3.127C197.948,182.996,198.472,181.749,198.519,180.226z"/> - </defs> - <use xlink:href="#XMLID_1_" overflow="visible" fill-rule="evenodd" clip-rule="evenodd" fill="#263A21"/> - <clipPath id="XMLID_5_"> - <use xlink:href="#XMLID_1_" overflow="visible"/> - </clipPath> - <path clip-path="url(#XMLID_5_)" fill-rule="evenodd" clip-rule="evenodd" fill="#95C11F" d="M98.671,133.172 - c0-22.575,22.871-40.877,54.146-40.877s56.629,18.302,56.629,40.877c0,12.896,10.336,51.908-24.555,53.768 - c-9.596,0.511-5.561,5.323-12.723,6.297c-2.648,0.358-14.533-2.347-18.15-2.347C122.743,190.89,98.671,155.747,98.671,133.172z" - /> - </g> - </g> -</g> -<g id="Modalitร _Isolamento"> -</g> -</svg> diff --git a/packages/docs/.vuepress/styles/index.styl b/packages/docs/.vuepress/styles/index.styl deleted file mode 100644 index 0dffcaa14..000000000 --- a/packages/docs/.vuepress/styles/index.styl +++ /dev/null @@ -1,123 +0,0 @@ - -/* edit page link */ -.docgen-edit-link{ - float: right; -} - -/* Vuepress demo-block plugin */ -.vuepress-plugin-demo-block__display { - overflow: visible !important; - max-height: none !important; -} -.vuepress-plugin-demo-block__wrapper:hover { - box-shadow: none !important; -} -.vuepress-plugin-demo-block__expand::after { - content: 'Show code'; -} -.vuepress-plugin-demo-block__expand::before { - display: none !important; -} -.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__expand { - color: #445e00; -} -.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover svg { - fill: #445e00 !important; -} - - -/* Vuepress */ -.home { - .hero { - .description { - max-width: 39.5rem !important; - } - .action { - .action-button { - color: #ffffff !important; - } - } - } -} - -// Override Vuepress Theme -.theme-default-content:not(.custom) { - .vuepress-plugin-demo-block__display { - a:hover { - text-decoration: none; - } - } -} -.vuepress-plugin-demo-block__display { - tr:nth-child(2n) { - background-color: transparent; - } - .o-table__tr--selected { - background-color: #445e00!important; - } - th, td { - border-top-width: 0px; - border-left-width: 0px; - border-right-width: 0px; - } -} - -.navbar { - z-index: 35; -} - -.sidebar { - width: 15rem; -} - -a.sidebar-link[href*='#carbonads'] { - display: none !important; -} - -.theme-default-content:not(.custom) { - padding: 2rem 0rem; -} - -@media (max-width: 419px) { - .theme-default-content:not(.custom) { - padding: 1.5rem; - } -} - -.oruga-doc-video { - width: 100%; - max-width: 640px; - height: auto; -} - -.installation-tabs { - border-radius: 6px; - overflow: hidden; -} - -.installation-tabs-content { - background: #282c34; - overflow: hidden; - padding: 0!important; -} - -.installation-tabs-nav-buttons { - display: flex; - background: #282c34; -} - -.installation-tabs-nav-button-default { - outline: 0; - height: 3rem; - width: 4rem - cursor: pointer; - color: white; - border: 1px solid transparent; - background-color: transparent; - align-items: center; -} - -.installation-tabs-nav-button-active-default { - color: #f08d49; - border-bottom: 1px solid #f08d49; -} diff --git a/packages/docs/.vuepress/styles/palette.styl b/packages/docs/.vuepress/styles/palette.styl deleted file mode 100644 index 7c50be953..000000000 --- a/packages/docs/.vuepress/styles/palette.styl +++ /dev/null @@ -1,4 +0,0 @@ - -$accentColor = #445e00 - -$contentWidth = 1024px \ No newline at end of file diff --git a/packages/docs/.vuepress/theme/components/CarbonAds.vue b/packages/docs/.vuepress/theme/components/CarbonAds.vue deleted file mode 100644 index 679f68bf8..000000000 --- a/packages/docs/.vuepress/theme/components/CarbonAds.vue +++ /dev/null @@ -1,67 +0,0 @@ -<template> - <client-only> - <div class="carbon-container" v-if="show"> - <script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CESI42JW&placement=orugaio" id="_carbonads_js"></script> - </div> - </client-only> -</template> -<script> -// https://github.com/vuejs/vuefire/blob/master/packages/documentation/docs/.vuepress/components/CarbonAds.vue -export default { - data () { - return { - show: false - } - }, - watch: { - $route(to, from) { - if (to.path !== from.path && typeof _carbonads === 'object') { - // eslint-disable-next-line no-undef - _carbonads.refresh() - } - } - }, - mounted: function () { - if ((new URL(location.href)).hostname !== "oruga.io") { - return; - } - setTimeout(() => { - this.show = true - setTimeout(() => { - document.querySelectorAll("div[id^=carbonads_]").forEach(el => el.remove()); - }, 1000) - }, 1000) - } -} -</script> -<style lang="stylus"> -div[id^=carbonads_] - display: none; -.carbon-container - align-items: center; - display: flex; - justify-content: center; - max-width: 300px; - min-height: 140px; - min-width: 280px; - font-size 0.75rem - a - color #444 - font-weight normal - display inline - .carbon-img - float left - margin-right 1rem - border 1px solid $borderColor - img - display block - .carbon-poweredby - color #999 - display block - margin-top 0.5em -@media (max-width: $MQMobile) - .carbon-ads - .carbon-img img - width 100px - height 77px -</style> diff --git a/packages/docs/.vuepress/theme/components/Home.vue b/packages/docs/.vuepress/theme/components/Home.vue deleted file mode 100644 index 7fef33884..000000000 --- a/packages/docs/.vuepress/theme/components/Home.vue +++ /dev/null @@ -1,247 +0,0 @@ -<template> - <main - class="home" - :aria-labelledby="data.heroText !== null ? 'main-title' : null" - > - <header class="hero"> - - <img - v-if="data.heroImage" - :src="$withBase(data.heroImage)" - :alt="data.heroAlt || 'hero'" - > - - <h1 - v-if="data.heroText !== null" - id="main-title" - > - {{ data.heroText || $title || 'Hello' }} - </h1> - - <p - v-if="data.tagline !== null" - class="description" - > - {{ data.tagline || $description || 'Welcome to your VuePress site' }} - </p> - - <p - v-if="data.actionText && data.actionLink" - class="action" - > - <NavLink - class="action-button" - :item="actionLink" - /> - </p> - - <div class="ads-centered"> - <CarbonAds /> - </div> - - <div class="versions"> - <div class="version"> - <h2>Vue 2 version</h2> - v.{{pkg.version}} - </div> - <div class="version changelog"> - <h2> - <a href="https://github.com/oruga-ui/oruga/releases"> - Changelog - </a> - </h2> - </div> - <div class="version"> - <h2>Vue 3 version</h2> - v.{{pkgNext.version}} - </div> - </div> - - <p align="center"> - <a href="https://ko-fi.com/orugaui"> - <img style="min-width:32px;height:32px;" src="https://github.githubassets.com/images/modules/site/icons/funding_platforms/ko_fi.svg" />Buy us a coffee โ๏ธ - </a> - <a href="https://liberapay.com/oruga-ui/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a> - </p> - - </header> - - <div - v-if="data.features && data.features.length" - class="features" - > - <div - v-for="(feature, index) in data.features" - :key="index" - class="feature" - > - <h2>{{ feature.title }}</h2> - <p>{{ feature.details }}</p> - </div> - </div> - - <Content class="theme-default-content custom" /> - - <div - v-if="data.footer" - class="footer" - > - {{ data.footer }} - </div> - </main> -</template> - -<script> -import NavLink from '@theme/components/NavLink.vue' -import CarbonAds from '@theme/components/CarbonAds.vue' - - -import pkg from '../../../../oruga/package.json' -import pkgNext from '../../../../oruga-next/package.json' - -export default { - name: 'Home', - - components: { NavLink, CarbonAds }, - - data() { - return { - pkg, - pkgNext - } - }, - - computed: { - data () { - return this.$page.frontmatter - }, - - actionLink () { - return { - link: this.data.actionLink, - text: this.data.actionText - } - } - } -} -</script> - -<style lang="stylus"> -.ads-centered - display: flex - justify-content: center - margin-bottom: 2rem -.home - padding $navbarHeight 2rem 0 - max-width $homePageWidth - margin 0px auto - display block - .hero - text-align center - img - max-width: 100% - max-height 280px - display block - margin 1rem auto 0 - h1 - font-size 3rem - .description, .action - margin 1.8rem auto - .description - max-width 35rem - font-size 1.6rem - line-height 1.3 - color lighten($textColor, 40%) - .action-button - display inline-block - font-size 1.2rem - color #fff - background-color $accentColor - padding 0.8rem 1.6rem - border-radius 4px - transition background-color .1s ease - box-sizing border-box - border-bottom 1px solid darken($accentColor, 10%) - &:hover - background-color lighten($accentColor, 10%) - .features - border-top 1px solid $borderColor - padding 1.2rem 0 - margin-top 1.5rem - display flex - flex-wrap wrap - align-items flex-start - align-content stretch - justify-content space-between - .feature - flex-grow 1 - flex-basis 30% - max-width 30% - h2 - font-size 1.4rem - font-weight 500 - border-bottom none - padding-bottom 0 - color lighten($textColor, 10%) - p - color lighten($textColor, 25%) - .versions - display flex - flex-wrap wrap - align-items flex-start - align-content stretch - justify-content space-between - color lighten($textColor, 10%) - .version - flex-grow 1 - flex-basis 30% - color lighten($textColor, 25%) - h2 - font-size 1.1rem - font-weight 500 - border-bottom none - padding 0 - margin 0 - color lighten($textColor, 10%) - .footer - padding 2.5rem - border-top 1px solid $borderColor - text-align center - color lighten($textColor, 25%) - -@media (max-width: $MQMobile) - .home - .features - flex-direction column - .feature - max-width 100% - padding 0 2.5rem - .versions - flex-direction column - .version - width 100%; - padding .5rem - .changelog - order 2 - -@media (max-width: $MQMobileNarrow) - .home - padding-left 1.5rem - padding-right 1.5rem - .hero - img - max-height 210px - margin 2rem auto 1.2rem - h1 - font-size 2rem - h1, .description, .action - margin 1.2rem auto - .description - font-size 1.2rem - .action-button - font-size 1rem - padding 0.6rem 1.2rem - .feature - h2 - font-size 1.25rem -</style> diff --git a/packages/docs/.vuepress/theme/components/Navbar.vue b/packages/docs/.vuepress/theme/components/Navbar.vue deleted file mode 100644 index 3dffe35ec..000000000 --- a/packages/docs/.vuepress/theme/components/Navbar.vue +++ /dev/null @@ -1,282 +0,0 @@ -<template> - <header class="navbar"> - <SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" /> - - <RouterLink - :to="$localePath" - class="home-link" - > - <img - v-if="$site.themeConfig.logo" - class="logo" - :src="$withBase($site.themeConfig.logo)" - :alt="$siteTitle" - > - <span - v-if="$siteTitle" - ref="siteName" - class="site-name" - :class="{ 'can-hide': $site.themeConfig.logo }" - >{{ $siteTitle }}</span> - </RouterLink> - - <div class="docs-switch-box"> - <o-switch - override - rootClass="navbar-switch" - checkCheckedClass="navbar-switch__check--checked" - checkClass="navbar-switch__check" - checkSwitchClass="navbar-switch__check-switch" - roundedClass="navbar-switch--rounded" - :value="lite" - @input="toggleOrugaStyle" - labelClass="navbar-switch-label"> - Default CSS <a href="/documentation/#oruga-default-stylesheet" title="What does it mean?">[?]</a> - </o-switch> - </div> - - <div - class="links" - :style="linksWrapMaxWidth ? { - 'max-width': linksWrapMaxWidth + 'px' - } : {}" - > - <AlgoliaSearchBox - v-if="isAlgoliaSearch" - :options="algolia" - /> - <SearchBox v-else-if="$site.themeConfig.search !== false && $page.frontmatter.search !== false" /> - <NavLinks class="can-hide" /> - </div> - </header> -</template> - -<script> -import AlgoliaSearchBox from '@AlgoliaSearchBox' -import SearchBox from '@SearchBox' -import SidebarButton from '@theme/components/SidebarButton.vue' -import NavLinks from '@theme/components/NavLinks.vue' - -import toggleStyle from './togglestyles.js' - -export default { - name: 'Navbar', - - components: { - SidebarButton, - NavLinks, - SearchBox, - AlgoliaSearchBox - }, - - data () { - return { - linksWrapMaxWidth: null, - lite: false, - showSwitch: process.env.NODE_ENV === 'production' - } - }, - - computed: { - algolia () { - return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {} - }, - - isAlgoliaSearch () { - return this.algolia && this.algolia.apiKey && this.algolia.indexName - } - }, - - methods: { - toggleOrugaStyle(value, immediate = false) { - this.lite = value - localStorage.setItem('oruga.io_lite', value) - toggleStyle(this.lite, immediate) - } - }, - - mounted () { - const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl - const NAVBAR_VERTICAL_PADDING = parseInt(css(this.$el, 'paddingLeft')) + parseInt(css(this.$el, 'paddingRight')) - const handleLinksWrapWidth = () => { - if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) { - this.linksWrapMaxWidth = null - } else { - this.linksWrapMaxWidth = this.$el.offsetWidth - NAVBAR_VERTICAL_PADDING - - (this.$refs.siteName && this.$refs.siteName.offsetWidth || 0) - } - } - handleLinksWrapWidth() - window.addEventListener('resize', handleLinksWrapWidth, false) - if (typeof window !== 'undefined') { - this.lite = localStorage.getItem('oruga.io_lite') === 'true' - } - } -} - -function css (el, property) { - // NOTE: Known bug, will return 'auto' if style value is 'auto' - const win = el.ownerDocument.defaultView - // null means not to return pseudo styles - return win.getComputedStyle(el, null)[property] -} -</script> - -<style lang="stylus"> - -.navbar-switch { - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - margin-left: -0.25em; - margin-right: -0.25em; - display: inline-flex; - align-items: center; - position: relative; -} -.navbar-switch--primary .navbar-switch__check--checked { - background: #445e00; -} -.navbar-switch--primary-passive .navbar-switch__check:not(.navbar-switch__check--checked) { - background: #445e00; -} -.navbar-switch--danger .navbar-switch__check--checked { - background: #b60000; -} -.navbar-switch--danger-passive .navbar-switch__check:not(.navbar-switch__check--checked) { - background: #b60000; -} -.navbar-switch--warning .navbar-switch__check--checked { - background: #f4c300; -} -.navbar-switch--warning-passive .navbar-switch__check:not(.navbar-switch__check--checked) { - background: #f4c300; -} -.navbar-switch--success .navbar-switch__check--checked { - background: #006724; -} -.navbar-switch--success-passive .navbar-switch__check:not(.navbar-switch__check--checked) { - background: #006724; -} -.navbar-switch--info .navbar-switch__check--checked { - background: #005c98; -} -.navbar-switch--info-passive .navbar-switch__check:not(.navbar-switch__check--checked) { - background: #005c98; -} -.navbar-switch--small { - font-size: 0.75rem; -} -.navbar-switch--medium { - font-size: 1.25rem; -} -.navbar-switch--large { - font-size: 1.5rem; -} -.navbar-switch > * { - margin-left: 0.25em; - margin-right: 0.25em; -} -.navbar-switch--left { - flex-direction: row-reverse; -} -.navbar-switch__check-switch { - content: ""; - display: block; - height: calc((2.75em - 0.2em * 2) / 2); - width: calc((2.75em - 0.2em * 2) / 2); - background: #f5f5f5; - box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05); - transition-property: transform; - transition-duration: 150ms; - transition-timing-function: ease-out; - will-change: transform; - transform-origin: left; -} -.navbar-switch__check { - display: flex; - align-items: center; - flex-shrink: 0; - width: 2.75em; - height: calc(2.75em / 2 + 0.2em); - padding: 0.2em; - background: #b5b5b5; - border-radius: 4px; - transition-property: background; - transition-duration: 150ms; - transition-timing-function: ease-out; -} -.navbar-switch__check--checked { - background: #445e00; -} -.navbar-switch__check--checked .navbar-switch__check-switch { - transform: translate3d(100%, 0, 0); -} -.navbar-switch input[type=checkbox] { - position: absolute; - left: 0; - opacity: 0; - outline: none; - z-index: -1; -} -.navbar-switch--rounded { - border-radius: 9999px; -} -.navbar-switch--disabled { - opacity: 0.5; -} - - -$navbar-vertical-padding = 0.7rem -$navbar-horizontal-padding = 1.5rem - -.navbar - padding $navbar-vertical-padding $navbar-horizontal-padding - line-height $navbarHeight - 1.4rem - .logo - height $navbarHeight - 1.4rem - min-width $navbarHeight - 1.4rem - margin-right 0.8rem - vertical-align top - .site-name - font-size 1.3rem - font-weight 600 - color $textColor - position relative - .links - padding-left 1.5rem - box-sizing border-box - background-color white - white-space nowrap - font-size 0.9rem - position absolute - right $navbar-horizontal-padding - top $navbar-vertical-padding - display flex - .search-box - flex: 0 0 auto - vertical-align top - .docs-switch-box - display inline - margin-left 0.8rem - -.navbar-switch-label - font-weight 500 - -@media (max-width: $MQMobile) - .navbar - padding-left 4rem - .can-hide - display none - .links - padding-left 1.5rem - .site-name - width calc(100vw - 9.4rem) - overflow hidden - white-space nowrap - text-overflow ellipsis -</style> diff --git a/packages/docs/.vuepress/theme/components/togglestyles.js b/packages/docs/.vuepress/theme/components/togglestyles.js deleted file mode 100644 index 50c439a55..000000000 --- a/packages/docs/.vuepress/theme/components/togglestyles.js +++ /dev/null @@ -1,30 +0,0 @@ -export default (value, immediate = false) => { - setTimeout(() => { - // switch style - if (value) { - let style = document.getElementById('orugacss-lite') - let styleToRemove = document.getElementById('orugacss') - style = document.createElement('link') - style.id = 'orugacss-lite' - style.type = "text/css" - style.rel = "stylesheet" - style.href = `${location.origin}/cdn/oruga.min.css` - document.head.appendChild(style) - setTimeout(() => { - if (styleToRemove) document.head.removeChild(styleToRemove) - }, 100); - } else { - let style = document.getElementById('orugacss') - let styleToRemove = document.getElementById('orugacss-lite') - style = document.createElement('link') - style.id = 'orugacss' - style.type = "text/css" - style.rel = "stylesheet" - style.href = `${location.origin}/cdn/oruga-full-vars.min.css` - document.head.appendChild(style) - setTimeout(() => { - if (styleToRemove) document.head.removeChild(styleToRemove) - }, 100); - } - }, immediate ? 0 : 250) -} diff --git a/packages/docs/.vuepress/theme/index.js b/packages/docs/.vuepress/theme/index.js deleted file mode 100644 index 59e3ab039..000000000 --- a/packages/docs/.vuepress/theme/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extend: '@vuepress/theme-default' -} diff --git a/packages/docs/README.md b/packages/docs/README.md deleted file mode 100644 index ee5c4e923..000000000 --- a/packages/docs/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -home: true -heroImage: logo.png -heroAlt: oruga -tagline: Oruga UI is like a caterpillar, minimal and yet functional. It's in your hands turning it into a butterfly -actionText: (๐) => ๐ฆ -actionLink: /documentation/ -features: - - title: CSS framework agnostic - details: No dependency on a specific CSS framework/library but you can easily integrate the components with one of them because they are fully customizable in different ways - - title: Components with steroids - details: Most of the components aren't a simple wrapper of native elements but they add new and custom features - - title: Lightweight - details: No other internal dependency (except for Vue.js) and import only components that you need -footer: MIT Licensed - Copyright ยฉ 2020 - Walter Tommasi ---- diff --git a/packages/docs/components/Autocomplete.md b/packages/docs/components/Autocomplete.md deleted file mode 100644 index fab27732a..000000000 --- a/packages/docs/components/Autocomplete.md +++ /dev/null @@ -1,551 +0,0 @@ ---- -title: Autocomplete ---- - -# Autocomplete - -> Extended input that provide suggestions while the user types - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/autocomplete/examples/Autocomplete.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a JS framework"> - <o-autocomplete rounded expanded v-model="name" :data="filteredDataArray" placeholder="e.g. jQuery" icon="search" clearable @select="option => selected = option"> - <template slot="empty">No results found</template> - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - data: ['Angular', 'Angular 2', 'Aurelia', 'Backbone', 'Ember', 'jQuery', 'Meteor', 'Node.js', 'Polymer', 'React', 'RxJS', 'Vue.js'], - name: '', - selected: null - } - }, - computed: { - filteredDataArray() { - return this.data.filter(option => { - return ( - option - .toString() - .toLowerCase() - .indexOf(this.name.toLowerCase()) >= 0 - ) - }) - } - } - } -</script> -``` - -::: - -### Object array - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-switch v-model="openOnFocus">Open dropdown on focus</o-switch> - <o-switch v-model="keepFirst">Keep-first</o-switch> - </o-field> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a name"> - <o-autocomplete - v-model="name" - placeholder="e.g. Anne" - :keep-first="keepFirst" - :open-on-focus="openOnFocus" - :data="filteredDataObj" - field="user.first_name" - @select="option => selected = option" - > - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - const data = [ - { id: 1, user: { first_name: 'Jesse', last_name: 'Simmons' }, date: '2016/10/15 13:43:27', gender: 'Male' }, - { id: 2, user: { first_name: 'John', last_name: 'Jacobs' }, date: '2016/12/15 06:00:53', gender: 'Male' }, - { id: 3, user: { first_name: 'Tina', last_name: 'Gilbert' }, date: '2016/04/26 06:26:28', gender: 'Female' }, - { id: 4, user: { first_name: 'Clarence', last_name: 'Flores' }, date: '2016/04/10 10:28:46', gender: 'Male' }, - { id: 5, user: { first_name: 'Anne', last_name: 'Lee' }, date: '2016/12/06 14:38:38', gender: 'Female' }, - { id: 6, user: { first_name: 'Sara', last_name: 'Armstrong' }, date: '2016/09/23 18:50:04', gender: 'Female' }, - { id: 7, user: { first_name: 'Anthony', last_name: 'Webb' }, date: '2016/08/30 23:49:38', gender: 'Male' }, - { id: 8, user: { first_name: 'Andrew', last_name: 'Greene' }, date: '2016/11/20 14:57:47', gender: 'Male' }, - { id: 9, user: { first_name: 'Russell', last_name: 'White' }, date: '2016/07/13 09:29:49', gender: 'Male' }, - { id: 10, user: { first_name: 'Lori', last_name: 'Hunter' }, date: '2016/12/09 01:44:05', gender: 'Female' }, - { id: 11, user: { first_name: 'Ronald', last_name: 'Wood' }, date: '2016/12/04 02:23:48', gender: 'Male' }, - { id: 12, user: { first_name: 'Michael', last_name: 'Harper' }, date: '2016/07/27 13:28:15', gender: 'Male' }, - { id: 13, user: { first_name: 'George', last_name: 'Dunn' }, date: '2017/03/07 12:26:52', gender: 'Male' }, - { id: 14, user: { first_name: 'Eric', last_name: 'Rogers' }, date: '2016/06/07 05:41:52', gender: 'Male' }, - { id: 15, user: { first_name: 'Juan', last_name: 'Meyer' }, date: '2017/02/01 04:56:34', gender: 'Male' }, - { id: 16, user: { first_name: 'Silvia', last_name: 'Rosa' }, date: '2017/01/26 11:50:04', gender: 'Female' }, - { id: 17, user: { first_name: 'Lori', last_name: 'Cunningham' }, date: '2016/05/01 10:00:56', gender: 'Female' }, - { id: 18, user: { first_name: 'Charles', last_name: 'Graham' }, date: '2016/05/31 06:43:30', gender: 'Male' }, - { id: 19, user: { first_name: 'Henry', last_name: 'Morrison' }, date: '2016/09/27 16:15:44', gender: 'Male' }, - { id: 20, user: { first_name: 'Albert', last_name: 'Mendoza' }, date: '2016/08/08 05:29:24', gender: 'Male' }, - { id: 21, user: { first_name: 'Ruby', last_name: 'Snyder' }, date: '2017/04/01 12:04:39', gender: 'Female' }, - { id: 22, user: { first_name: 'Jesse', last_name: 'Warren' }, date: '2016/08/20 01:36:38', gender: 'Male' }, - { id: 23, user: { first_name: 'Carlos', last_name: 'Ferguson' }, date: '2016/05/31 10:40:29', gender: 'Male' }, - { id: 24, user: { first_name: 'Melissa', last_name: 'Peters' }, date: '2016/07/23 00:41:54', gender: 'Female' }, - { id: 25, user: { first_name: 'Arthur', last_name: 'Garza' }, date: '2017/03/11 14:11:37', gender: 'Male' }, - { id: 26, user: { first_name: 'Joe', last_name: 'Berry' }, date: '2016/07/09 15:16:56', gender: 'Male' }, - { id: 27, user: { first_name: 'Joseph', last_name: 'Bishop' }, date: '2016/10/04 19:44:54', gender: 'Male' }, - { id: 28, user: { first_name: 'Sarah', last_name: 'Harper' }, date: '2016/09/23 05:09:11', gender: 'Female' }, - { id: 29, user: { first_name: 'Christopher', last_name: 'Fuller' }, date: '2016/04/12 00:05:35', gender: 'Male' }, - { id: 30, user: { first_name: 'Alan', last_name: 'Mendoza' }, date: '2016/04/22 10:48:02', gender: 'Male' }, - { id: 31, user: { first_name: 'James', last_name: 'Davis' }, date: '2017/01/16 15:17:03', gender: 'Male' }, - { id: 32, user: { first_name: 'Scott', last_name: 'Welch' }, date: '2016/10/04 23:31:51', gender: 'Male' }, - { id: 33, user: { first_name: 'Mildred', last_name: 'Myers' }, date: '2016/11/23 13:46:18', gender: 'Female' }, - { id: 34, user: { first_name: 'Victor', last_name: 'Martinez' }, date: '2016/04/06 17:05:07', gender: 'Male' }, - { id: 35, user: { first_name: 'Susan', last_name: 'Medina' }, date: '2016/12/09 10:33:37', gender: 'Female' }, - { id: 36, user: { first_name: 'Judy', last_name: 'Long' }, date: '2016/07/26 16:19:04', gender: 'Female' }, - { id: 37, user: { first_name: 'Joan', last_name: 'Myers' }, date: '2016/09/22 04:55:54', gender: 'Female' }, - { id: 38, user: { first_name: 'Rachel', last_name: 'Gonzales' }, date: '2016/07/15 13:56:38', gender: 'Female' }, - { id: 39, user: { first_name: 'Roger', last_name: 'Hunt' }, date: '2016/08/14 10:43:11', gender: 'Male' }, - { id: 40, user: { first_name: 'Dorothy', last_name: 'Howard' }, date: '2016/06/19 05:34:49', gender: 'Female' }, - { id: 41, user: { first_name: 'Eugene', last_name: 'Lynch' }, date: '2016/12/24 08:19:24', gender: 'Male' }, - { id: 42, user: { first_name: 'Kathy', last_name: 'Webb' }, date: '2017/04/01 21:09:05', gender: 'Female' }, - { id: 43, user: { first_name: 'Antonio', last_name: 'White' }, date: '2017/02/10 06:51:20', gender: 'Male' }, - { id: 44, user: { first_name: 'Louis', last_name: 'Spencer' }, date: '2016/10/08 02:20:22', gender: 'Male' }, - { id: 45, user: { first_name: 'Andrea', last_name: 'Marshall' }, date: '2016/09/04 10:59:57', gender: 'Female' }, - { id: 46, user: { first_name: 'Eugene', last_name: 'Sims' }, date: '2017/03/15 06:39:48', gender: 'Male' }, - { id: 47, user: { first_name: 'Mildred', last_name: 'Gibson' }, date: '2016/04/18 06:43:54', gender: 'Female' }, - { id: 48, user: { first_name: 'Joan', last_name: 'Arnold' }, date: '2016/12/16 04:52:23', gender: 'Female' }, - { id: 49, user: { first_name: 'Jesse', last_name: 'Schmidt' }, date: '2016/06/11 02:44:33', gender: 'Male' }, - { id: 50, user: { first_name: 'David', last_name: 'Frazier' }, date: '2017/02/15 21:46:30', gender: 'Male' }, - { id: 51, user: { first_name: 'Nicholas', last_name: 'Howell' }, date: '2016/11/01 15:08:31', gender: 'Male' }, - { id: 52, user: { first_name: 'Douglas', last_name: 'Chapman' }, date: '2017/02/08 03:33:24', gender: 'Male' }, - { id: 53, user: { first_name: 'Bruce', last_name: 'Simmons' }, date: '2016/07/14 12:11:17', gender: 'Male' }, - { id: 54, user: { first_name: 'Antonio', last_name: 'George' }, date: '2016/11/07 19:12:55', gender: 'Male' }, - { id: 55, user: { first_name: 'Chris', last_name: 'Marshall' }, date: '2016/07/03 12:11:45', gender: 'Male' }, - { id: 56, user: { first_name: 'Ashley', last_name: 'Hudson' }, date: '2016/10/14 21:08:05', gender: 'Female' }, - { id: 57, user: { first_name: 'Alan', last_name: 'Edwards' }, date: '2017/03/22 21:10:25', gender: 'Male' }, - { id: 58, user: { first_name: 'George', last_name: 'Clark' }, date: '2016/04/28 03:15:05', gender: 'Male' }, - { id: 59, user: { first_name: 'Frank', last_name: 'Porter' }, date: '2016/09/08 00:48:14', gender: 'Male' }, - { id: 60, user: { first_name: 'Christopher', last_name: 'Palmer' }, date: '2016/05/24 08:58:12', gender: 'Male' } - ] - - export default { - data() { - return { - data, - keepFirst: false, - openOnFocus: false, - name: '', - selected: null - } - }, - computed: { - filteredDataObj() { - return this.data.filter(option => { - return ( - option.user.first_name - .toString() - .toLowerCase() - .indexOf(this.name.toLowerCase()) >= 0 - ) - }) - } - } - } -</script> -``` - -::: - -### Groups - -::: demo - -```html -<template> - <section> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a food"> - <o-autocomplete v-model="name" group-field="type" group-options="items" open-on-focus :data="filteredDataObj" field="user.first_name" @select="option => (selected = option)"> - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - type: 'Fruit', - items: ['Apple', 'Banana', 'Watermelon'] - }, - { - type: 'Vegetables', - items: ['Carrot', 'Broccoli', 'Cucumber', 'Onion'] - } - ], - name: '', - selected: null - } - }, - computed: { - filteredDataObj() { - const newData = [] - this.data.forEach(element => { - const items = element.items.filter(item => item.toLowerCase().indexOf(this.name.toLowerCase()) >= 0) - if (items.length) { - newData.push({ type: element.type, items }) - } - }) - return newData - } - } - } -</script> -98 -``` - -::: - -### Infinite Scroll - -::: demo - -```html -<template> - <section> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a movie"> - <o-autocomplete - :data="data" - placeholder="e.g. Fight Club" - field="title" - :loading="isFetching" - check-infinite-scroll - :debounce-typing="500" - @typing="getAsyncData" - @select="option => selected = option" - @infinite-scroll="getMoreAsyncData" - > - <template slot-scope="props"> - <div class="media"> - <div class="media-left"> - <img width="32" :src="`https://image.tmdb.org/t/p/w500/${props.option.poster_path}`" /> - </div> - <div class="media-content"> - {{ props.option.title }} - <br /> - <small> Released at {{ props.option.release_date }}, rated <b>{{ props.option.vote_average }}</b> </small> - </div> - </div> - </template> - <template slot="footer"> - <span v-show="page > totalPages" class="has-text-grey"> Thats it! No more movies found. </span> - </template> - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - data: [], - selected: null, - isFetching: false, - name: '', - page: 1, - totalPages: 1 - } - }, - methods: { - getAsyncData(name) { - // String update - if (this.name !== name) { - this.name = name - this.data = [] - this.page = 1 - this.totalPages = 1 - } - // String cleared - if (!name.length) { - this.data = [] - this.page = 1 - this.totalPages = 1 - return - } - // Reached last page - if (this.page > this.totalPages) { - return - } - this.isFetching = true - fetch(`https://api.themoviedb.org/3/search/movie?api_key=bb6f51bef07465653c3e553d6ab161a8&query=${name}&page=${this.page}`) - .then(response => response.json()) - .then(data => { - data.results.forEach(item => this.data.push(item)) - - this.page++ - this.totalPages = data.total_pages - }) - .catch(error => { - throw error - }) - .finally(() => { - this.isFetching = false - }) - }, - getMoreAsyncData() { - this.getAsyncData(this.name) - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_autocomplete.scss) - -<br /> -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-autocomplete v-bind="s" group-field="type" group-options="items" placeholder="e.g. Vue.js" :data="filtered" icon="search" clearable @select="option => selected = option"> - <template slot="empty">No results found</template> - <template slot="header">Header slot (optional)</template> - <template slot="footer">Footer slot (optional)</template> - </o-autocomplete> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - filtered: [ - { - type: 'Frameworks', - items: ['Vue.js'] - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "menuClass", - description: "Class of the autocomplete menu", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "expandedClass", - description: "Class of the autocomplete menu expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - }, - }, - { - class: "menuPositionClass", - description: "Class of the autocomplete menu position", - properties: ["menu-position"], - suffixes: ["auto", "top", "bottom"], - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemClass", - description: "Class of the menu items.", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemHoverClass", - description: "Class of the menu items on hover.", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40, charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false})); - setTimeout(() => { - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40, charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false})); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40, charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false})); - }, 500); - }, - }, - { - class: "itemGroupTitleClass", - description: "Class of the menu items group title.", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemEmptyClass", - description: "Class of the menu empty placeholder item", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "|", char : "|", shiftKey : true})); - }, - }, - { - class: "itemHeaderClass", - description: "Class of the menu header item", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemFooterClass", - description: "Class of the menu footer item", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "inputClasses", - realClass: "inputClasses.rootClass", - description: "Classes to apply on internal input.", - componentRef: "Input" - }, - ], - }; - } -} -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -| animation | Transition name to apply on dropdown list | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> autocomplete: {<br> animation: 'fade'<br>}</code> | -| appendToBody | Append autocomplete content to body | boolean | - | | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| checkInfiniteScroll | Makes the component check if list reached scroll end and emit infinite-scroll event. | boolean | - | | -| clearOnSelect | Clear input text on select | boolean | - | | -| clearable | Add a button/icon to clear the inputed text | boolean | - | | -| clearIcon | Icon name to be added on the clear button | string | - | 'close-circle' | -| confirmKeys | Array of keys (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) which will add a tag when typing (default tab and enter) | array | - | ['Tab', 'Enter'] | -| customFormatter | Function to format an option to a string for display in the input as alternative to field prop) | func | - | | -| data | Options / suggestions | array | - | [] | -| debounceTyping | Number of milliseconds to delay before to emit typing event | number | - | | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| field | Property of the object (if data is array of objects) to use as display text, and to keep track of selected option | string | - | 'value' | -| groupField | Property of the object (if <code>data</code> is array of objects) to use as display text of group | string | - | | -| groupOptions | Property of the object (if <code>data</code> is array of objects) to use as key to get items array of each group, optional | string | - | | -| icon | Icon name to be added | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconRight | Icon name to be added on the right side | string | - | | -| iconRightClickable | Clickable icon right if exists | boolean | - | | -| itemTag | Menu item tag name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> autocomplete: {<br> itemTag: 'div'<br>}</code> | -| keepFirst | The first option will always be pre-selected (easier to just hit enter or tab) | boolean | - | | -| keepOpen | Keep open dropdown list after select | boolean | - | | -| maxHeight | Max height of dropdown content | string\|number | - | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| menuPosition | Position of dropdown | string | `auto`, `top`, `bottom` | 'auto' | -| menuTag | Menu tag name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> autocomplete: {<br> menuTag: 'div'<br>}</code> | -| openOnFocus | Open dropdown list on focus | boolean | - | | -| override | Override classes | boolean | - | false | -| rounded | Makes the element rounded | boolean | - | | -| selectOnClickOutside | Trigger the select event for the first pre-selected option when clicking outside and <code>keep-first</code> is enabled | boolean | - | | -| selectableFooter | Allows the footer in the autocomplete to be selectable | boolean | - | | -| selectableHeader | Allows the header in the autocomplete to be selectable | boolean | - | | -| size | Vertical size of input, optional | string | `small`, `medium`, `large` | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| type | Input type | string | - | 'text' | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| v-model | | number\|string | - | | -| validationMessage | The message which is shown when a validation error occurs | string | - | | - -## Events - -| Event name | Properties | Description | -| ---------------- | --------------------------------------------------------------------------- | ----------- | -| icon-click | | -| blur | | -| focus | | -| invalid | | -| input | | -| select | **selected** `Object` - selected option<br>**event** `Event` - native event | -| select-header | | -| select-footer | | -| infinite-scroll | | -| typing | | -| icon-right-click | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| header | | | -| group | | <br> | -| default | | <br> | -| empty | | | -| footer | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------------ | ------------------------------------------ | -------------------------------------------------------------------- | -| --oruga-autocomplete-item-color | \$autocomplete-item-color | #000000 | -| --oruga-autocomplete-item-disabled-opacity | \$autocomplete-item-disabled-opacity | \$base-disabled-opacity | -| --oruga-autocomplete-item-font-size | \$autocomplete-item-font-size | \$base-font-size | -| --oruga-autocomplete-item-hover-background-color | \$autocomplete-item-hover-background-color | #f5f5f5 | -| --oruga-autocomplete-item-hover-color | \$autocomplete-item-hover-color | #000000 | -| --oruga-autocomplete-item-line-height | \$autocomplete-item-line-height | \$base-line-height | -| --oruga-autocomplete-item-padding | \$autocomplete-item-padding | .375rem 1rem | -| --oruga-autocomplete-menu-background | \$autocomplete-menu-background | #ffffff | -| --oruga-autocomplete-menu-border-radius | \$autocomplete-menu-border-radius | \$base-border-radius | -| --oruga-autocomplete-menu-box-shadow | \$autocomplete-menu-box-shadow | 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) | -| --oruga-autocomplete-menu-margin | \$autocomplete-menu-margin | 0 | -| --oruga-autocomplete-menu-max-height | \$autocomplete-menu-max-height | 200px | -| --oruga-autocomplete-menu-padding | \$autocomplete-menu-padding | .5rem 0 .5rem 0 | -| --oruga-autocomplete-menu-zindex | \$autocomplete-menu-zindex | 20 | diff --git a/packages/docs/components/Button.md b/packages/docs/components/Button.md deleted file mode 100644 index e1e6713ad..000000000 --- a/packages/docs/components/Button.md +++ /dev/null @@ -1,341 +0,0 @@ ---- -title: Button ---- - -# Button - -> The classic button, in different colors, sizes, and states - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/button/examples/Button.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-button @click="clickMe">Click Me</o-button> - </section> -</template> - -<script> - export default { - methods: { - clickMe() { - alert('Clicked!') - } - } - } -</script> -``` - -::: - -### States and Styles - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button variant="primary">Primary</o-button> - <o-button variant="success">Success</o-button> - <o-button variant="danger">Danger</o-button> - <o-button variant="warning">Warning</o-button> - <o-button variant="info">Info</o-button> - </div> - - <div class="buttons"> - <o-button>Normal</o-button> - <o-button disabled>Disabled</o-button> - <o-button rounded>Rounded</o-button> - </div> - - <div class="buttons"> - <o-button variant="primary" outlined>Outlined</o-button> - <o-button variant="primary" inverted>Inverted</o-button> - </div> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Icons - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button size="small" icon-left="plus"> - Add - </o-button> - - <o-button icon-left="plus"> - Add - </o-button> - - <o-button size="medium" icon-left="plus"> - Add - </o-button> - - <o-button size="large" icon-left="plus"> - Add - </o-button> - </div> - - <br /> - - <div class="buttons"> - <o-button variant="danger" icon-left="trash"> - Delete - </o-button> - - <o-button variant="danger" icon-right="trash"> - Delete - </o-button> - - <o-button variant="danger" icon-right="trash" /> - </div> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Tags - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button>Button</o-button> - - <o-button tag="a" href="https://oruga.io" target="_blank"> - Anchor - </o-button> - - <o-button tag="input" native-type="submit" value="Submit input" /> - - <!-- Need vue-router --> - <!-- - <o-button tag="router-link" - to="/home" - variant="info"> - Docs - </o-button> - --> - </div> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_button.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-button v-bind="s">Button</o-button> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "outlinedClass", - description: "Class of the button outlined", - properties: ["outlined"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'primary'; - cmp.data.outlined = true; - }, - }, - { - class: "loadingClass", - description: "Class of the button loading", - properties: ["loading"], - action: (cmp) => { - cmp.data.loading = true; - }, - }, - { - class: "invertedClass", - description: "Class of the button when inverted", - properties: ["inverted"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'primary'; - cmp.data.inverted = true; - }, - }, - { - class: "expandedClass", - description: "Class of the button when expanded", - properties: ["expanded"], - action: (cmp) => { - cmp.data.expanded = true; - }, - }, - { - class: "elementsWrapperClass", - description: "Class of the button elements wrapper", - action: (cmp) => { - cmp.data.expanded = true; - }, - }, - { - class: "roundedClass", - description: "Class of the button when rounded", - properties: ["rounded"], - action: (cmp) => { - cmp.data.rounded = true; - }, - }, - { - class: "disabledClass", - description: "Class of the button when disabled", - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - }, - }, - { - class: "labelClass", - description: "Class of the button label" - }, - { - class: "iconClass", - description: "Class of the button icon", - properties: ["iconLeft", "iconRight"], - action: (cmp) => { - cmp.data['icon-left'] = "plus" - }, - }, - { - class: "iconLeftClass", - description: "Class of the button icon on the left", - properties: ["iconLeft"], - action: (cmp) => { - cmp.data['icon-left'] = "plus" - }, - }, - { - class: "iconRightClass", - description: "Class of the button icon on the right", - properties: ["iconRight"], - action: (cmp) => { - cmp.data['icon-right'] = "plus" - }, - }, - { - class: "sizeClass", - description: "Class of the button size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - }, - }, - { - class: "variantClass", - description: "Class of the button variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - }, - }, - ], - }; - } -} -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ---------- | ---------------------------------------- | ------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| disabled | Button will be disabled | boolean | - | | -| expanded | Button will be expanded (full-width) | boolean | - | | -| iconLeft | Icon name to show on the left | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconRight | Icon name to show on the right | string | - | | -| inverted | | boolean | - | | -| label | Button label, optional when default slot | string | - | | -| loading | Loading style | boolean | - | | -| nativeType | Button type, like native | string | - | 'button' | -| outlined | Outlined style | boolean | - | | -| override | Override classes | boolean | - | false | -| rounded | Rounded style | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> button: {<br> rounded: false<br>}</code> | -| size | Size of button, optional | string | `small`, `medium`, `large` | | -| tag | Button tag name | string | `button`, `a`, `input`, `router-link`, `nuxt-link (or other nuxt alias)` | 'button' | -| variant | Color of the control, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ---------------------------------------- | ---------------------------------- | ----------------------------------- | -| --oruga-button-background-color | \$button-background-color | \$primary | -| --oruga-button-color | \$button-color | \$primary-invert | -| --oruga-button-border-radius | \$button-border-radius | \$base-border-radius | -| --oruga-button-border | \$button-border | 1px solid \$button-background-color | -| --oruga-button-box-shadow | \$button-box-shadow | none | -| --oruga-button-font-weight | \$button-font-weight | 400 | -| --oruga-button-line-height | \$button-line-height | \$base-line-height | -| --oruga-button-margin-icon-to-text | \$button-margin-icon-to-text | .1875em | -| --oruga-button-margin | \$button-margin | 0 | -| --oruga-button-height | \$button-height | \$control-height | -| --oruga-button-padding | \$button-padding | \$control-padding-vertical .75em | -| --oruga-button-rounded-border-radius | \$button-rounded-border-radius | \$base-rounded-border-radius | -| --oruga-button-disabled-opacity | \$button-disabled-opacity | \$base-disabled-opacity | -| --oruga-button-outlined-background-color | \$button-outlined-background-color | transparent | diff --git a/packages/docs/components/Carousel.md b/packages/docs/components/Carousel.md deleted file mode 100644 index 139306874..000000000 --- a/packages/docs/components/Carousel.md +++ /dev/null @@ -1,530 +0,0 @@ ---- -title: Carousel ---- - -# Carousel - -> A Slideshow for cycling images in confined spaces - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/carousel/examples/Carousel.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <o-carousel> - <o-carousel-item v-for="(carousel, i) in carousels" :key="i"> - <section class="ex-slide" :style="{'background-color': carousel.color }"> - <h1>{{carousel.text}}</h1> - </section> - </o-carousel-item> - </o-carousel> -</template> - -<script> - export default { - data() { - return { - carousels: [ - { text: 'Slide 1', color: '#445e00' }, - { text: 'Slide 2', color: '#006724' }, - { text: 'Slide 3', color: '#b60000' }, - { text: 'Slide 4', color: '#f4c300' }, - { text: 'Slide 5', color: '#005c98' } - ] - } - } - } -</script> -``` - -::: - -<style> -.ex-slide { - padding: 9rem 4.5rem; - color: #ffffff; - text-align: center; -} -</style> - -### Carousel List - -::: demo - -```html -<template> - <section> - <div class="example-component"> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="arrow">Arrow</o-switch> - </div> - <div class="control"> - <o-switch v-model="arrowHover" :disabled="!arrow">Arrow on hover</o-switch> - </div> - <div class="control"> - <o-switch v-model="drag">Drag event</o-switch> - </div> - <div class="control"> - <o-switch v-model="repeat">Repeat</o-switch> - </div> - </o-field> - <o-field grouped group-multiline> - <o-field label="Items to Show"> - <o-input type="number" v-model.number="perList" min="1" :max="items.length" /> - </o-field> - <o-field label="Items to List"> - <o-input type="number" v-model.number="increment" min="1" :max="items.length - 1" /> - </o-field> - </o-field> - </div> - <o-carousel v-model="values" :arrow="arrow" :arrow-hover="arrowHover" :items-to-show="perList" :items-to-list="increment" :repeat="repeat" :has-drag="drag"> - <o-carousel-item v-for="(item, i) in items" :key="i"> - <img :src="item.image" /> - </o-carousel-item> - </o-carousel> - </section> -</template> - -<script> - export default { - data() { - return { - arrow: true, - arrowHover: true, - drag: true, - values: 1, - perList: 4, - increment: 1, - repeat: false, - items: [ - { - title: 'Slide 1', - image: 'https://picsum.photos/id/1/1230/500' - }, - { - title: 'Slide 2', - image: 'https://picsum.photos/id/2/1230/500' - }, - { - title: 'Slide 3', - image: 'https://picsum.photos/id/3/1230/500' - }, - { - title: 'Slide 4', - image: 'https://picsum.photos/id/4/1230/500' - }, - { - title: 'Slide 5', - image: 'https://picsum.photos/id/5/1230/500' - }, - { - title: 'Slide 6', - image: 'https://picsum.photos/id/6/1230/500' - }, - { - title: 'Slide 7', - image: 'https://picsum.photos/id/7/1230/500' - } - ] - } - } - } -</script> -``` - -::: - -### Custom As indicators - -::: demo - -```html -<template> - <o-carousel :autoplay="false" :overlay="gallery" @click="switchGallery(true)"> - <o-carousel-item v-for="(item, i) in items" :key="i"> - <a class="image"> - <img :src="item.image" /> - </a> - </o-carousel-item> - - <template #indicators="{ active, switchTo }"> - <o-carousel :value="active" @input="switchTo($event)" v-bind="al" as-indicator> - <o-carousel-item v-for="(item, i) in items" :key="i" item-class="img-indicator" item-active-class="img-indicator-active"> - <img :src="item.image" /> - </o-carousel-item> - </o-carousel> - </template> - <template #overlay> - <o-icon v-if="gallery" icon="times" root-class="ex-close-icon" clickable @click.native="switchGallery(false)" /> - <div style="color: #ffffff; text-align: center"> - Hello, I'm an overlay! - </div> - </template> - </o-carousel> -</template> - -<script> - export default { - data() { - return { - gallery: false, - al: { - itemsToShow: 2, - breakpoints: { - 768: { - itemsToShow: 4 - }, - 960: { - itemsToShow: 6 - } - } - }, - items: [ - { - title: 'Slide 1', - image: 'https://picsum.photos/id/1/1230/500' - }, - { - title: 'Slide 2', - image: 'https://picsum.photos/id/2/1230/500' - }, - { - title: 'Slide 3', - image: 'https://picsum.photos/id/3/1230/500' - }, - { - title: 'Slide 4', - image: 'https://picsum.photos/id/4/1230/500' - }, - { - title: 'Slide 5', - image: 'https://picsum.photos/id/5/1230/500' - }, - { - title: 'Slide 6', - image: 'https://picsum.photos/id/6/1230/500' - }, - { - title: 'Slide 7', - image: 'https://picsum.photos/id/7/1230/500' - } - ] - } - }, - methods: { - switchGallery(value) { - this.gallery = value - if (value) { - document.documentElement.classList.add('o-clipped') - } else { - document.documentElement.classList.remove('o-clipped') - } - } - } - } -</script> - -<style> - .image img { - display: block; - height: auto; - width: 100%; - } - .img-indicator { - filter: grayscale(100%); - } - .img-indicator-active { - filter: grayscale(0%); - } - .ex-close-icon { - position: absolute; - top: 10px; - right: 10px; - color: #ffffff; - z-index: 99; - } -</style> -``` - -::: - -### Custom - -::: demo - -```html -<template> - <section> - <div class="example-component"> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="autoPlay">Autoplay</o-switch> - </div> - <div class="control"> - <o-switch v-model="pauseHover" :disabled="!autoPlay">Pause on hover</o-switch> - </div> - <div class="control"> - <o-switch v-model="drag">Drag event</o-switch> - </div> - <div class="control"> - <o-switch v-model="repeat" :disabled="!autoPlay">Repeat</o-switch> - </div> - </o-field> - <o-field grouped group-multiline> - <o-field label="Value"> - <o-input type="number" v-model.number="carousel" min="0" :max="carousels.length - 1" /> - </o-field> - <o-field label="Interval"> - <o-input type="number" v-model.number="interval" min="0" step="1000" :disabled="!autoPlay" /> - </o-field> - </o-field> - </div> - - <o-carousel v-model="carousel" :has-drag="drag" :autoplay="autoPlay" :pause-hover="pauseHover" :interval="interval" :repeat="repeat"> - <o-carousel-item v-for="(carousel, i) in carousels" :key="i"> - <section class="ex-slide" :style="{'background-color': carousel.color }"> - <h1>{{carousel.title}}</h1> - <o-input :placeholder="carousel.title"></o-input> - <p>A link that <a href="#arrow">goes to arrow</a></p> - </section> - </o-carousel-item> - </o-carousel> - </section> -</template> - -<script> - export default { - data() { - return { - carousel: 0, - animated: 'slide', - drag: false, - autoPlay: false, - pauseHover: false, - pauseInfo: false, - repeat: false, - interval: 3000, - carousels: [ - { text: 'Slide 1', color: '#445e00' }, - { text: 'Slide 2', color: '#006724' }, - { text: 'Slide 3', color: '#b60000' }, - { text: 'Slide 4', color: '#f4c300' }, - { text: 'Slide 5', color: '#005c98' } - ] - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_carousel.scss) - -<br /> -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-carousel v-bind="s"> - <o-carousel-item v-for="(carousel, i) in carousels" :key="i"> - <section class="ex-slide" :style="{'background-color': carousel.color }"> - <h1>{{carousel.text}}</h1> - </section> - </o-carousel-item> - </o-carousel> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - carousels: [ - { text: 'Slide 1', color: '#445e00' }, - { text: 'Slide 2', color: '#006724' }, - { text: 'Slide 3', color: '#b60000' }, - { text: 'Slide 4', color: '#f4c300' }, - { text: 'Slide 5', color: '#005c98' } - ], - subitem: 'carousel-item', - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "overlayClass", - properties: ['overlay'], - description: "Class of the root element in overlay", - action: (cmp) => { - cmp.data.overlay = true; - }, - }, - { - class: "sceneClass", - description: "Class of the wrapper element of carousel items", - }, - { - class: "itemsClass", - description: "Class of slider element", - }, - { - class: "itemsDraggingClass", - description: "Class of slider element on drag", - }, - { - class: "arrowIconClass", - description: "Class of arrow elements", - }, - { - class: "arrowIconPrevClass", - description: "Class of prev arrow element", - }, - { - class: "arrowIconNextClass", - description: "Class of next arrow element", - }, - { - class: "indicatorsClass", - description: "Class of indicators element", - }, - { - class: "indicatorsInsideClass", - properties: ['indicatorInside'], - description: "Class of indicators element when inside", - action: (cmp) => { - cmp.data.indicatorInside = true; - } - }, - { - class: "indicatorsInsidePositionClass", - properties: ['indicatorInside', 'indicatorPosition'], - description: "Class of indicators element when inside and position", - action: (cmp) => { - cmp.data.indicatorInside = true; - cmp.data.indicatorPosition = 'top'; - } - }, - { - class: "indicatorItemClass", - description: "Class of indicator item element", - }, - { - class: "indicatorItemActiveClass", - description: "Class of indicator element when is active", - }, - { - class: "indicatorItemStyleClass", - properties: ['indicatorStyle'], - description: "Class of indicator element to separate different styles", - action: (cmp) => { - cmp.data.indicatorStyle = 'lines'; - } - }, - { - class: "itemClass", - description: "Class of carousel item", - }, - { - class: "itemActiveClass", - description: "Class of carousel item when is active", - }, - ], - }; - } -} -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ----------------- | ---------------- | ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| arrow | | boolean | - | true | -| arrowHover | | boolean | - | true | -| asIndicator | | boolean | - | | -| autoplay | | boolean | - | false | -| breakpoints | | object | - | {} | -| hasDrag | | boolean | - | true | -| iconNext | | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> carousel: {<br> iconNext: 'chevron-right'<br>}</code> | -| iconPack | | string | - | | -| iconPrev | | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> carousel: {<br> iconPrev: 'chevron-left'<br>}</code> | -| iconSize | | string | - | | -| indicator | | boolean | - | true | -| indicatorInside | | boolean | - | false | -| indicatorMode | | string | - | 'click' | -| indicatorPosition | | string | - | 'bottom' | -| indicatorStyle | | string | - | 'dots' | -| interval | | number | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> carousel: {<br> interval: 3500<br>}</code> | -| itemsToList | | number | - | 1 | -| itemsToShow | | number | - | 1 | -| overlay | | boolean | - | | -| override | Override classes | boolean | - | false | -| pauseHover | | boolean | - | false | -| repeat | | boolean | - | false | -| value | | number | - | 0 | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| scroll | | -| input | | - -## Slots - -| Name | Description | Bindings | -| ---------- | ----------- | ------------ | -| default | | | -| arrow | | <br><br><br> | -| indicators | | <br><br> | -| indicator | | | -| overlay | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| --------------------------------------------- | --------------------------------------- | ------------------------------------- | -| --oruga-carousel-arrow-background | \$carousel-arrow-background | \$white | -| --oruga-carousel-arrow-color | \$carousel-arrow-color | \$primary | -| --oruga-carousel-arrow-icon-spaced | \$carousel-arrow-icon-spaced | 1.5rem | -| --oruga-carousel-arrow-top | \$carousel-arrow-top | 50% | -| --oruga-carousel-arrow-size | \$carousel-arrow-size | 1.5rem | -| --oruga-carousel-arrow-border-radius | \$carousel-arrow-border-radius | \$base-rounded-border-radius | -| --oruga-carousel-arrow-border | \$carousel-arrow-border | 1px solid \$carousel-arrow-background | -| --oruga-carousel-arrow-transition | \$carousel-arrow-transition | $speed-slow $easing | -| --oruga-carousel-indicators-background | \$carousel-indicators-background | rgba(\$white , 0.50) | -| --oruga-carousel-indicators-padding | \$carousel-indicators-padding | .5rem | -| --oruga-carousel-indicator-margin | \$carousel-indicator-margin | 0 .5rem 0 0 | -| --oruga-carousel-indicator-color | \$carousel-indicator-color | \$primary | -| --oruga-carousel-indicator-background | \$carousel-indicator-background | \$white | -| --oruga-carousel-indicator-border | \$carousel-indicator-border | 1px solid \$carousel-indicator-color | -| --oruga-carousel-indicator-active-background | \$carousel-indicator-active-background | \$carousel-indicator-color | -| --oruga-carousel-indicator-active-border | \$carousel-indicator-active-border | 1px solid \$carousel-indicator-color | -| --oruga-carousel-indicator-transition | \$carousel-indicator-transition | $speed-slow $easing | -| --oruga-carousel-indicator-size | \$carousel-indicator-size | 10px | -| --oruga-carousel-indicator-dots-border-radius | \$carousel-indicator-dots-border-radius | \$base-border-radius | -| --oruga-carousel-indicator-lines-height | \$carousel-indicator-lines-height | 5px | -| --oruga-carousel-indicator-lines-width | \$carousel-indicator-lines-width | 25px | -| --oruga-carousel-items-transition | \$carousel-items-transition | all \$speed-slower ease-out 0s | -| --oruga-carousel-item-border | \$carousel-item-border | 2px solid transparent | -| --oruga-carousel-overlay-background | \$carousel-overlay-background | hsla(0,0%,4%,.86) | -| --oruga-carousel-overlay-zindex | \$carousel-overlay-zindex | 40 | diff --git a/packages/docs/components/Checkbox.md b/packages/docs/components/Checkbox.md deleted file mode 100644 index 0f564d3ce..000000000 --- a/packages/docs/components/Checkbox.md +++ /dev/null @@ -1,287 +0,0 @@ ---- -title: Checkbox ---- - -# Checkbox - -> Select a single or grouped options - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/checkbox/examples/Checkbox.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <div class="field"> - <o-checkbox>Basic</o-checkbox> - </div> - <div class="field"> - <o-checkbox v-model="checkbox"> - {{ checkbox }} - </o-checkbox> - </div> - <div class="field"> - <o-checkbox v-model="checkboxCustom" true-value="Yes" false-value="No"> - {{ checkboxCustom }} - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :indeterminate="true"> - Indeterminate - </o-checkbox> - </div> - <div class="field"> - <o-checkbox disabled>Disabled</o-checkbox> - </div> - </section> -</template> - -<script> - export default { - data() { - return { - checkbox: false, - checkboxCustom: 'Yes' - } - } - } -</script> -``` - -::: - -### Variants - -::: demo - -```html -<template> - <section> - <div class="field"> - <o-checkbox :value="true"> - Default - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" variant="primary"> - Primary - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" variant="info"> - Info - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" variant="success"> - Success - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" variant="danger"> - Danger - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" variant="warning"> - Warning - </o-checkbox> - </div> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Array - -::: demo - -```html -<template> - <section> - <div class="block"> - <o-checkbox v-model="checkboxGroup" native-value="Silver"> - Silver - </o-checkbox> - <o-checkbox v-model="checkboxGroup" native-value="Flint"> - Flint - </o-checkbox> - <o-checkbox v-model="checkboxGroup" native-value="Vane"> - Vane - </o-checkbox> - <o-checkbox v-model="checkboxGroup" native-value="Billy" disabled> - Billy - </o-checkbox> - </div> - <p class="content"> - <b>Selection:</b> - {{ checkboxGroup }} - </p> - </section> -</template> - -<script> - export default { - data() { - return { - checkboxGroup: ['Flint'] - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_checkbox.scss) - -<br /> -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-checkbox v-model="s.checkbox" v-bind="s">Checkbox</o-checkbox> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - -export default { - data() { - return { - inspectData: [ - { - class: 'rootClass', - description : 'Class of the root element' - }, - { - class: 'labelClass', - description : 'Class of the checkbox label' - }, - { - class: 'checkClass', - description : 'Class of the checkbox' - }, - { - class: 'checkedClass', - description : 'Class of the root element when checked', - action: (cmp) => { - cmp.data.checkbox = true; - } - }, - { - class: 'checkCheckedClass', - description : 'Class of the checkbox when checked', - action: (cmp) => { - cmp.data.checkbox = true; - } - }, - { - class: 'checkIndeterminateClass', - description : 'Class when checkbox is indeterminate', - properties: ["indeterminate"], - action: (cmp) => { - cmp.data.indeterminate = true; - } - }, - { - class: 'sizeClass', - description : 'Class of the checkbox size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: 'disabledClass', - description : 'Class when checkbox is disabled', - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: 'variantClass', - description : 'Class of the checkbox variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - } - ] - } - } -} -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| -------------- | ------------------------------------------------------------------------------------ | ------------------------------ | ------------------------------------------------------------------------------- | ------- | -| ariaLabelledby | Accessibility label to establish relationship between the checkbox and control label | string | - | | -| autocomplete | | string | - | | -| disabled | Same as native disabled | boolean | - | | -| falseValue | Overrides the returned value when it's not checked | string\|number\|boolean | - | false | -| indeterminate | Same as native indeterminate | boolean | - | false | -| name | Same as native name | string | - | | -| nativeValue | Same as native value | string\|number\|boolean\|array | - | | -| override | Override classes | boolean | - | false | -| required | | boolean | - | | -| size | Size of the control, optional | string | `small`, `medium`, `large` | | -| trueValue | Overrides the returned value when it's checked | string\|number\|boolean | - | true | -| v-model | | string\|number\|boolean\|array | - | | -| variant | Color of the control, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------- | ------------------------------------- | ----------------------- | -| --oruga-checkbox-active-background-color | \$checkbox-active-background-color | \$primary | -| --oruga-checkbox-background-color | \$checkbox-background-color | \$primary | -| --oruga-checkbox-border-color | \$checkbox-border-color | \$primary | -| --oruga-checkbox-border-radius | \$checkbox-border-radius | \$base-border-radius | -| --oruga-checkbox-border-width | \$checkbox-border-width | 2px | -| --oruga-checkbox-checked-box-shadow-length | \$checkbox-checked-box-shadow-length | 0 0 0.5em | -| --oruga-checkbox-checked-box-shadow-opacity | \$checkbox-checked-box-shadow-opacity | 0.8 | -| --oruga-checkbox-checkmark-color | \$checkbox-checkmark-color | \$primary-invert | -| --oruga-checkbox-disabled-opacity | \$checkbox-disabled-opacity | \$base-disabled-opacity | -| --oruga-checkbox-label-padding | \$checkbox-label-padding | 0 0 0 0.5em | -| --oruga-checkbox-margin-sibiling | \$checkbox-margin-sibiling | 0.5em | -| --oruga-checkbox-size | \$checkbox-size | 1rem | -| --oruga-checkbox-line-height | \$checkbox-line-height | 1.5 | diff --git a/packages/docs/components/Collapse.md b/packages/docs/components/Collapse.md deleted file mode 100644 index 2529dd056..000000000 --- a/packages/docs/components/Collapse.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Collapse ---- - -# Collapse - -> An easy way to toggle what you want - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/collapse/examples/Collapse.md" class="docgen-edit-link">edit on github</a> - -## Examples - -::: demo - -```html -<template> - <section> - <o-collapse :open="false" aria-id="contentIdForA11y1"> - <template #trigger="props"> - <o-button variant="primary" aria-controls="contentIdForA11y1" :aria-expanded="props.open">Click me!</o-button> - </template> - <div class="notification"> - <h3> - Subtitle - </h3> - <p> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br /> - Nulla accumsan, metus ultrices eleifend gravida, nulla nunc varius lectus, nec rutrum justo nibh eu lectus. <br /> - Ut vulputate semper dui. Fusce erat odio, sollicitudin vel erat vel, interdum mattis neque. - </p> - </div> - </o-collapse> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Accordion - -::: demo - -```html -<template> - <section> - <o-collapse class="card" animation="slide" v-for="(collapse, index) of collapses" :key="index" :open="isOpen == index" @open="isOpen = index"> - <template #trigger="props"> - <div class="card-header" role="button" :aria-controls="'contentIdForA11y5-' + index" :aria-expanded="isOpen"> - <p class="card-header-title"> - {{ collapse.title }} - </p> - <a class="card-header-icon"> - <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon> - </a> - </div> - </template> - <div class="card-content"> - <div class="content"> - {{ collapse.text }} - </div> - </div> - </o-collapse> - </section> -</template> - -<script> - export default { - data() { - return { - isOpen: 0, - collapses: [ - { - title: 'Title 1', - text: 'Text 1' - }, - { - title: 'Title 2', - text: 'Text 2' - }, - { - title: 'Title 3', - text: 'Text 3' - } - ] - } - } - } -</script> - -<style> - .card { - background-color: #fff; - box-shadow: 0 2px 3px hsla(0, 0%, 4%, 0.1), 0 0 0 1px hsla(0, 0%, 4%, 0.1); - color: #4a4a4a; - max-width: 100%; - position: relative; - } - .card-header { - background-color: transparent; - align-items: stretch; - box-shadow: 0 1px 2px hsla(0, 0%, 4%, 0.1); - display: flex; - } - .card-header-title { - align-items: center; - color: #363636; - display: flex; - flex-grow: 1; - font-weight: 700; - padding: 0.75rem; - margin: 0; - } - .card-header-icon { - align-items: center; - cursor: pointer; - display: flex; - padding: 0.75rem; - justify-content: center; - } - .card-content { - padding: 1.5rem; - background-color: transparent; - } -</style> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_collapse.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-collapse - animation="slide" - v-bind="s" - :open="true" - style="border: 1px solid #dfe2e5" - > - <div - slot="trigger" - slot-scope="props" - class="card-header" - role="button" - > - <p class="card-header-title"> - Collapse Title - </p> - <a class="card-header-icon"> - <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon> - </a> - </div> - <div class="card-content"> - <div class="content"> - Collapse Content - </div> - </div> - </o-collapse> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "triggerClass", - description: "Class of the trigger element" - }, - { - class: "contentClass", - description: "Class of the content" - } - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | ---------------------------------------------------------------------------------------------------------------------- | ------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -| animation | Custom animation (transition name) | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> collapse: {<br> animation: 'fade'<br>}</code> | -| ariaId | | string | - | '' | -| open | Whether collapse is open or not, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding | boolean | - | true | -| override | Override classes | boolean | - | false | -| position | Trigger position | string | `top`, `bottom` | 'top' | - -## Events - -| Event name | Properties | Description | -| ----------- | ---------- | ----------- | -| update:open | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| trigger | | | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------ | ------------- | ------- | - diff --git a/packages/docs/components/Datepicker.md b/packages/docs/components/Datepicker.md deleted file mode 100644 index bf746ea56..000000000 --- a/packages/docs/components/Datepicker.md +++ /dev/null @@ -1,1094 +0,0 @@ ---- -title: Datepicker ---- - -# Datepicker - -> An input with a simple dropdown/modal for selecting a date, uses native datepicker for mobile - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/datepicker/examples/Datepicker.md" class="docgen-edit-link">edit on github</a> - -## Examples - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-field> - <o-select v-model="locale" placeholder="Locale"> - <option :value="undefined"></option> - <option value="de-DE">de-DE</option> - <option value="en-CA">en-CA</option> - <option value="en-GB">en-GB</option> - <option value="en-US">en-US</option> - <option value="es-ES">es-ES</option> - <option value="es-MX">es-MX</option> - <option value="fr-CA">fr-CA</option> - <option value="fr-FR">fr-FR</option> - <option value="it-IT">it-IT</option> - <option value="ja-JP">ja-JP</option> - <option value="pt-BR">pt-BR</option> - <option value="ru-RU">ru-RU</option> - </o-select> - </o-field> - <o-field> - <o-switch v-model="showWeekNumber">Show week number</o-switch> - </o-field> - </o-field> - <o-field label="Select a date"> - <o-datepicker v-model="selected" :show-week-number="showWeekNumber" :locale="locale" placeholder="Click to select..." icon="calendar" trap-focus> </o-datepicker> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - selected: new Date(), - showWeekNumber: false, - locale: undefined // Browser locale - } - } - } -</script> -``` - -::: - -### Min/Max date - -::: demo - -```html -<template> - <o-field label="Select a date"> - <o-datepicker placeholder="Click to select..." icon="calendar" :min-date="minDate" :max-date="maxDate"> </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - const today = new Date() - - return { - date: new Date(), - minDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7), - maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7) - } - } - } -</script> -``` - -::: - -### Range - -::: demo - -```html -<template> - <o-field label="Select a date"> - <o-datepicker placeholder="Click to select..." icon="calendar" v-model="dates" range> </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - dates: [] - } - } - } -</script> -``` - -::: - -### Multiple - -::: demo - -```html -<template> - <o-field label="Select a date"> - <o-datepicker placeholder="Click to select..." v-model="dates" multiple> </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - dates: [] - } - } - } -</script> -``` - -::: - -### Trigger - -::: demo - -```html -<template> - <section> - <o-field label="Select a date" grouped> - <o-datepicker v-model="selected" :mobile-native="false"> - <template v-slot:trigger> - <o-button icon-left="calendar" type="primary" /> - </template> - </o-datepicker> - <o-input readonly :value="selectedString" /> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - selected: null - } - }, - computed: { - selectedString() { - return this.selected ? this.selected.toDateString() : '' - } - } - } -</script> -``` - -::: - -### Programmatically - -::: demo - -```html -<template> - <section> - <o-field> - <o-datepicker ref="datepicker" expanded placeholder="Select a date"> </o-datepicker> - <o-button @click="$refs.datepicker.toggle()" icon-left="calendar" type="primary" /> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Footer slot - -::: demo - -```html -<template> - <o-field label="Select a date"> - <o-datepicker v-model="date" :first-day-of-week="1" placeholder="Click to select..."> - <o-button variant="primary" @click="date = new Date()"> - <o-icon icon="calendar"></o-icon> - <span>Today</span> - </o-button> - - <o-button variant="danger" @click="date = null"> - <o-icon icon="times"></o-icon> - <span>Clear</span> - </o-button> - </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - date: new Date() - } - } - } -</script> -``` - -::: - -### Header slot - -::: demo - -```html -<template> - <o-field label="Select a date"> - <o-datepicker :focused-date="date" :first-day-of-week="1" placeholder="Click to select..."> - <template slot="header"> - <o-field> - <o-autocomplete open-on-focus readonly v-model="month" :data="months" field="name" @select="selectMonth"> </o-autocomplete> - <o-button disabled>{{ date.getFullYear() }}</o-button> - </o-field> - </template> - </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - date: new Date(), - month: null, - months: [ - { name: 'January', value: 0 }, - { name: 'February', value: 1 }, - { name: 'March', value: 2 }, - { name: 'April', value: 3 }, - { name: 'May', value: 4 }, - { name: 'June', value: 5 }, - { name: 'July', value: 6 }, - { name: 'August', value: 7 }, - { name: 'September', value: 8 }, - { name: 'October', value: 9 }, - { name: 'November', value: 10 }, - { name: 'December', value: 11 } - ] - } - }, - methods: { - selectMonth(option) { - if (option) { - this.date = new Date(this.date) - this.date.setMonth(option.value) - } - } - }, - mounted() { - this.month = this.months.filter(item => item.value == this.date.getMonth())[0].name - } - } -</script> -``` - -::: - -### Events - -::: demo - -```html -<template> - <span> - <o-field> - <o-switch v-model="bars">Bars</o-switch> - </o-field> - <o-datepicker inline v-model="date" :events="events" :indicators="indicators"> </o-datepicker> - </span> -</template> - -<script> - const thisMonth = new Date().getMonth() - - export default { - computed: { - indicators() { - return this.bars ? 'bars' : 'dots' - } - }, - data() { - return { - date: new Date(2017, thisMonth, 1), - events: [ - new Date(2017, thisMonth, 2), - new Date(2017, thisMonth, 6), - { - date: new Date(2017, thisMonth, 6), - type: 'info' - }, - { - date: new Date(2017, thisMonth, 8), - type: 'danger' - }, - { - date: new Date(2017, thisMonth, 10), - type: 'success' - }, - { - date: new Date(2017, thisMonth, 10), - type: 'link' - }, - new Date(2017, thisMonth, 12), - { - date: new Date(2017, thisMonth, 12), - type: 'warning' - }, - { - date: new Date(2017, thisMonth, 16), - type: 'danger' - }, - new Date(2017, thisMonth, 20), - { - date: new Date(2017, thisMonth, 29), - type: 'success' - }, - { - date: new Date(2017, thisMonth, 29), - type: 'warning' - }, - { - date: new Date(2017, thisMonth, 29), - type: 'info' - } - ], - bars: false - } - } - } -</script> -``` - -::: - -### Month picker - -::: demo - -```html -<template> - <o-field label="Select a month"> - <o-datepicker placeholder="Click to select..." icon="calendar" type="month" v-model="dates"> </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - dates: undefined - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_datepicker.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field label="Select a date"> - <o-datepicker v-bind="s" :events="events" locale="en-GB" placeholder="Click to select a date..." icon="calendar" ref="datepicker"> - Footer - </o-datepicker> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - methods: { - openDatePicker() { - setTimeout(() => { - this.$refs.datepicker.$el.getElementsByClassName('o-input-iconspace-left')[0].click() - }, 500) - } - }, - data() { - return { - events: [ - { - date: new Date(), - type: 'info' - }, - { - date: new Date(), - type: 'warning' - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "sizeClass", - description: "Class of the Datepicker size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - }, - }, - { - class: "boxClass", - description: "Class of the Datepicker box where you choose the date", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "headerClass", - description: "Class of the Datepicker header inside the box", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "headerButtonsClass", - description: "Class of the Datepicker buttons inside the box", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "headerButtonsSizeClass", - description: "Class of the Datepicker buttons inside the box when a size is choosen", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.type = '' - cmp.data.size = 'large'; - this.openDatePicker(); - }, - }, - { - class: "prevBtnClass", - description: "Class of the prev. button inside the Datepicker box", - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "nextBtnClass", - description: "Class of the next button inside the Datepicker box", - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "listsClass", - description: "Class of the month and year selects container inside the Datepicker box", - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "footerClass", - description: "Class of the Datepicker footer", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "tableClass", - description: "Class of the Datepicker table inside the box", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "tableHeadClass", - description: "Class of Datepicker header with days of the week inside the table", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableHeadCellClass", - description: "Class of the cell inside the table header", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableBodyClass", - description: "Class of the table body inside the box", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableRowClass", - description: "Class of the table row", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellClass", - description: "Class of the table cell", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellInvisibleClass", - description: "Class of the table cell when nearby month days are hidden", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.nearbyMonthDays = false - this.openDatePicker(); - } - }, - { - class: "tableCellSelectedClass", - description: "Class of table cell when it's selected", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellFirstSelectedClass", - description: "Class of the first selected table cell when in range", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "tableCellWithinSelectedClass", - description: "Class of the table cells within the range when the range is selected", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "tableCellLastSelectedClass", - description: "Class of the last selected table cell during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellFirstHoveredClass", - description: "Class of the first hovered table cell during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellWithinHoveredClass", - description: "Class of the table cell when hovered during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellLastHoveredClass", - description: "Class of the last table cell hovered during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellTodayClass", - description: "Class of the table cell of the current day", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellSelectableClass", - description: "Class of the table cell that is selectable", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellUnselectableClass", - description: "Class of the table cell that is unselectable", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellNearbyClass", - description: "Class of the table cell when nearby days (prev/next month) are selectable", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.nearbySelectableMonthDays = true - this.openDatePicker(); - } - }, - { - class: "tableCellEventsClass", - description: "Class of the cell of a row when at least one event is present", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventClass", - description: "Class of the event", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventsClass", - description: "Class of the events container", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventVariantClass", - description: "Class of the event indicator when a `variant` is specified", - properties: ["variant in event"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventIndicatorsClass", - description: "Class of the event indicator", - properties: ['indicator'], - suffixes: ['bars', 'dots', '*'], - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.indicators = 'bars' - this.openDatePicker(); - } - }, - { - class: "monthClass", - description: "Class of the Datepicker table inside the box when type is month", - action: (cmp) => { - cmp.data.type = 'month' - this.openDatePicker(); - } - }, - { - class: "monthBodyClass", - description: "Class of the table body inside the box when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthRowClass", - description: "Class of the table row when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellClass", - description: "Class of the table cell when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellInvisibleClass", - description: "Class of the table cell when nearby month days are hidden when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.nearbyMonthDays = false - this.openDatePicker(); - } - }, - { - class: "monthCellSelectedClass", - description: "Class of table cell when it's selected when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellFirstSelectedClass", - description: "Class of the first selected table cell when in range when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "monthCellWithinSelectedClass", - description: "Class of the table cells within the range when the range is selected when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "monthCellLastSelectedClass", - description: "Class of the last selected table cell during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellFirstHoveredClass", - description: "Class of the first hovered table cell during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellWithinHoveredClass", - description: "Class of the table cell when hovered during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellLastHoveredClass", - description: "Class of the last table cell hovered during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellTodayClass", - description: "Class of the table cell of the current day when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellSelectableClass", - description: "Class of the table cell that is selectable when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellUnselectableClass", - description: "Class of the table cell that is unselectable when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellNearbyClass", - description: "Class of the table cell when nearby days (prev/next month) are selectable when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.nearbySelectableMonthDays = true - this.openDatePicker(); - } - }, - { - class: "monthEventsClass", - description: "Class of the events container when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "mobileClass", - description: "Class of the Datepicker when on mobile", - warning: "Switch to mobile view to see it in action!", - action: (cmp) => { - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "inputClasses", - realClass: "inputClasses.rootClass", - description: "Classes to apply on internal input.", - componentRef: "Input" - }, - { - class: "dropdownClasses", - realClass: "dropdownClasses.rootClass", - description: "Classes to apply on dropdown.", - componentRef: "Dropdown", - action: () => { - this.openDatePicker(); - } - }, - { - class: "selectListClasses", - description: "Classes to apply on select list (month and year).", - componentRef: "Select", - action: () => { - this.openDatePicker(); - } - }, - ], - }; - } -} -</script> -<style> -.datepicker__table { - border-collapse: collapse; -} -</style> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------------- | ---------------------------------------------------------------------- | -------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| appendToBody | | boolean | - | | -| ariaNextLabel | | string | - | | -| ariaPreviousLabel | | string | - | | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| closeOnClick | | boolean | - | true | -| dateCreator | | func | - | Default function (see source code) | -| dateFormatter | | func | - | Default function (see source code) | -| dateParser | | func | - | Default function (see source code) | -| dayNames | | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> dayNames: undefined<br>}</code> | -| disabled | | boolean | - | | -| editable | | boolean | - | | -| events | | array | - | | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| firstDayOfWeek | First day of week to display in table header (getDay() of Date Object) | number | `0`, `1`, `2`, `3`, `4`, `5`, `6` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> firstDayOfWeek: 0<br>}</code> | -| focusedDate | | date | - | | -| icon | Icon name to be added | string | - | | -| iconNext | | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> iconNext: 'chevron-right'<br>}</code> | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconPrev | | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> iconPrev: 'chevron-left'<br>}</code> | -| iconRight | Icon name to be added on the right side | string | - | | -| iconRightClickable | Make the icon right clickable | boolean | - | | -| indicators | | string | - | 'dots' | -| inline | | boolean | - | | -| locale | | string\|array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> locale: undefined<br>}</code> | -| maxDate | | date | - | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| minDate | | date | - | | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| mobileModal | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> mobileModal: true<br>}</code> | -| mobileNative | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> mobileNative: true<br>}</code> | -| monthNames | | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> monthNames: undefined<br>}</code> | -| multiple | | boolean | - | false | -| nearbyMonthDays | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> nearbyMonthDays: true<br>}</code> | -| nearbySelectableMonthDays | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> nearbySelectableMonthDays: false<br>}</code> | -| openOnFocus | | boolean | - | | -| override | Override classes | boolean | - | false | -| placeholder | | string | - | | -| position | Optional, position of the datepicker relative to the input | string | `top-right`, `top-left`, `bottom-left` | | -| range | | boolean | - | false | -| rounded | Makes the element rounded | boolean | - | | -| rulesForFirstWeek | | number | - | Default function (see source code) | -| selectableDates | | array\|func | - | | -| showWeekNumber | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> showWeekNumber: false<br>}</code> | -| size | Size of button, optional | string | `small`, `medium`, `large` | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| trapFocus | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> trapFocus: true<br>}</code> | -| type | | string | - | | -| unselectableDates | | array\|func | - | | -| unselectableDaysOfWeek | | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> unselectableDaysOfWeek: undefined<br>}</code> | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| v-model | | date\|array | - | | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| weekNumberClickable | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> weekNumberClickable: false<br>}</code> | -| yearsRange | | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> datepicker: {<br> yearsRange: [-100, 10]<br>}</code> | - -## Events - -| Event name | Properties | Description | -| ---------------- | ---------- | ----------- | -| icon-right-click | | -| range-start | | -| range-end | | -| blur | | -| focus | | -| invalid | | -| input | | -| change-month | | -| change-year | | -| active-change | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| trigger | | | -| header | | | -| table | | | -| footer | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| -------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------ | -| --oruga-datepicker-font-size | \$datepicker-font-size | \$base-font-size | -| --oruga-datepicker-box-line-height | \$datepicker-box-line-height | \$base-line-height | -| --oruga-datepicker-box-padding | \$datepicker-box-padding | .375rem 1rem | -| --oruga-datepicker-header-padding | \$datepicker-header-padding | 0 0 0.875rem 0 | -| --oruga-datepicker-header-margin | \$datepicker-header-margin | 0 0 0.875rem 0 | -| --oruga-datepicker-header-border-bottom | \$datepicker-header-border-bottom | 1px solid \$grey-lighter | -| --oruga-datepicker-footer-padding | \$datepicker-footer-padding | 0.875rem .5rem 0 .5rem | -| --oruga-datepicker-footer-margin | \$datepicker-footer-margin | 0.875rem 0 0.875rem 0 | -| --oruga-datepicker-footer-border-top | \$datepicker-footer-border-top | 1px solid \$grey-lighter | -| --oruga-datepicker-table-head-padding | \$datepicker-table-head-padding | 0 0 0.875rem 0 | -| --oruga-datepicker-table-head-margin | \$datepicker-table-head-margin | 0 0 0.875rem 0 | -| --oruga-datepicker-table-head-border-bottom | \$datepicker-table-head-border-bottom | 1px solid \$grey-lighter | -| --oruga-datepicker-table-head-item-color | \$datepicker-table-head-item-color | \$grey | -| --oruga-datepicker-table-head-item-font-weight | \$datepicker-table-head-item-font-weight | 600 | -| --oruga-datepicker-item-today-border | \$datepicker-item-today-border | solid 1px rgba(\$primary, 0.5) | -| --oruga-datepicker-item-selectable-color | \$datepicker-item-selectable-color | \$grey-dark | -| --oruga-datepicker-item-disabled-color | \$datepicker-item-disabled-color | \$grey-light | -| --oruga-datepicker-item-border-radius | \$datepicker-item-border-radius | \$base-border-radius | -| --oruga-datepicker-item-padding | \$datepicker-item-padding | 0.5rem 0.75rem | -| --oruga-datepicker-item-selected-color | \$datepicker-item-selected-color | \$primary-invert | -| --oruga-datepicker-item-selected-background-color | \$datepicker-item-selected-background-color | \$primary | -| --oruga-datepicker-item-selected-border-radius | \$datepicker-item-selected-border-radius | 0 | -| --oruga-datepicker-item-selected-within-background-color | \$datepicker-item-selected-within-background-color | rgba(\$datepicker-item-selected-background-color, 0.5) | -| --oruga-datepicker-item-hovered-background-color | \$datepicker-item-hovered-background-color | \$grey | -| --oruga-datepicker-item-hovered-color | \$datepicker-item-hovered-color | \$grey-lighter | -| --oruga-datepicker-item-hovered-background-color | \$datepicker-item-hovered-background-color | #f5f5f5 | -| --oruga-datepicker-item-hovered-within-background-color | \$datepicker-item-hovered-within-background-color | rgba(\$datepicker-item-hovered-background-color, 0.5) | -| --oruga-datepicker-item-nearby-color | \$datepicker-item-nearby-color | \$grey-light | -| --oruga-datepicker-events-item-padding | \$datepicker-events-item-padding | .3rem .75rem .75rem | -| --oruga-datepicker-event-background-color | \$datepicker-event-background-color | \$grey-light | -| --oruga-datepicker-event-dots-size | \$datepicker-event-dots-size | .35em | -| --oruga-datepicker-event-dots-margin | \$datepicker-event-dots-margin | 0 .1em | -| --oruga-datepicker-event-bars-height | \$datepicker-event-bars-height | .25em | -| --oruga-datepicker-btn-border-color | \$datepicker-btn-border-color | \$grey-lighter | -| --oruga-datepicker-btn-border-radius | \$datepicker-btn-border-radius | \$base-border-radius | -| --oruga-datepicker-btn-border | \$datepicker-btn-border | 1px solid transparent | -| --oruga-datepicker-btn-color | \$datepicker-btn-color | #363636 | -| --oruga-datepicker-btn-height | \$datepicker-btn-height | 2.25em | -| --oruga-datepicker-btn-hover-border-color | \$datepicker-btn-hover-border-color | \$grey-light | -| --oruga-datepicker-btn-hover-color | \$datepicker-btn-hover-color | #363636 | -| --oruga-datepicker-btn-line-height | \$datepicker-btn-line-height | \$base-line-height | -| --oruga-datepicker-btn-margin | \$datepicker-btn-margin | .25rem | -| --oruga-datepicker-btn-min-width | \$datepicker-btn-min-width | 2.25em | -| --oruga-datepicker-btn-padding | \$datepicker-btn-padding | .5em .5em | diff --git a/packages/docs/components/Datetimepicker.md b/packages/docs/components/Datetimepicker.md deleted file mode 100644 index 2fcd631ed..000000000 --- a/packages/docs/components/Datetimepicker.md +++ /dev/null @@ -1,255 +0,0 @@ ---- -title: Datetimepicker ---- - -# Datetimepicker - -> An input with a simple dropdown/modal for selecting a date and time, uses native datetimepicker for mobile - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/datetimepicker/examples/Datetimepicker.md" class="docgen-edit-link">edit on github</a> - -## Examples - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="showWeekNumber">Show week number</o-switch> - </div> - <div class="control"> - <o-switch v-model="enableSeconds">Enable seconds</o-switch> - </div> - <o-field label="Locale"> - <o-select v-model="locale"> - <option :value="undefined"></option> - <option value="de-DE">de-DE</option> - <option value="en-CA">en-CA</option> - <option value="en-GB">en-GB</option> - <option value="en-US">en-US</option> - <option value="es-ES">es-ES</option> - <option value="es-MX">es-MX</option> - <option value="fr-CA">fr-CA</option> - <option value="fr-FR">fr-FR</option> - <option value="it-IT">it-IT</option> - <option value="ja-JP">ja-JP</option> - <option value="pt-BR">pt-BR</option> - <option value="ru-RU">ru-RU</option> - <option value="zn-CN">zn-CN</option> - </o-select> - </o-field> - <o-field label="Hour format"> - <o-select v-model="hourFormat"> - <option :value="undefined"></option> - <option value="12">12</option> - <option value="24">24</option> - </o-select> - </o-field> - </o-field> - <o-field label="Select datetime"> - <o-datetimepicker rounded placeholder="Click to select..." icon="calendar" :locale="locale" :datepicker="{ showWeekNumber }" :timepicker="{ enableSeconds, hourFormat }"> - </o-datetimepicker> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - showWeekNumber: false, - enableSeconds: false, - hourFormat: undefined, // Browser locale - locale: undefined // Browser locale - } - } - } -</script> -``` - -::: - -### Footer slot - -::: demo - -```html -<template> - <o-field label="Select datetime"> - <o-datetimepicker v-model="datetime" placeholder="Click to select..."> - <div class="buttons-footer"> - <o-button variant="primary" @click="datetime = new Date()"> - <o-icon icon="calendar"></o-icon> - <span>Today</span> - </o-button> - <o-button variant="danger" @click="datetime = null"> - <o-icon icon="times"></o-icon> - <span>Clear</span> - </o-button> - </div> - </o-datetimepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - datetime: new Date() - } - } - } -</script> - -<style> - .buttons-footer { - margin-top: 1rem; - } -</style> -``` - -::: - -### Inline - -::: demo - -```html -<template> - <o-datetimepicker v-model="datetime" inline></o-datetimepicker> -</template> - -<script> - export default { - data() { - return { - datetime: new Date() - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_datetimepicker.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field label="Select datetime"> - <o-datetimepicker - v-bind="s" - placeholder="Click to select..." - icon="calendar" - horizontal-time-picker - ref="datetimepicker" - > - </o-datetimepicker> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - methods: { - openDatetimePicker() { - setTimeout(() => { - this.$refs.datetimepicker.$el.getElementsByClassName('o-drop__trigger')[0].click() - }, 500) - } - }, - data() { - return { - inspectData: [ - { - class: "datepickerWrapperClass", - description: "Class of the Datepicker wrapper", - }, - { - class: "timepickerWrapperClass", - description: "Class of the Timepicker wrapper", - action: () => { - this.openDatetimePicker(); - } - } - ], - }; - } -} -</script> -<style> -.datepicker__table { - border-collapse: collapse; -} -</style> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------ | ----------------------------------------------------------- | -------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| appendToBody | | boolean | - | | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| datepicker | Properties and classes to bind to the internal DatePicker | object | - | | -| datetimeCreator | | func | - | Default function (see source code) | -| datetimeFormatter | | func | - | | -| datetimeParser | | func | - | | -| disabled | | boolean | - | | -| editable | | boolean | - | false | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| icon | Icon name to be added | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconRight | Icon name to be added on the right side | string | - | | -| iconRightClickable | Make the icon right clickable | boolean | - | | -| inline | | boolean | - | | -| locale | | string\|array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> locale: undefined<br>}</code> | -| maxDatetime | | date | - | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| minDatetime | | date | - | | -| mobileNative | | boolean | - | true | -| openOnFocus | | boolean | - | | -| override | Override classes | boolean | - | false | -| placeholder | | string | - | | -| position | Optional, position of the datepicker relative to the input | string | `top-right`, `top-left`, `bottom-left` | | -| rounded | Makes the element rounded | boolean | - | | -| size | Size of button, optional | string | `small`, `medium`, `large` | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| timepicker | Properties and classes to bind to the internal TimePicker | object | - | | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| value | | date | - | | - -## Events - -| Event name | Properties | Description | -| ---------------- | ---------- | ----------- | -| active-change | | -| icon-right-click | | -| change-month | | -| change-year | | -| blur | | -| focus | | -| invalid | | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------ | ----------- | -------- | -| footer | | | diff --git a/packages/docs/components/Dropdown.md b/packages/docs/components/Dropdown.md deleted file mode 100644 index ec039352f..000000000 --- a/packages/docs/components/Dropdown.md +++ /dev/null @@ -1,465 +0,0 @@ ---- -title: Dropdown ---- - -# Dropdown - -> Dropdowns are very versatile, can used as a quick menu or even like a select for discoverable content - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/dropdown/examples/Dropdown.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-dropdown aria-role="list"> - <o-button variant="primary" slot="trigger" slot-scope="{ active }"> - <span>Click me!</span> - <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon> - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown :triggers="['hover']" aria-role="list"> - <o-button variant="info" slot="trigger"> - <span>Hover me!</span> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown disabled aria-role="list"> - <o-button slot="trigger"> - <span>Disabled</span> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown aria-role="list"> - <div slot="trigger"> - Custom - <o-icon variant="success" icon="caret-down" slot="trigger" role="button"> </o-icon> - </div> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown :triggers="['contextmenu']" aria-role="list"> - <o-button slot="trigger" role="button"> - Right click - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Multiple - -::: demo - -```html -<template> - <section> - <p class="content"><b>selected</b>: {{ selectedOptions }}</p> - <o-dropdown v-model="selectedOptions" multiple aria-role="list"> - <o-button variant="primary" type="button" slot="trigger"> - <span>Selected ({{ selectedOptions.length }})</span> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item value="option1" aria-role="listitem"> - <span>Option 1</span> - </o-dropdown-item> - - <o-dropdown-item value="option2" aria-role="listitem"> - <span>Option 2</span> - </o-dropdown-item> - - <o-dropdown-item value="option3" aria-role="listitem"> - <span>Option 3</span> - </o-dropdown-item> - </o-dropdown> - </section> -</template> - -<script> - export default { - data() { - return { - selectedOptions: [] - } - } - } -</script> -``` - -::: - -### Scrollable - -::: demo - -```html -<template> - <section> - <div class="block"> - <o-field> - <o-switch v-model="isScrollable">Scrollable</o-switch> - </o-field> - </div> - - <br /> - - <o-dropdown :scrollable="isScrollable" :max-height="maxHeight" v-model="currentMenu" aria-role="list"> - <o-button variant="primary" type="button" slot="trigger"> - <template> - <o-icon :icon="currentMenu.icon"></o-icon> - <span>{{currentMenu.text}}</span> - </template> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item v-for="(menu, index) in menus" :key="index" :value="menu" aria-role="listitem"> - <div class="media"> - <o-icon class="media-left" :icon="menu.icon"></o-icon> - <div class="media-content"> - <span>{{menu.text}}</span> - </div> - </div> - </o-dropdown-item> - </o-dropdown> - </section> -</template> - -<script> - export default { - data() { - return { - isScrollable: true, - maxHeight: 200, - currentMenu: { icon: 'users', text: 'People' }, - menus: [ - { icon: 'users', text: 'People' }, - { icon: 'box', text: 'Orders' }, - { icon: 'credit-card', text: 'Payments' }, - { icon: 'dolly', text: 'Logistics' }, - { icon: 'business-time', text: 'Jobs' }, - { icon: 'shopping-cart', text: 'Cart' }, - { icon: 'cog', text: 'Configuration' } - ] - } - } - } -</script> - -<style> - .media { - align-items: flex-start; - display: flex; - text-align: left; - } - .media-content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: left; - overflow-y: hidden; - overflow-x: auto; - } - .media-left { - margin-right: 1rem; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - } -</style> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_dropdown.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-dropdown v-model="currentMenu" v-bind="s" aria-role="list"> - <o-button variant="primary" slot="trigger" slot-scope="{ active }" ref="dropdownbtn"> - <span>Click me!</span> - <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon> - </o-button> - <o-dropdown-item v-bind="s" value="ac1" aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item v-bind="s" value="ac2" aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item v-bind="s" value="ac3" disabled aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - currentMenu: '', - subitem: 'dropdown-item', - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "triggerClass", - description: "Class of the trigger element" - }, - { - class: "menuMobileOverlayClass", - description: "Class of the overlay when on mobile", - warning: "Switch to mobile view to see it in action!", - specificity: "when <b>mobileClass</b> is applied", - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "menuClass", - description: "Class of the dropdown menu", - specificity: "when <b>inlineClass</b> or <b>mobileClass</b> or <b>expandedClass</b> is applied", - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "disabledClass", - description: "Class of dropdown when disabled", - properties: ['disabled'], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "menuActiveClass", - description: "Class of dropdown menu when active", - properties: ['inline'], - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "inlineClass", - description: "Class of dropdown menu when inline", - properties: ['inline'], - action: (cmp) => { - cmp.data.inline = true; - } - }, - { - class: "menuPositionClass", - description: "Class of dropdown menu position", - properties: ['position'], - suffixes: ['top-right', 'top-left', 'bottom-left'], - action: (cmp) => { - cmp.data.position = 'top-right'; - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "mobileClass", - description: "Class of dropdown when on mobile", - warning: "Switch to mobile view to see it in action!", - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "expandedClass", - description: "Class of dropdown when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "itemClass", - description: "Class of the dropdown item", - subitem: true, - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "itemActiveClass", - description: "Class of the dropdown item when active", - subitem: true, - action: () => { - setTimeout(() => { - this.currentMenu = 'ac1' - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "itemDisabledClass", - subitem: true, - description: "Class of the dropdown item when disabled", - properties: ['disabled'], - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -| animation | Custom animation (transition name) | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br> animation: 'fade'<br>}</code> | -| appendToBody | Append dropdown content to body | boolean | - | | -| ariaRole | Role attribute to be passed to list container for better accessibility. Use menu only in situations where your dropdown is related to navigation menus | string | `list`, `menu`, `dialog` | null | -| canClose | Can close dropdown by pressing escape or by clicking outside | array\|boolean | `escape`, `outside` | true | -| closeOnClick | Close dropdown when content is clicked | boolean | - | true | -| disabled | Dropdown disabled | boolean | - | | -| expanded | Dropdown will be expanded (full-width) | boolean | - | | -| inline | Dropdown content (items) are shown inline, trigger is removed | boolean | - | | -| maxHeight | Max height of dropdown content | string\|number | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br> maxHeight: 200<br>}</code> | -| menuTag | Dropdown menu tag name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br> menuTag: 'div'<br>}</code> | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| mobileModal | Dropdown content (items) are shown into a modal on mobile | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br> mobileModal: true<br>}</code> | -| multiple | Allows multiple selections | boolean | - | | -| override | Override classes | boolean | - | false | -| position | Optional, position of the dropdown relative to the trigger | string | `top-right`, `top-left`, `bottom-left` | | -| scrollable | Dropdown content will be scrollable | boolean | - | | -| trapFocus | Trap focus inside the dropdown. | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br> trapFocus: true<br>}</code> | -| triggerTabindex | Set the tabindex attribute on the dropdown trigger div (-1 to prevent selection via tab key) | number | - | 0 | -| triggers | Dropdown will be triggered by any events | array | `click`, `hover`, `contextmenu`, `focus` | ['click'] | -| v-model | | string\|number\|boolean\|object\|array | - | null | - -### Events - -| Event name | Properties | Description | -| ------------- | ---------- | ----------- | -| active-change | | -| change | | -| input | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| trigger | | | -| default | | | - ---- - -# Dropdown Item - -> <CarbonAds /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | ----------------------------------------------------- | -------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- | -| ariaRole | | string | - | '' | -| clickable | Item is clickable and emit an event | boolean | - | true | -| disabled | Item is disabled | boolean | - | | -| override | Override classes | boolean | - | false | -| tabindex | | number\|string | - | 0 | -| tag | Dropdown item tag name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> dropdown: {<br> itemTag: 'div'<br>}</code> | -| value | The value that will be returned on events and v-model | string\|number\|boolean\|object\|array | - | null | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| click | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| --------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------- | -| --oruga-dropdown-disabled-opacity | \$dropdown-disabled-opacity | \$base-disabled-opacity | -| --oruga-dropdown-item-active-background-color | \$dropdown-item-active-background-color | \$primary | -| --oruga-dropdown-item-active-color | \$dropdown-item-active-color | \$primary-invert | -| --oruga-dropdown-item-color | \$dropdown-item-color | #000000 | -| --oruga-dropdown-item-disabled-opacity | \$dropdown-item-disabled-opacity | \$base-disabled-opacity | -| --oruga-dropdown-item-font-size | \$dropdown-item-font-size | \$base-font-size | -| --oruga-dropdown-item-hover-background-color | \$dropdown-item-hover-background-color | #f5f5f5 | -| --oruga-dropdown-item-hover-color | \$dropdown-item-hover-color | #000000 | -| --oruga-dropdown-item-line-height | \$dropdown-item-line-height | \$base-line-height | -| --oruga-dropdown-item-padding | \$dropdown-item-padding | .375rem 1rem | -| --oruga-dropdown-item-font-weight | \$dropdown-item-font-weight | 400 | -| --oruga-dropdown-menu-background | \$dropdown-menu-background | #ffffff | -| --oruga-dropdown-menu-border-radius | \$dropdown-menu-border-radius | \$base-border-radius | -| --oruga-dropdown-menu-box-shadow | \$dropdown-menu-box-shadow | 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) | -| --oruga-dropdown-menu-margin | \$dropdown-menu-margin | 0 | -| --oruga-dropdown-menu-padding | \$dropdown-menu-padding | .5rem 0 .5rem 0 | -| --oruga-dropdown-menu-width | \$dropdown-menu-width | 12rem | -| --oruga-dropdown-menu-zindex | \$dropdown-menu-zindex | 20 | -| --oruga-dropdown-mobile-max-height | \$dropdown-mobile-max-height | calc(100vh - 120px) | -| --oruga-dropdown-mobile-max-width | \$dropdown-mobile-max-width | 460px | -| --oruga-dropdown-mobile-overlay-color | \$dropdown-mobile-overlay-color | rgba(#000000, 0.86) | -| --oruga-dropdown-mobile-overlay-zindex | \$dropdown-mobile-overlay-zindex | 40 | -| --oruga-dropdown-mobile-width | \$dropdown-mobile-width | calc(100vw - 40px) | -| --oruga-dropdown-mobile-zindex | \$dropdown-mobile-zindex | 50 | diff --git a/packages/docs/components/Field.md b/packages/docs/components/Field.md deleted file mode 100644 index d2b8e6aa0..000000000 --- a/packages/docs/components/Field.md +++ /dev/null @@ -1,441 +0,0 @@ ---- -title: Field ---- - -# Field - -> Fields are used to add functionality to controls and to attach/group components and elements together - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/field/examples/Field.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field label="Name"> - <o-input value="Kevin Garvey"></o-input> - </o-field> - - <o-field label="Email" variant="danger" message="This email is invalid"> - <o-input type="email" value="john@" maxlength="30"> </o-input> - </o-field> - - <o-field label="Username" variant="success" message="This username is available"> - <o-input value="johnsilver" maxlength="30"></o-input> - </o-field> - - <o-field label="Password" variant="warning"> - <o-input value="123" type="password" maxlength="30"></o-input> - </o-field> - - <o-field label="Subject"> - <o-select placeholder="Select a subject"> - <option value="1">Option 1</option> - <option value="2">Option 2</option> - </o-select> - </o-field> - - <o-field label="Wrong subject" variant="danger" message="Selected subject is wrong"> - <o-select placeholder="Select a subject"> - <option value="1">Option 1</option> - <option value="2">Option 2</option> - </o-select> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Addons - -::: demo - -```html -<template> - <section> - <o-field variant="danger"> - <o-input placeholder="Search..." type="search" icon="search"> </o-input> - <o-button variant="primary">Search</o-button> - </o-field> - - <o-field> - <o-input placeholder="This is expanded" expanded></o-input> - <o-button>@gmail.com</o-button> - </o-field> - - <hr /> - - <o-field> - <o-select placeholder="Currency"> - <option>$</option> - <option>ยฃ</option> - <option>โฌ</option> - </o-select> - <o-input type="number" placeholder="0,00"></o-input> - <o-button variant="success">Transfer</o-button> - </o-field> - - <o-field> - <o-button icon-left="bold"></o-button> - <o-button icon-left="italic"></o-button> - <o-button icon-left="underline"></o-button> - <o-button icon-left="align-left"></o-button> - <o-button icon-left="align-center"></o-button> - <o-button icon-left="align-right"></o-button> - - <o-input placeholder="Search..." type="search" icon="search"></o-input> - </o-field> - - <o-field> - <o-button variant="primary"> - Button - </o-button> - <o-dropdown> - <o-button variant="primary" icon-right="caret-down" slot="trigger"> </o-button> - - <o-dropdown-item>Action</o-dropdown-item> - <o-dropdown-item>Another action</o-dropdown-item> - <o-dropdown-item>Something else</o-dropdown-item> - </o-dropdown> - </o-field> - - <o-field> - <o-dropdown> - <o-button icon-right="caret-down" slot="trigger"> - Filters - </o-button> - - <o-dropdown-item value="open_issues">Open Issues and Pull Requests</o-dropdown-item> - <o-dropdown-item value="your_issues">Your Issues</o-dropdown-item> - <o-dropdown-item value="pull_requests">Your Pull Requests</o-dropdown-item> - <o-dropdown-item value="everything">Everything</o-dropdown-item> - </o-dropdown> - <o-input icon="search" type="search" placeholder="Search..."></o-input> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Grouped - -::: demo - -```html -<template> - <section> - <o-field grouped variant="danger" message="What do you want to search?"> - <o-input placeholder="Search..."></o-input> - <o-button variant="primary">Search</o-button> - </o-field> - - <o-field grouped message="What do you want to search?"> - <o-input placeholder="Search..." expanded></o-input> - <o-button variant="primary">Search</o-button> - </o-field> - - <o-field grouped group-multiline> - <o-input></o-input> - <o-button>First</o-button> - <o-button>Second</o-button> - <o-button>Third</o-button> - <o-button>Fourth</o-button> - <o-button>Fifth</o-button> - <o-button>Sixth</o-button> - <o-button>Seventh</o-button> - <o-button>Eighth</o-button> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Horizontal - -::: demo - -```html -<template> - <section> - <o-field horizontal label="Subject" variant="danger" message="Please enter a subject"> - <o-input name="subject" expanded></o-input> - </o-field> - - <o-field horizontal label="From"> - <o-input name="name" placeholder="Name" expanded></o-input> - <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input> - </o-field> - - <o-field horizontal label="Topic"> - <o-select placeholder="Select a topic"> - <option value="1">Oruga</option> - <option value="2">Vue.js</option> - <option value="3">UI</option> - </o-select> - </o-field> - - <o-field horizontal label="Message"> - <o-input type="textarea"></o-input> - </o-field> - - <o-field horizontal - ><!-- Label left empty for spacing --> - <o-button variant="primary"> - Send message - </o-button> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Slots - -::: demo - -```html -<template> - <section> - <o-field horizontal> - <template slot="label"> - With tooltip - <o-tooltip label="Help text here for explanation"> - <o-icon size="small" icon="question-circle"></o-icon> - </o-tooltip> - </template> - <o-input size="medium"></o-input> - </o-field> - - <o-field> - <template slot="label"> Label with custom <i>style</i> </template> - <o-input></o-input> - <template slot="message"> Message with custom <b>style</b> </template> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_field.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field v-bind="s" label="Field"> - <o-input v-model="name" name="name" placeholder="Name" expanded></o-input> - <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - name: '', - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "mobileClass", - description: "Class of file component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "horizontalClass", - description: "Class to align label and control in horizontal forms", - properties: ['horizontal'], - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.horizontal = true; - } - }, - { - class: "groupedClass", - description: "Class when fields are grouped together", - properties: ['grouped'], - action: (cmp) => { - cmp.data.grouped = true; - } - }, - { - class: "groupMultilineClass", - description: "Class when fields fill up multiple lines", - properties: ['groupMultiline'], - action: (cmp) => { - cmp.data.groupMultiline = true; - } - }, - { - class: "labelClass", - description: "Class for field label" - }, - { - class: "labelSizeClass", - description: "Class for field label size", - properties: ['labelSize'], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.labelSize = "large"; - } - }, - { - class: "labelHorizontalClass", - description: "Class for field label when horizontal", - properties: ['horizontal'], - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.horizontal = true; - } - }, - { - class: "bodyClass", - description: "Class for field body" - }, - { - class: "bodyHorizontalClass", - description: "Class for field body when horizontal", - specificity: "when <b>mobileClass</b> is applied", - properties: ['horizontal'], - action: (cmp) => { - cmp.data.horizontal = true; - } - }, - { - class: "addonsClass", - description: "Class for components automatically attached together when inside a field", - warning: "Use the <code>expanded</code> prop on the control to fill up the remaining space", - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "messageClass", - description: "Class for the field message", - properties: ["message"], - action: (cmp) => { - cmp.data.message = 'This is a message for the field'; - } - }, - { - class: "variantMessageClass", - description: "Class of the message field variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = "info"; - cmp.data.message = 'This is a message for the field'; - } - }, - { - class: "variantLabelClass", - description: "Class of the label field variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = "info"; - } - }, - { - class: "focusedClass", - description: "Class for the focused field", - warning: "focus event emitted by form elements", - action: (cmp) => { - cmp.$el.focus() - } - }, - { - class: "filledClass", - description: "Class for the filled field", - warning: "when it contains a input", - action: () => { - this.name = 'Oruga' - } - }, - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ---------------- | ---------------------------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------- | ------- | -| addons | Field automatically attach controls together | boolean | - | true | -| groupMultiline | Allow controls to fill up multiple lines, making it responsive | boolean | - | | -| grouped | Direct child components/elements of Field will be grouped horizontally (see which ones at the top of the page) | boolean | - | | -| horizontal | Group label and control on the same line for horizontal forms | boolean | - | | -| label | Field label | string | - | | -| labelFor | Same as native for set on the label | string | - | | -| labelSize | Vertical size of input, optional | string | `small`, `medium`, `large` | | -| message | Help message text | string | - | | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| override | Override classes | boolean | - | false | -| variant | Color of the field and help message, also adds a matching icon, optional. Used by Input, Select and Autocomplete | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| label | | | -| default | | | -| message | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------- | ------------------------------- | ------------ | -| --oruga-field-label-color | \$field-label-color | #363636 | -| --oruga-field-label-font-weight | \$field-label-font-weight | 600 | -| --oruga-field-margin-bottom | \$field-margin-bottom | .75rem | -| --oruga-field-message-font-size | \$field-message-font-size | .75rem | -| --oruga-field-message-margin-top | \$field-message-margin-top | .25rem | -| --oruga-field-margin-right | \$field-margin-right | .37rem | -| --oruga-field-horizontal-label-margin | \$field-horizontal-label-margin | 0 1.5rem 0 0 | diff --git a/packages/docs/components/Icon.md b/packages/docs/components/Icon.md deleted file mode 100644 index 2f397bf98..000000000 --- a/packages/docs/components/Icon.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: Icon ---- - -# Icon - -> Icons take an important role of any application - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/icon/examples/Icon.md" class="docgen-edit-link">edit on github</a> - -## Examples - -Oruga is compatible with both <a href="https://materialdesignicons.com/" target="_blank">Material Design Icons</a> -and <a href="https://fontawesome.com/" target="_blank">FontAwesome 5</a> but you can also add your own custom icon pack.<br> - -### Base - -::: demo - -```html -<template> - <section> - <div class="block"> - <o-icon pack="fas" icon="user" size="small"> </o-icon> - <o-icon pack="fas" icon="home" size="small"> </o-icon> - <o-icon pack="fas" icon="tachometer-alt" size="small"> </o-icon> - </div> - - <div class="block"> - <o-icon pack="fas" icon="user"> </o-icon> - <o-icon pack="fas" icon="home"> </o-icon> - <o-icon pack="fas" icon="tachometer-alt"> </o-icon> - </div> - - <div class="block"> - <o-icon pack="fas" icon="user" size="medium"> </o-icon> - <o-icon pack="fas" icon="home" size="medium"> </o-icon> - <o-icon pack="fas" icon="tachometer-alt" size="medium"> </o-icon> - </div> - - <div class="block"> - <o-icon pack="fas" icon="user" size="large" variant="success"> </o-icon> - <o-icon pack="fas" icon="home" size="large" variant="info"> </o-icon> - <o-icon pack="fas" icon="tachometer-alt" size="large" variant="primary"> </o-icon> - </div> - - <o-button variant="success"> - <o-icon pack="fas" icon="check"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon pack="fas" icon="check"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon pack="fas" icon="sync-alt" spin> </o-icon> - <span>Refresh</span> - </o-button> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Custom icon pack - -<p> - You can also add it during Oruga import as default config. -</p> - -::: tip -Take a look at below example code (click on "Show code") to know all internal icons to replace with the releated icons of your custom icon pack -::: - -::: demo - -```html -<template> - <section> - <div class="block"> - <o-icon pack="ionicons" icon="person" size="small"> </o-icon> - <o-icon pack="ionicons" icon="home" size="small"> </o-icon> - <o-icon pack="ionicons" icon="apps" size="small"> </o-icon> - </div> - - <div class="block"> - <o-icon pack="ionicons" icon="person"> </o-icon> - <o-icon pack="ionicons" icon="home"> </o-icon> - <o-icon pack="ionicons" icon="apps"> </o-icon> - </div> - - <div class="block"> - <o-icon pack="ionicons" icon="person" size="medium"> </o-icon> - <o-icon pack="ionicons" icon="home" size="medium"> </o-icon> - <o-icon pack="ionicons" icon="apps" size="medium"> </o-icon> - </div> - - <div class="block"> - <o-icon pack="ionicons" icon="person" size="large" variant="success"> </o-icon> - <o-icon pack="ionicons" icon="home" size="large" variant="info"> </o-icon> - <o-icon pack="ionicons" icon="apps" size="large" variant="primary"> </o-icon> - </div> - - <o-button variant="primary"> - <o-icon pack="ionicons" icon="checkmark"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon pack="ionicons" icon="checkmark"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon spin pack="ionicons" icon="refresh"> </o-icon> - <span>Refresh</span> - </o-button> - </section> -</template> - -<script> - const customIconConfig = { - iconComponent: undefined, - customIconPacks: { - ionicons: { - sizes: { - default: 'is-size-5', - small: '', - medium: 'is-size-3', - large: 'is-size-1' - }, - iconPrefix: 'ion-md-', - internalIcons: { - check: 'checkmark', - information: 'information', - alert: 'alert', - 'alert-circle': 'alert', - 'arrow-up': 'arrow-up', - 'chevron-right': 'arrow-forward', - 'chevron-left': 'arrow-back', - 'chevron-down': 'arrow-down', - eye: 'eye', - 'eye-off': 'eye-off', - 'caret-down': 'arrow-dropdown', - 'caret-up': 'arrow-dropup', - loading: 'reload-outline', - times: 'close-outline', - 'close-circle': 'close-circle-outline' - } - } - } - } - export default { - data() { - return { - docsIcon: undefined - } - }, - created() { - this.$oruga.config.setOptions(customIconConfig) - }, - beforeCreate() { - // only for docs purpose - const docsIcon = this.$oruga.config.getOptions().iconComponent - if (typeof window !== 'undefined') { - window.requestAnimationFrame(() => { - this.$oruga.config.setOptions({ - iconComponent: docsIcon - }) - }) - } - } - } -</script> - -<style> - @import 'https://unpkg.com/ionicons@4.5.10-0/dist/css/ionicons.min.css'; -</style> -``` - -::: - -### Override icon pack - -<p> - You can also customize some properties of the default icon packs. In this example, default sizes for FontAwesome have been modified. -</p> - -```js -const customIconConfig = { - customIconPacks: { - fas: { - sizes: { - default: null, - small: null, - medium: 'fa-lg', - large: 'fa-2x' - } - } - } -} -export default { - created() { - // only for docs purpose, you can set in globally - this.$oruga.config.setOptions(customIconConfig) - } -} -``` - -### Custom icon component - -::: tip -You can set the `iconComponent` config option to render icons with the vue-fontawesome component (it should work with other Vue icon components as well). -::: - -```js -import { library } from '@fortawesome/fontawesome-svg-core' -// internal icons -import { - faCheck, - faCheckCircle, - faInfoCircle, - faExclamationTriangle, - faExclamationCircle, - faArrowUp, - faAngleRight, - faAngleLeft, - faAngleDown, - faEye, - faEyeSlash, - faCaretDown, - faCaretUp -} from '@fortawesome/free-solid-svg-icons' -import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' - -library.add( - faCheck, - faCheckCircle, - faInfoCircle, - faExclamationTriangle, - faExclamationCircle, - faArrowUp, - faAngleRight, - faAngleLeft, - faAngleDown, - faEye, - faEyeSlash, - faCaretDown, - faCaretUp -) -Vue.component('vue-fontawesome', FontAwesomeIcon) - -// ... - -import Oruga from '@oruga-ui/oruga' -Vue.use(Oruga, { - iconComponent: 'vue-fontawesome', - iconPack: 'fas' -}) -``` - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_icon.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-icon v-bind="s" pack="fas" icon="home"></o-icon> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "clickableClass", - description: "Class of the icon when clickable", - properties: ['clickable'], - action: (cmp) => { - cmp.data.clickable = true; - } - }, - { - class: "spinClass", - description: "Class of the element when spin", - properties: ['spin'], - action: (cmp) => { - cmp.data.spin = true; - } - }, - { - class: "sizeClass", - description : 'Class of the icon size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = "large"; - } - }, - { - class: "variantClass", - description : 'Class of the icon variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = "warning"; - } - }, - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ----------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------- | -| clickable | When true makes icon clickable | boolean | - | | -| component | Icon component name | string | - | | -| customClass | Add class to icon font, optional. See here for MDI, here for FontAwesome 4 and here for FontAwesome 5 custom classes | string | - | | -| customSize | Overrides icon font size, optional | string | `Depends on library: null (smallest)`, `fa-lg`, `fa-2x`, `fa-3x`, `fa-4x`, `fa-5x`, `mdi-18px`, `mdi-24px`, `mdi-36px`, `mdi-48px` | | -| icon | Icon name | string | - | | -| override | Override classes | boolean | - | false | -| pack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| rotation | Rotation 0-360 | number\|string | - | | -| size | Icon size, optional | string | `small`, `medium`, `large` | | -| spin | Enable spin effect on icon | boolean | - | | -| variant | Color of the icon, optional | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Style - -| CSS Variable | SASS Variable | Default | -| -------------------------- | -------------------- | ------- | -| --oruga-icon-spin-duration | \$icon-spin-duration | 2s | diff --git a/packages/docs/components/Input.md b/packages/docs/components/Input.md deleted file mode 100644 index 7e207d72e..000000000 --- a/packages/docs/components/Input.md +++ /dev/null @@ -1,309 +0,0 @@ ---- -title: Input ---- - -# Input - -> Get user Input. Use with Field to access all functionalities - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/input/examples/Input.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field label="Name"> - <o-input v-model="name"></o-input> - </o-field> - - <o-field label="Email" variant="danger" message="This email is invalid"> - <o-input type="email" value="john@" maxlength="30"> </o-input> - </o-field> - - <o-field label="Username" variant="success" message="This username is available"> - <o-input value="johnsilver" maxlength="30"></o-input> - </o-field> - - <o-field label="Password"> - <o-input type="password" value="iwantmytreasure" password-reveal> </o-input> - </o-field> - - <o-field label="Message"> - <o-input maxlength="200" type="textarea"></o-input> - </o-field> - - <o-field> - <o-input placeholder="No label"></o-input> - </o-field> - - <o-field label="Rounded"> - <o-input placeholder="No label" rounded></o-input> - </o-field> - - <o-field label="Success" variant="success"> - <o-input placeholder="Success"></o-input> - </o-field> - - <o-field label="Error" variant="danger" message="You can have a message too"> - <o-input placeholder="Error"></o-input> - </o-field> - - <o-field label="Info" variant="info"> - <o-input placeholder="Info"></o-input> - </o-field> - - <o-field label="Warning" variant="warning"> - <o-input placeholder="Warning"></o-input> - </o-field> - - <o-field label="Disabled"> - <o-input placeholder="Disabled" disabled></o-input> - </o-field> - - <o-field> - <o-input placeholder="Large" size="large" icon="user"> </o-input> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - name: 'John Silver' - } - } - } -</script> -``` - -::: - -### Base - -::: demo - -```html -<template> - <section> - <h3 class="subtitle">With Icons</h3> - <o-field> - <o-input placeholder="Search..." type="search" icon="search" icon-clickable @icon-click="searchIconClick"> </o-input> - </o-field> - - <o-field> - <o-input placeholder="Email" v-model="email" type="email" icon="envelope" icon-right="times-circle" icon-right-clickable @icon-right-click="clearIconClick"> </o-input> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - email: '' - } - }, - methods: { - searchIconClick() { - alert('You wanna make a search?') - }, - clearIconClick() { - this.email = '' - alert('Email cleared!') - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_input.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field :variant="s.fieldvariant"> - <o-input v-bind="s" placeholder="Input"></o-input> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "expandedClass", - description: "Class of input when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "iconLeftSpaceClass", - description: "Class of the left icon space inside the input", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - } - }, - { - class: "iconRightSpaceClass", - description: "Class of the right icon space inside the input", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - } - }, - { - class: "inputClass", - description: "Class of the native input element" - }, - { - class: "roundedClass", - description: "Class of input when rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - } - }, - { - class: "iconLeftClass", - description: "Class of the left icon", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - } - }, - { - class: "iconRightClass", - description: "Class of the right icon", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - } - }, - { - class: "counterClass", - description: "Class of the counter element", - properties: ['hasCounter', 'maxlength'], - action: (cmp) => { - cmp.data.hasCounter = true; - cmp.data.maxlength = 10; - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - } - }, - { - class: "sizeClass", - description : 'Class of the input size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = "large"; - } - }, - { - class: "variantClass", - description : 'Class of the input variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - warning: "Variant property should be applied to the wrapping field", - action: (cmp) => { - cmp.data.fieldvariant = "warning"; - } - }, - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------ | ----------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| autosize | Automatically adjust height in textarea | boolean | - | false | -| clearable | Add a button/icon to clear the inputed text | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> input: {<br> clearable: false<br>}</code> | -| clearIcon | Icon name to be added on the clear button | string | - | 'close-circle' | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| hasCounter | Show character counter when maxlength prop is passed | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> input: {<br> counter: false<br>}</code> | -| icon | Icon name to be added | string | - | | -| iconClickable | Makes the icon clickable | boolean | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconRight | Icon name to be added on the right side | string | - | | -| iconRightClickable | Make the icon right clickable | boolean | - | | -| iconRightVariant | Variant of right icon | string | - | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| override | Override classes | boolean | - | false | -| passwordReveal | Adds the reveal password functionality | boolean | - | | -| rounded | Makes the element rounded | boolean | - | | -| size | Vertical size of input, optional | string | `small`, `medium`, `large` | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| type | Input type, like native | string | `Any native input type`, `and textarea` | 'text' | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| v-model | | number\|string | - | | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| variant | Color of the control, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| blur | | -| focus | | -| invalid | | -| input | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ----------------------------------- | ----------------------------- | ----------------------------------------------------- | -| --oruga-input-background-color | \$input-background-color | #ffffff | -| --oruga-input-border-color | \$input-border-color | \$grey-lighter | -| --oruga-input-border-style | \$input-border-style | solid | -| --oruga-input-border-width | \$input-border-width | 1px | -| --oruga-input-border-radius | \$input-border-radius | \$base-border-radius | -| --oruga-input-rounded-border-radius | \$input-rounded-border-radius | \$base-rounded-border-radius | -| --oruga-input-box-shadow | \$input-box-shadow | inset 0 1px 2px hsla(0,0%,4%,.1) | -| --oruga-input-color | \$input-color | #363636 | -| --oruga-input-icon-zindex | \$input-icon-zindex | 4 | -| --oruga-input-counter-font-size | \$input-counter-font-size | .75rem | -| --oruga-input-counter-margin | \$input-counter-margin | .25rem 0 0 .5rem | -| --oruga-input-height | \$input-height | \$control-height | -| --oruga-input-line-height | \$input-line-height | \$base-line-height | -| --oruga-input-margin | \$input-margin | 0 | -| --oruga-input-padding | \$input-padding | $control-padding-vertical $control-padding-horizontal | -| --oruga-input-textarea-max-height | \$input-textarea-max-height | 600px | -| --oruga-input-textarea-min-height | \$input-textarea-min-height | 120px | -| --oruga-input-textarea-padding | \$input-textarea-padding | 0.625em | -| --oruga-input-width | \$input-width | 100% | -| --oruga-input-max-width | \$input-max-width | 100% | diff --git a/packages/docs/components/Inputitems.md b/packages/docs/components/Inputitems.md deleted file mode 100644 index 0b8cc9521..000000000 --- a/packages/docs/components/Inputitems.md +++ /dev/null @@ -1,494 +0,0 @@ ---- -title: Inputitems ---- - -# Inputitems - -> A simple item input field that can have autocomplete functionality - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/inputitems/examples/Inputitems.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field label="Add some items"> - <o-inputitems v-model="tags" icon="tag" placeholder="Add an item" aria-close-label="Delete this item"> </o-inputitems> - </o-field> - <p class="content"><b>Items:</b> {{ tags }}</p> - </section> -</template> - -<script> - export default { - data() { - return { - tags: ['Pistoia', 'Valdinievole'] - } - } - } -</script> -``` - -::: - -### Autocomplete - -::: demo - -```html -<template> - <section> - <div class="block"> - <o-switch v-model="allowNew"> - Allow new items - </o-switch> - <o-switch v-model="openOnFocus"> - Open on focus - </o-switch> - </div> - <o-field label="Enter some items"> - <o-inputitems - v-model="tags" - :data="filteredTags" - autocomplete - :allow-new="allowNew" - :open-on-focus="openOnFocus" - field="user.first_name" - icon="tag" - placeholder="Add an item" - @typing="getFilteredTags" - > - </o-inputitems> - </o-field> - <p class="content"><b>Items:</b> {{ tags }}</p> - </section> -</template> - -<script> - const data = [ - { id: 1, user: { first_name: 'Jesse', last_name: 'Simmons' }, date: '2016/10/15 13:43:27', gender: 'Male' }, - { id: 2, user: { first_name: 'John', last_name: 'Jacobs' }, date: '2016/12/15 06:00:53', gender: 'Male' }, - { id: 3, user: { first_name: 'Tina', last_name: 'Gilbert' }, date: '2016/04/26 06:26:28', gender: 'Female' }, - { id: 4, user: { first_name: 'Clarence', last_name: 'Flores' }, date: '2016/04/10 10:28:46', gender: 'Male' }, - { id: 5, user: { first_name: 'Anne', last_name: 'Lee' }, date: '2016/12/06 14:38:38', gender: 'Female' }, - { id: 6, user: { first_name: 'Sara', last_name: 'Armstrong' }, date: '2016/09/23 18:50:04', gender: 'Female' }, - { id: 7, user: { first_name: 'Anthony', last_name: 'Webb' }, date: '2016/08/30 23:49:38', gender: 'Male' }, - { id: 8, user: { first_name: 'Andrew', last_name: 'Greene' }, date: '2016/11/20 14:57:47', gender: 'Male' }, - { id: 9, user: { first_name: 'Russell', last_name: 'White' }, date: '2016/07/13 09:29:49', gender: 'Male' }, - { id: 10, user: { first_name: 'Lori', last_name: 'Hunter' }, date: '2016/12/09 01:44:05', gender: 'Female' }, - { id: 11, user: { first_name: 'Ronald', last_name: 'Wood' }, date: '2016/12/04 02:23:48', gender: 'Male' }, - { id: 12, user: { first_name: 'Michael', last_name: 'Harper' }, date: '2016/07/27 13:28:15', gender: 'Male' }, - { id: 13, user: { first_name: 'George', last_name: 'Dunn' }, date: '2017/03/07 12:26:52', gender: 'Male' }, - { id: 14, user: { first_name: 'Eric', last_name: 'Rogers' }, date: '2016/06/07 05:41:52', gender: 'Male' }, - { id: 15, user: { first_name: 'Juan', last_name: 'Meyer' }, date: '2017/02/01 04:56:34', gender: 'Male' }, - { id: 16, user: { first_name: 'Silvia', last_name: 'Rosa' }, date: '2017/01/26 11:50:04', gender: 'Female' }, - { id: 17, user: { first_name: 'Lori', last_name: 'Cunningham' }, date: '2016/05/01 10:00:56', gender: 'Female' }, - { id: 18, user: { first_name: 'Charles', last_name: 'Graham' }, date: '2016/05/31 06:43:30', gender: 'Male' }, - { id: 19, user: { first_name: 'Henry', last_name: 'Morrison' }, date: '2016/09/27 16:15:44', gender: 'Male' }, - { id: 20, user: { first_name: 'Albert', last_name: 'Mendoza' }, date: '2016/08/08 05:29:24', gender: 'Male' }, - { id: 21, user: { first_name: 'Ruby', last_name: 'Snyder' }, date: '2017/04/01 12:04:39', gender: 'Female' }, - { id: 22, user: { first_name: 'Jesse', last_name: 'Warren' }, date: '2016/08/20 01:36:38', gender: 'Male' }, - { id: 23, user: { first_name: 'Carlos', last_name: 'Ferguson' }, date: '2016/05/31 10:40:29', gender: 'Male' }, - { id: 24, user: { first_name: 'Melissa', last_name: 'Peters' }, date: '2016/07/23 00:41:54', gender: 'Female' }, - { id: 25, user: { first_name: 'Arthur', last_name: 'Garza' }, date: '2017/03/11 14:11:37', gender: 'Male' }, - { id: 26, user: { first_name: 'Joe', last_name: 'Berry' }, date: '2016/07/09 15:16:56', gender: 'Male' }, - { id: 27, user: { first_name: 'Joseph', last_name: 'Bishop' }, date: '2016/10/04 19:44:54', gender: 'Male' }, - { id: 28, user: { first_name: 'Sarah', last_name: 'Harper' }, date: '2016/09/23 05:09:11', gender: 'Female' }, - { id: 29, user: { first_name: 'Christopher', last_name: 'Fuller' }, date: '2016/04/12 00:05:35', gender: 'Male' }, - { id: 30, user: { first_name: 'Alan', last_name: 'Mendoza' }, date: '2016/04/22 10:48:02', gender: 'Male' }, - { id: 31, user: { first_name: 'James', last_name: 'Davis' }, date: '2017/01/16 15:17:03', gender: 'Male' }, - { id: 32, user: { first_name: 'Scott', last_name: 'Welch' }, date: '2016/10/04 23:31:51', gender: 'Male' }, - { id: 33, user: { first_name: 'Mildred', last_name: 'Myers' }, date: '2016/11/23 13:46:18', gender: 'Female' }, - { id: 34, user: { first_name: 'Victor', last_name: 'Martinez' }, date: '2016/04/06 17:05:07', gender: 'Male' }, - { id: 35, user: { first_name: 'Susan', last_name: 'Medina' }, date: '2016/12/09 10:33:37', gender: 'Female' }, - { id: 36, user: { first_name: 'Judy', last_name: 'Long' }, date: '2016/07/26 16:19:04', gender: 'Female' }, - { id: 37, user: { first_name: 'Joan', last_name: 'Myers' }, date: '2016/09/22 04:55:54', gender: 'Female' }, - { id: 38, user: { first_name: 'Rachel', last_name: 'Gonzales' }, date: '2016/07/15 13:56:38', gender: 'Female' }, - { id: 39, user: { first_name: 'Roger', last_name: 'Hunt' }, date: '2016/08/14 10:43:11', gender: 'Male' }, - { id: 40, user: { first_name: 'Dorothy', last_name: 'Howard' }, date: '2016/06/19 05:34:49', gender: 'Female' }, - { id: 41, user: { first_name: 'Eugene', last_name: 'Lynch' }, date: '2016/12/24 08:19:24', gender: 'Male' }, - { id: 42, user: { first_name: 'Kathy', last_name: 'Webb' }, date: '2017/04/01 21:09:05', gender: 'Female' }, - { id: 43, user: { first_name: 'Antonio', last_name: 'White' }, date: '2017/02/10 06:51:20', gender: 'Male' }, - { id: 44, user: { first_name: 'Louis', last_name: 'Spencer' }, date: '2016/10/08 02:20:22', gender: 'Male' }, - { id: 45, user: { first_name: 'Andrea', last_name: 'Marshall' }, date: '2016/09/04 10:59:57', gender: 'Female' }, - { id: 46, user: { first_name: 'Eugene', last_name: 'Sims' }, date: '2017/03/15 06:39:48', gender: 'Male' }, - { id: 47, user: { first_name: 'Mildred', last_name: 'Gibson' }, date: '2016/04/18 06:43:54', gender: 'Female' }, - { id: 48, user: { first_name: 'Joan', last_name: 'Arnold' }, date: '2016/12/16 04:52:23', gender: 'Female' }, - { id: 49, user: { first_name: 'Jesse', last_name: 'Schmidt' }, date: '2016/06/11 02:44:33', gender: 'Male' }, - { id: 50, user: { first_name: 'David', last_name: 'Frazier' }, date: '2017/02/15 21:46:30', gender: 'Male' }, - { id: 51, user: { first_name: 'Nicholas', last_name: 'Howell' }, date: '2016/11/01 15:08:31', gender: 'Male' }, - { id: 52, user: { first_name: 'Douglas', last_name: 'Chapman' }, date: '2017/02/08 03:33:24', gender: 'Male' }, - { id: 53, user: { first_name: 'Bruce', last_name: 'Simmons' }, date: '2016/07/14 12:11:17', gender: 'Male' }, - { id: 54, user: { first_name: 'Antonio', last_name: 'George' }, date: '2016/11/07 19:12:55', gender: 'Male' }, - { id: 55, user: { first_name: 'Chris', last_name: 'Marshall' }, date: '2016/07/03 12:11:45', gender: 'Male' }, - { id: 56, user: { first_name: 'Ashley', last_name: 'Hudson' }, date: '2016/10/14 21:08:05', gender: 'Female' }, - { id: 57, user: { first_name: 'Alan', last_name: 'Edwards' }, date: '2017/03/22 21:10:25', gender: 'Male' }, - { id: 58, user: { first_name: 'George', last_name: 'Clark' }, date: '2016/04/28 03:15:05', gender: 'Male' }, - { id: 59, user: { first_name: 'Frank', last_name: 'Porter' }, date: '2016/09/08 00:48:14', gender: 'Male' }, - { id: 60, user: { first_name: 'Christopher', last_name: 'Palmer' }, date: '2016/05/24 08:58:12', gender: 'Male' } - ] - - export default { - data() { - return { - filteredTags: data, - tags: [], - allowNew: false, - openOnFocus: false - } - }, - methods: { - getFilteredTags(text) { - this.filteredTags = data.filter(option => { - return ( - option.user.first_name - .toString() - .toLowerCase() - .indexOf(text.toLowerCase()) >= 0 - ) - }) - } - } - } -</script> -``` - -::: - -### Custom selected - -::: demo - -```html -<template> - <section> - <o-field label="Enter some items"> - <o-inputitems v-model="items" ref="input" icon="tag" placeholder="Add an item"> - <template #selected="{ items }"> - <o-button native-type="button" v-for="(item, index) in items" :key="index" :variant="getType(item)" rounded @click="$refs.input.removeItem(index, $event)"> - {{ item }} - </o-button> - </template> - </o-inputitems> - </o-field> - <p class="content"><b>Items:</b> {{ items }}</p> - </section> -</template> - -<script> - export default { - data() { - return { - items: [] - } - }, - methods: { - getType(item) { - const random = 'Z'.charCodeAt(0) - item.toUpperCase().charCodeAt(0) - if (random >= 1 && random < 5) { - return 'primary' - } else if (random >= 6 && random < 10) { - return 'danger' - } else if (random >= 11 && random < 15) { - return 'warning' - } else if (random >= 15 && random < 20) { - return 'success' - } else if (random >= 20 && random < 25) { - return 'info' - } - } - } - } -</script> -``` - -::: - -### Limits - -::: demo - -```html -<template> - <section> - <o-field label="Limited to 10 characters"> - <o-inputitems maxlength="10" :value="['Oruga', 'Vue', 'CSS']"> </o-inputitems> - </o-field> - - <o-field label="Limited to 5 tags"> - <o-inputitems maxitems="5" :value="['One', 'Two', 'Three', 'Four']"> </o-inputitems> - </o-field> - - <o-field label="Limited to 10 characters and 5 tags"> - <o-inputitems maxlength="10" maxitems="5" :value="['Red', 'Green', 'Blue', 'White']"> </o-inputitems> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_inputitems.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-inputitems - v-bind="s" - v-model="tags" - :data="filteredTags" - autocomplete - field="user.first_name" - icon="tag" - placeholder="Add a tag" - @typing="getFilteredTags"> - </o-inputitems> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - - const data = [ - {"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"}, - {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"}, - {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"}, - {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"}, - {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"}, - {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"}, - {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"}, - {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"}, - {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"}, - {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"}, - {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"}, - {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"}, - {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"}, - {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"}, - {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"}, - {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"}, - {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"}, - {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"}, - {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"}, - {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"}, - {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"}, - {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"}, - {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"}, - {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"}, - {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"}, - {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"}, - {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"}, - {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"}, - {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"}, - {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"}, - {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"}, - {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"}, - {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"}, - {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"}, - {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"}, - {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"}, - {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"}, - {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"}, - {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"}, - {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"}, - {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"}, - {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"}, - {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"}, - {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"}, - {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"}, - {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"}, - {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"}, - {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"}, - {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"}, - {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"}, - {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"}, - {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"}, - {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"}, - {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"}, - {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"}, - {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"}, - {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"}, - {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"}, - {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"}, - {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"} -] - -export default { - data() { - return { - filteredTags: data, - tags: [ data[1] ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "expandedClass", - description: "Class of input when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "itemClass", - description: "Class of the entered item" - }, - { - class: "variantClass", - description: "Class of the entered item variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - }, - }, - { - class: "closeClass", - properties: ["closable"], - description: "Class of the close button of entered item", - action: (cmp) => { - cmp.data.closable = true; - } - }, - { - class: "counterClass", - description: "Class of the counter element", - properties: ['hasCounter', 'maxitems'], - action: (cmp) => { - cmp.data.hasCounter = true; - cmp.data.maxitems = 5; - } - }, - { - class: "autocompleteClasses", - realClass: "autocompleteClasses.inputClass", - description: "Classes to apply on internal autocomplete.", - componentRef: "Autocomplete" - }, - ], - }; - }, - methods: { - getFilteredTags(text) { - this.filteredTags = data.filter((option) => { - return option.user.first_name - .toString() - .toLowerCase() - .indexOf(text.toLowerCase()) >= 0 - }) - } - } -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| allowDuplicates | Allows adding the same item multiple time | boolean | - | false | -| allowNew | When autocomplete, it allow to add new items | boolean | - | | -| appendToBody | Append autocomplete content to body | boolean | - | | -| ariaCloseLabel | Accessibility label for the close button | string | - | | -| autocomplete | Add autocomplete feature (if true, any Autocomplete props may be used too) | boolean | - | | -| beforeAdding | Function to validate the value of the item before adding | func | - | Default function (see source code) | -| checkInfiniteScroll | Makes the autocomplete component check if list reached scroll end and emit infinite-scroll event | boolean | - | false | -| closable | Add close/delete button to the item | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br> closable: true<br>}</code> | -| closeIcon | Icon name of close icon on selected item | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br> closeIcon: 'close'<br>}</code> | -| confirmKeys | Array of keys<br>(https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)<br>which will add a item when typing (default comma, tab and enter) | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br> confirmKeys: [',', 'Tab', 'Enter']<br>}</code> | -| createItem | Function to create a new item to push into v-model (items) | func | - | Default function (see source code) | -| data | Items data | array | - | [] | -| disabled | Input will be disabled | boolean | - | | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| field | Property of the object (if data is array of objects) to use as display text | string | - | 'value' | -| groupField | Property of the object (if data is array of objects) to use as display text of group | string | - | | -| groupOptions | Property of the object (if data is array of objects) to use as key to get items array of each group, optional | string | - | | -| hasCounter | Show counter when maxlength or maxtags props are passed | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br> hasCounter: true<br>}</code> | -| icon | Icon name to be added | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| keepFirst | The first option will always be pre-selected (easier to just hit enter or tab) | boolean | - | | -| maxitems | Limits the number of items, plus item counter | number\|string | - | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| nativeAutocomplete | | string | - | | -| onPasteSeparators | Array of chars used to split when pasting a new string | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br> onPasteSeparators: [',']<br>}</code> | -| openOnFocus | Opens a dropdown with choices when the input field is focused | boolean | - | | -| override | Override classes | boolean | - | false | -| removeOnKeys | Allow removing last item when pressing given keys, if input is empty | array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> inputitems: {<br> removeOnKeys: ['Backspace']<br>}</code> | -| rounded | Makes the element rounded | boolean | - | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| v-model | | array | - | [] | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| variant | Color of the each items, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------------- | ---------- | ----------- | -| infinite-scroll | | -| icon-right-click | | -| blur | | -| focus | | -| invalid | | -| input | | -| add | | -| typing | | -| remove | | - -## Slots - -| Name | Description | Bindings | -| -------- | ----------- | -------- | -| selected | | | -| header | | | -| default | | <br> | -| empty | | | -| footer | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ---------------------------------------- | ---------------------------------- | -------------------------------- | -| --oruga-inputitems-background-color | \$inputitems-background-color | \$input-background-color | -| --oruga-inputitems-height | \$inputitems-height | calc(2em - 1px) | -| --oruga-inputitems-padding | \$inputitems-padding | calc(.275em - 1px) 0 0 | -| --oruga-inputitems-border-color | \$inputitems-border-color | \$grey-lighter | -| --oruga-inputitems-border-style | \$inputitems-border-style | solid | -| --oruga-inputitems-border-width | \$inputitems-border-width | 1px | -| --oruga-inputitems-border-radius | \$inputitems-border-radius | \$base-border-radius | -| --oruga-inputitems-color | \$inputitems-color | #363636 | -| --oruga-inputitems-line-height | \$inputitems-line-height | \$base-line-height | -| --oruga-inputitems-box-shadow | \$inputitems-box-shadow | inset 0 1px 2px hsla(0,0%,4%,.1) | -| --oruga-inputitems-max-width | \$inputitems-max-width | 100% | -| --oruga-inputitems-width | \$inputitems-width | 100% | -| --oruga-inputitems-counter-font-size | \$inputitems-counter-font-size | .75rem | -| --oruga-inputitems-counter-margin | \$inputitems-counter-margin | .25rem 0 0 .5rem | -| --oruga-inputitems-item-background-color | \$inputitems-item-background-color | \$primary | -| --oruga-inputitems-item-color | \$inputitems-item-color | \$primary-invert | -| --oruga-inputitems-item-border-radius | \$inputitems-item-border-radius | \$base-border-radius | -| --oruga-inputitems-item-margin | \$inputitems-item-margin | 0 0 0 0.275em | -| --oruga-inputitems-item-padding | \$inputitems-item-padding | 0 .75em 0 .75em | -| --oruga-inputitems-margin-icon-to-text | \$inputitems-margin-icon-to-text | .1875em | diff --git a/packages/docs/components/Loading.md b/packages/docs/components/Loading.md deleted file mode 100644 index bdc5af97b..000000000 --- a/packages/docs/components/Loading.md +++ /dev/null @@ -1,336 +0,0 @@ ---- -title: Loading ---- - -# Loading - -> A simple loading overlay - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/loading/examples/Loading.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true"></o-loading> - </p> - </section> -</template> - -<script> - export default { - data() { - return { - isLoading: false, - isFullPage: true - } - }, - methods: { - openLoading() { - this.isLoading = true - setTimeout(() => { - this.isLoading = false - }, 10 * 1000) - } - } - } -</script> -``` - -::: - -### Slot - -::: demo - -```html -<template> - <section> - <o-field> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true"> - <o-icon pack="fas" icon="sync-alt" size="large" spin> </o-icon> - </o-loading> - </p> - </section> -</template> - -<script> - export default { - data() { - return { - isLoading: false, - isFullPage: true - } - }, - methods: { - openLoading() { - this.isLoading = true - setTimeout(() => { - this.isLoading = false - }, 10 * 1000) - } - } - } -</script> -``` - -::: - -### Programmatically - -::: demo - -```html -<template> - <div> - <o-field> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative" ref="element"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </p> - </div> -</template> - -<script> - export default { - data() { - return { - isFullPage: true - } - }, - methods: { - openLoading() { - const loadingComponent = this.$oruga.loading.open({ - fullPage: this.isFullPage, - container: this.isFullPage ? null : this.$refs.element - }) - setTimeout(() => loadingComponent.close(), 3 * 1000) - } - } - } -</script> -``` - -::: - -### Programmatically (with promise) - -::: demo - -```html -<template> - <div> - <o-field> - <div class="buttons"> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - <o-button size="medium" variant="primary" @click="openLoadingCloseAll"> - Launch loading (closeAll) - </o-button> - </div> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative" ref="element"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </p> - </div> -</template> - -<script> - export default { - data() { - return { - isFullPage: true - } - }, - methods: { - async openLoading() { - const loadingComponent = this.$oruga.loading.open({ - fullPage: this.isFullPage, - container: this.isFullPage ? null : this.$refs.element, - canCancel: true - }) - setTimeout(() => loadingComponent.close({ action: 'cancel', method: 'timeout' }), 3 * 1000) - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const ret = await loadingComponent.promise - this.$oruga.notification.open({ - duration: 2000, - message: 'Loading returned ' + JSON.stringify(ret), - variant: 'info', - position: 'top' - }) - }, - async openLoadingCloseAll() { - const loadingComponent = this.$oruga.loading.open({ - fullPage: this.isFullPage, - container: this.isFullPage ? null : this.$refs.element, - canCancel: true - }) - setTimeout(() => this.$oruga.loading.closeAll({ action: 'cancel', method: 'closeAll' }), 3 * 1000) - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const ret = await loadingComponent.promise - this.$oruga.notification.open({ - duration: 2000, - message: 'Loading returned ' + JSON.stringify(ret), - variant: 'info', - position: 'top' - }) - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_loading.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <p style="position: relative"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - <o-loading v-bind="s" icon="sync-alt" :active.sync="loading" :iconSpin="true"> - </o-loading> - </p> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - loading: false, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: (cmp) => { - cmp.data.canCancel = true; - cmp.data.fullPage = false; - this.loading = true; - } - }, - { - class: "overlayClass", - description: "Class of the loading overlay", - action: (cmp) => { - cmp.data.canCancel = true; - cmp.data.fullPage = false; - this.loading = true; - } - }, - { - class: "iconClass", - description: "Class for the loading icon", - action: (cmp) => { - cmp.data.canCancel = true; - cmp.data.fullPage = false; - this.loading = true; - } - }, - { - class: "fullPageClass", - description: "Class for the root element when fullpage", - properties: ['fullPage'], - action: (cmp) => { - cmp.data.fullPage = true; - cmp.data.canCancel = true; - this.loading = true; - } - } - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- | -| active | Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding | boolean | - | | -| animation | | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> loading: {<br> animation: 'fade'<br>}</code> | -| canCancel | Can close Loading by pressing escape or clicking outside | boolean | - | false | -| container | | object\|func\|HTMLElement | - | | -| fullPage | Loader will overlay the full page | boolean | - | true | -| icon | Icon name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> loading: {<br> icon: 'loading'<br>}</code> | -| iconSize | | string | - | 'medium' | -| iconSpin | Enable spin effect on icon | boolean | - | true | -| onCancel | Callback function to call after user canceled (pressed escape / clicked outside) | func | - | Default function (see source code) | -| overlay | | boolean | - | true | -| override | Override classes | boolean | - | false | - -## Events - -| Event name | Properties | Description | -| ---------------- | ---------- | ----------- | -| close | | -| update:active | | -| update:full-page | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------- | ------------------------- | --------------------- | -| --oruga-loading-overlay-legacy | \$loading-overlay-legacy | #7f7f7f | -| --oruga-loading-overlay | \$loading-overlay | rgba(255,255,255,0.5) | -| --oruga-loading-zindex | \$loading-zindex | 29 | -| --oruga-loading-fullpage-zindex | \$loading-fullpage-zindex | 999 | diff --git a/packages/docs/components/Menu.md b/packages/docs/components/Menu.md deleted file mode 100644 index 27bcac5e1..000000000 --- a/packages/docs/components/Menu.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: Menu ---- - -# Menu - -> A simple vertical menu - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/menu/examples/Menu.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <o-menu> - <o-menu-list label="Menu"> - <o-menu-item icon="info-circle" label="Info"></o-menu-item> - <o-menu-item icon="cog" :active="isActive" expanded> - <template #label="props"> - Administrator - <o-icon class="is-pulled-right" :icon="props.expanded ? 'chevron-up' : 'chevron-down'"></o-icon> - </template> - <o-menu-item icon="user" label="Users"></o-menu-item> - <o-menu-item icon="mobile"> - <template #label> - Devices - </template> - </o-menu-item> - <o-menu-item icon="money-bill" label="Payments" disabled></o-menu-item> - </o-menu-item> - <o-menu-item icon="user" label="My Account"> - <o-menu-item label="Account data"></o-menu-item> - <o-menu-item label="Addresses"></o-menu-item> - </o-menu-item> - </o-menu-list> - <o-menu-list> - <o-menu-item label="Documentation" icon="link" tag="a" target="_blank" href="/documentation/"></o-menu-item> - </o-menu-list> - <o-menu-list label="Actions"> - <o-menu-item label="Logout"></o-menu-item> - </o-menu-list> - </o-menu> -</template> - -<script> - export default { - data() { - return { - isActive: true - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_menu.scss) - -<br /> -<template> - <div class="field"> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - filtered: [ - { - type: 'Frameworks', - items: ['Vue.js'] - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root menu element", - }, - ], - }; - } -} -</script> - -<br /> -<br /> - -## Props - -### Menu - -| Prop name | Description | Type | Values | Default | -| -------------------- |-----------------------------------------------------|---------|--------|---------| -| accordion | Close automatically the previous selected menu list | Boolean | - | true | -| activable | Active automatically the clicked menu item | Boolean | - | true | - -### Menu List - -| Prop name | Description | Type | Values | Default | -|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|--------|---------| -| label | Menu list label | String | - | - | -| icon | Icon name | String | - | - | -| icon-pack | Icon pack to use | String | - | - | -| aria-role | Role attribute to be passed to list container for better accessibility. Use `menu` only in situations where your dropdown is really related to navigation. | String | `menu` | - | - -### Menu Item - -| Prop name | Description | Type | Values | Default | -|-----------|---------------------------------------------------------------------------------------------------------|---------|-----------------------------------------------------|---------| -| label | Menu item label | String | - | - | -| icon | Icon name | String | - | - | -| icon-pack | Icon pack to use | String | - | - | -| disabled | Item is disabled | Boolean | - | false | -| active | Item is active, use the `.sync` modifier to make it two-way binding | Boolean | - | false | -| expanded | Item is expanded when `default` contains menu items, use the .sync modifier to make it two-way binding | Boolean | - | false | -| animation | Custom animation (transition name) | String | - | `fade` | -| tag | Item tag name | String | `a`, `router-link`, `nuxt-link` or other nuxt alias | `a` | -| aria-role | Item is active, use the `.sync` modifier to make it two-way binding | String | `menu-item` | - | - -## Slots - -### Menu - -| Name | Description | Bindings | -| ------- |--------------------| -------- | -| default | Menu list elements | | - -### Menu List - -| Name | Description | Bindings | -|---------|------------------------| -------- | -| default | Menu item elements | | -| label | Menu list custom label | | - -### Menu Item - -| Name | Description | Bindings | -|---------|------------------------| -------- | -| default | Menu item body | | -| label | Menu item custom label | | - - -## Style - -| CSS Variable | SASS Variable | Default | -|-------------------------------------------|-------------------------------------|--------------------| -| --oruga-menu-font-size-small | \$sizes['small'] | | -| --oruga-menu-font-size-medium | \$sizes['medium'] | | -| --oruga-menu-font-size-large | \$sizes['large'] | | -| --oruga-menu-list-line-height | \$menu-list-line-height | 1.25em | -| --oruga-menu-list-border-left | \$menu-list-border-left | 1px solid $primary | -| --oruga-menu-nested-list-padding-left | \$menu-nested-list-padding-left | .75em | -| --oruga-menu-nested-list-margin | \$menu-nested-list-margin | .75em | -| --oruga-menu-label-color | \$menu-label-color | $grey | -| --oruga-menu-label-font-size | \$menu-label-font-size | .75em | -| --oruga-menu-label-spacing | \$menu-label-spacing | 1em | -| --oruga-menu-item-color | \$menu-item-color | $grey-dark | -| --oruga-menu-item-padding | \$menu-item-padding | 0.5em 0.75em | -| --oruga-menu-item-hover-color | \$menu-item-hover-color | $black | -| --oruga-menu-item-hover-background-color | \$menu-item-hover-background-color | $grey-light | -| --oruga-menu-item-active-color | \$menu-item-active-color | $primary-invert | -| --oruga-menu-item-active-background-color | \$menu-item-active-background-color | $primary | -| --oruga-menu-item-disabled-color | \$menu-item-disabled-color | $grey-light | diff --git a/packages/docs/components/Modal.md b/packages/docs/components/Modal.md deleted file mode 100644 index 19c9f1312..000000000 --- a/packages/docs/components/Modal.md +++ /dev/null @@ -1,520 +0,0 @@ ---- -title: Modal ---- - -# Modal - -> Classic modal overlay to include any content you may need - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/modal/examples/Modal.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button size="medium" variant="primary" @click="isImageModalActive = true"> - Open modal - </o-button> - <o-button size="medium" variant="primary" @click="isCardModalActive = true"> - Open modal (clip scroll) - </o-button> - </div> - - <o-modal :active.sync="isImageModalActive"> - <p style="text-align: center"> - <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" /> - </p> - </o-modal> - - <o-modal :active.sync="isCardModalActive" :width="640" scroll="clip"> - <p> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sodales leo nec convallis rutrum. Vivamus pharetra molestie arcu at dictum. Nulla faucibus leo eget enim - egestas, in tempus justo venenatis. Duis dictum suscipit erat, a dapibus eros lobortis ac. Praesent tempor rhoncus convallis. Nullam in ipsum convallis, rutrum elit eget, - dictum ipsum. Nunc sagittis aliquet massa. Etiam lacus sapien, eleifend non eros quis, finibus ornare nisl. Ut laoreet sit amet lacus non dignissim. Sed convallis mattis - enim, sed interdum risus molestie ut. Praesent vel ex hendrerit, cursus lectus a, blandit felis. Nam luctus orci nec varius commodo. - </p> - <p> - Sed vulputate metus purus, ut egestas erat congue et. Donec tellus orci, malesuada eget dolor sed, pellentesque bibendum nunc. In eu egestas diam. Integer sed congue massa. - Sed a urna quam. Morbi vulputate dolor eleifend ligula lobortis venenatis. Aenean pellentesque risus sit amet faucibus molestie. Aliquam eu lorem aliquet, aliquam nulla in, - vestibulum lorem. Donec mollis mi at sollicitudin tristique. Nullam id nibh pulvinar, dignissim nisl id, gravida risus. Nulla arcu elit, scelerisque in sollicitudin et, - laoreet et metus. Aenean placerat turpis nec tincidunt tempus. - </p> - </o-modal> - </section> -</template> - -<script> - export default { - data() { - return { - isImageModalActive: false, - isCardModalActive: false - } - } - } -</script> -``` - -::: - -### Programmatically - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button size="medium" variant="primary" @click="imageModal()"> - Open modal (HTML) - </o-button> - <o-button size="medium" variant="primary" @click="cardModal()"> - Open modal (Component) - </o-button> - </div> - </section> -</template> - -<script> - const ModalForm = { - props: ['email', 'password'], - template: ` - <form action=""> - <div class="modal-card" style="width: auto"> - <header class="modal-card-head"> - <p class="modal-card-title">Login</p> - <o-icon - clickable - native-type="button" - icon="times" - @click.native="$emit('close')"/> - </header> - <section class="modal-card-body"> - <o-field label="Email"> - <o-input - type="email" - :value="email" - placeholder="Your email" - required> - </o-input> - </o-field> - - <o-field label="Password"> - <o-input - type="password" - :value="password" - password-reveal - placeholder="Your password" - required> - </o-input> - </o-field> - - <o-field> - <o-checkbox>Remember me</o-checkbox> - </o-field> - </section> - <footer class="modal-card-foot"> - <o-button type="button" @click="$emit('close')">Close</o-button> - <o-button variant="primary">Login</o-button> - </footer> - </div> - </form> - ` - } - - export default { - methods: { - imageModal() { - const h = this.$createElement - const vnode = h('p', { style: { 'text-align': 'center' } }, [h('img', { attrs: { src: 'https://avatars2.githubusercontent.com/u/66300512?s=200&v=4' } })]) - this.$oruga.modal.open({ - content: [vnode] - }) - }, - cardModal() { - this.$oruga.modal.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: ModalForm, - trapFocus: true - }) - } - } - } -</script> - -<style> - .modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; - } - @media screen and (min-width: 769px) { - .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; - } - } - .modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; - } - .modal-card-foot, - .modal-card-head { - align-items: center; - background-color: #f5f5f5; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; - } - .modal-card-head { - border-bottom: 1px solid #dbdbdb; - border-top-left-radius: 6px; - border-top-right-radius: 6px; - } - .modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: #fff; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; - } - .modal-card-foot { - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; - } - .modal-card-title { - color: #363636; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; - margin: 0; - } - .modal-card-foot .o-button:not(:last-child) { - margin-right: 0.5em; - } -</style> -``` - -::: - -### Programmatically (with promises and async/await) - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button size="medium" variant="primary" @click="promptModal()"> - Open prompt - </o-button> - <o-button size="medium" variant="primary" @click="promptModalCloseAll()"> - Open prompt (closeAll timeout) - </o-button> - </div> - </section> -</template> - -<script> - const ModalForm = { - props: ['message', 'title'], - template: ` - <form action=""> - <div class="modal-card" style="width: auto"> - <header class="modal-card-head"> - <p class="modal-card-title">{{ title }}</p> - <o-icon - clickable - native-type="button" - icon="times" - @click.native="$emit('close', {action: 'cancel', method: 'x'})"/> - </header> - <section class="modal-card-body"> - <p>{{ message }}</p> - </section> - <footer class="modal-card-foot"> - <o-button @click="$emit('close', {action: 'no'})">No</o-button> - <o-button variant="primary" @click="$emit('close', {action: 'yes'})">Yes</o-button> - </footer> - </div> - </form> - ` - } - - export default { - methods: { - async promptModal() { - const instance = this.$oruga.modal.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: ModalForm, - props: { - title: 'Ship sprockets?', - message: 'Do you really want me to ship the selected sprockets?' - }, - trapFocus: true - }) - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const result = await instance.promise - - this.$oruga.notification.open({ - duration: 5000, - message: 'Modal dialog returned ' + JSON.stringify(result), - variant: 'info', - position: 'top', - closable: true - }) - }, - async promptModalCloseAll() { - const instance = this.$oruga.modal.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: ModalForm, - props: { - title: 'Close All test', - message: 'There is a 3 second timeout that will close all programmatic modals' - }, - trapFocus: true - }) - - setTimeout(() => this.$oruga.modal.closeAll({ action: 'closeAll' }), 3 * 1000) - - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const result = await instance.promise - - this.$oruga.notification.open({ - duration: 5000, - message: 'Modal dialog returned ' + JSON.stringify(result), - variant: 'info', - position: 'top', - closable: true - }) - } - } - } -</script> - -<style> - .modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; - } - @media screen and (min-width: 769px) { - .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; - } - } - .modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; - } - .modal-card-foot, - .modal-card-head { - align-items: center; - background-color: #f5f5f5; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; - } - .modal-card-head { - border-bottom: 1px solid #dbdbdb; - border-top-left-radius: 6px; - border-top-right-radius: 6px; - } - .modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: #fff; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; - } - .modal-card-foot { - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; - } - .modal-card-title { - color: #363636; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; - margin: 0; - } - .modal-card-foot .o-button:not(:last-child) { - margin-right: 0.5em; - } -</style> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_modal.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-modal v-bind="s" :active.sync="isImageModalActive"> - <p style="text-align: center"> - <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" /> - </p> - </o-modal> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - isImageModalActive: false, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "mobileClass", - description: "Class of modal component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "overlayClass", - description: "Class of the modal overlay", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "contentClass", - description: "Class of the modal content", - specificity: "when <b>mobileClass</b> is applied", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "closeClass", - description: "Class of the close button", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "fullScreenClass", - description: "Class of the modal when fullscreen", - properties: ['fullScreen'], - action: (cmp) => { - this.isImageModalActive = true; - cmp.data.fullScreen = true; - } - } - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| active | Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding | boolean | - | | -| animation | Custom animation (transition name) | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> animation: 'zoom-out'<br>}</code> | -| ariaLabel | | string | - | | -| ariaModal | | boolean | - | | -| ariaRole | | string | - | | -| autoFocus | Automatically focus modal when active | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> autoFocus: true<br>}</code> | -| canCancel | Can close Modal by clicking 'X', pressing escape or clicking outside | array\|boolean | `escape`, `x`, `outside`, `button` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> canCancel: ['escape', 'x', 'outside', 'button']<br>}</code> | -| closeIcon | Icon name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> closeIcon: 'close'<br>}</code> | -| closeIconSize | | string | - | 'medium' | -| component | Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ this.\$emit('close') | object\|func | - | | -| content | Text content | string | - | | -| destroyOnHide | Destroy modal on hide | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> destroyOnHide: true<br>}</code> | -| events | Events to be binded to the injected component | object | - | | -| fullScreen | Display modal as full screen | boolean | - | | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| onCancel | Callback function to call after user canceled (clicked 'X' / pressed escape / clicked outside) | func | - | Default function (see source code) | -| onClose | Callback function to call after close (programmatically close or user canceled) | func | - | Default function (see source code) | -| override | Override classes | boolean | - | false | -| props | Props to be binded to the injected component | object | - | | -| scroll | clip to remove the body scrollbar, keep to have a non scrollable scrollbar to avoid shifting background, but will set body to position fixed, might break some layouts | string | `keep`, `clip` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> scroll: 'keep'<br>}</code> | -| trapFocus | Trap focus inside the modal. | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> trapFocus: true<br>}</code> | -| width | Width of the Modal | string\|number | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> modal: {<br> width: 960<br>}</code> | - -## Events - -| Event name | Properties | Description | -| ------------- | ---------- | ----------- | -| close | | -| update:active | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------------- | ------------------------------------------- | ---------------------------- | -| --oruga-modal-content-background-color | \$modal-content-background-color | \$white | -| --oruga-modal-content-border-radius | \$modal-content-border-radius | \$base-border-radius | -| --oruga-modal-overlay-background-color | \$modal-overlay-background-color | hsla(0,0%,4%,.86) | -| --oruga-modal-close-border-radius | \$modal-close-border-radius | \$base-rounded-border-radius | -| --oruga-modal-close-right | \$modal-close-right | 20px | -| --oruga-modal-close-top | \$modal-close-top | 20px | -| --oruga-modal-close-size | \$modal-close-size | 32px | -| --oruga-modal-close-color | \$modal-close-color | \$white | -| --oruga-modal-content-fullscreen-background-color | \$modal-content-fullscreen-background-color | #f5f5f5 | -| --oruga-modal-content-max-height | \$modal-content-max-height | calc(100vh - 160px) | -| --oruga-modal-content-margin | \$modal-content-margin | 0 auto | -| --oruga-modal-zindex | \$modal-zindex | 40 | diff --git a/packages/docs/components/Notification.md b/packages/docs/components/Notification.md deleted file mode 100644 index 9291baeb3..000000000 --- a/packages/docs/components/Notification.md +++ /dev/null @@ -1,443 +0,0 @@ ---- -title: Notification/Toast ---- - -# Notification/Toast - -> Bold notification blocks to alert your users of something - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/notification/examples/Notification.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Programmatically opening - -Go to [Notification Notice](#notification-notice) section to see all the available options. - -::: demo - -```html -<template> - <section> - <div class="buttons"> - <o-button label="Launch notification (default)" size="medium" @click="simple" /> - <o-button label="Launch notification (custom)" variant="success" size="medium" @click="success" /> - <hr /> - <o-button label="Launch toast" size="medium" @click="toast" /> - <o-button label="Launch toast (queued)" variant="success" size="medium" @click="queueToast" /> - <hr /> - <o-button label="Launch notification (custom)" variant="danger" size="medium" @click="danger" /> - <o-button label="Launch notification (component)" variant="warning" size="medium" @click="component" /> - <hr /> - <o-button label="Launch with promise" size="medium" @click="promise" /> - <o-button label="Launch indefinite" size="medium" @click="indefinite" /> - <o-button label="Close all open" size="medium" @click="closeAll" /> - </div> - </section> -</template> - -<script> - const NotificationForm = { - props: ['email', 'password'], - template: ` - <form action=""> - <div class="modal-card" style="width: auto"> - <header class="modal-card-head"> - <p class="modal-card-title">Login</p> - </header> - <section class="modal-card-body"> - <o-field label="Email"> - <o-input - type="email" - :value="email" - placeholder="Your email" - required> - </o-input> - </o-field> - - <o-field label="Password"> - <o-input - type="password" - :value="password" - password-reveal - placeholder="Your password" - required> - </o-input> - </o-field> - - <o-field> - <o-checkbox>Remember me</o-checkbox> - </o-field> - </section> - <footer class="modal-card-foot"> - <o-button type="button" @click="$emit('close')">Close</o-button> - <o-button variant="primary">Login</o-button> - </footer> - </div> - </form> - ` - } - export default { - methods: { - simple() { - this.$oruga.notification.open('Something happened') - }, - success() { - this.$oruga.notification.open({ - message: 'Something happened correctly!', - variant: 'success', - closable: true - }) - }, - toast() { - this.$oruga.notification.open({ - message: 'Something happened correctly!', - rootClass: 'toast-notification', - position: 'top' - }) - }, - queueToast() { - this.$oruga.notification.open({ - message: 'Something happened correctly!', - rootClass: 'toast-notification', - position: 'top', - queue: true - }) - }, - danger() { - const notif = this.$oruga.notification.open({ - duration: 5000, - message: `Something's not good, also I'm on <b>bottom</b>`, - position: 'bottom-right', - variant: 'danger', - closable: true, - onClose: () => { - this.$oruga.notification.open('Custom notification closed!') - } - }) - }, - component() { - this.$oruga.notification.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: NotificationForm, - position: 'bottom-right', - variant: 'warning', - indefinite: true - }) - }, - async promise() { - const instance = this.$oruga.notification.open({ - message: "Notification with promise response. The promise returns how the notification was closed. (value from $emit('close', value)", - position: 'top', - variant: 'info', - duration: 5000, - closable: true - }) - - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const ret = await instance.promise - - this.$oruga.notification.open({ - message: 'Notification was resolved with ' + JSON.stringify(ret), - position: 'top', - variant: 'success', - duration: 2000 - }) - }, - indefinite() { - this.$oruga.notification.open({ - message: 'Indefinite sticky notification', - closable: true, - indefinite: true - }) - }, - closeAll() { - // any parameter here is passed to the onClose handler and resolved to the promise - // for each open notification - this.$oruga.notification.closeAll({ action: 'closeAll' }) - } - } - } -</script> -<style> - .toast-notification { - margin: 0.5em 0; - text-align: center; - box-shadow: 0 1px 4px rgb(0 0 0 / 12%), 0 0 6px rgb(0 0 0 / 4%); - border-radius: 2em; - padding: 0.75em 1.5em; - pointer-events: auto; - color: rgba(0, 0, 0, 0.7); - background: #ffdd57; - } -</style> -``` - -::: - -### Base - -::: demo - -```html -<template> - <section> - <o-notification closable aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification closable variant="info" aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification closable variant="success" aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification closable variant="warning" aria-close-label="Close notification" role="alert"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification closable variant="danger" aria-close-label="Close notification" role="alert"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - </section> -</template> -<script> - export default {} -</script> -``` - -::: - -### Use types - -::: demo - -```html -<template> - <section> - <o-notification closable type="info" variant="info" aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - </section> -</template> -<script> - export default {} -</script> -``` - -::: - -### Add custom buttons - -::: demo - -```html -<template> - <section> - <o-notification aria-close-label="Close notification" v-slot="{closeNotification}"> - <div class="notification-content"> - <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit</span> - <o-button label="Cancel" size="small" @click="closeNotification" /> - </div> - </o-notification> - </section> -</template> -<script> - export default {} -</script> -<style> - .notification-content { - display: flex; - } -</style> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_notification.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-notification v-bind="s"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "noticeClass", - description: "Root class of the notice", - nospec: true - }, - { - class: "noticePositionClass", - description: "Class of the notice when positioned", - properties: ["position"], - suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'], - action: (cmp) => { - cmp.data.position = 'top-right'; - }, - nospec: true - }, - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "closeClass", - description: "Class of the close button container", - properties: ["closable"], - action: (cmp) => { - cmp.data.closable = true; - }, - }, - { - class: "contentClass", - description: "Class of the content element" - }, - { - class: "iconClass", - description: "Class of the icon on the left", - properties: ["type"], - action: (cmp) => { - cmp.data.type = 'info'; - }, - }, - { - class: "positionClass", - description: "Class of the element when positioned", - properties: ["position"], - suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'], - action: (cmp) => { - cmp.data.position = 'top-right'; - }, - }, - { - class: "wrapperClass", - description: "Class of the wrapper element" - }, - { - class: "variantClass", - description: "Class of the notification variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - }, - }, - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| active | Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding | boolean | - | true | -| animation | Custom animation (transition name). | string | - | 'fade' | -| ariaCloseLabel | Label for the close button, to be read by accessibility screenreaders. | string | - | | -| autoClose | Hide notification after duration only not programmatic. | boolean | - | false | -| closable | Adds an 'X' button that closes the notification. | boolean | - | false | -| closeIcon | Close icon name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br> closeIcon: 'close'<br>}</code> | -| closeIconSize | Size of close icon | string | - | 'small' | -| component | Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ this.\$emit('close') | object\|func | - | | -| duration | Visibility duration in miliseconds. | number | - | 2000 | -| events | Events to be binded to the injected component | object | - | | -| hasIcon | Adds an icon on the left side depending on the type (or the icon prop if defined). | boolean | - | | -| icon | Icon name to use with has-icon. | string | - | | -| iconPack | Icon pack to use. | string | - | | -| iconSize | Icon size | string | - | 'large' | -| message | Message text (can contain HTML). | string | - | | -| override | Override classes | boolean | - | false | -| position | Which position the notification will appear when programmatically | string | `top-right`, `top`, `top-left`, `bottom-right`, `bottom`, `bottom-left` | | -| props | Props to be binded to the injected component | object | - | | -| type | Type (color) of the notification, optional. | string | - | | -| variant | Color of the control, optional | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -### Events - -| Event name | Properties | Description | -| ------------- | ---------- | ----------- | -| close | | -| update:active | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - ---- - -# Notification Notice - -> <CarbonAds /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| container | DOM element the toast will be created on. Note that this also changes the position of the toast from fixed to absolute. Meaning that the container should be fixed. | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br> containerElement: undefined<br>}</code> | -| duration | Visibility duration in miliseconds. | number | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br> duration: 1000<br>}</code> | -| indefinite | Show the Notification indefinitely until it is dismissed when programmatically. | boolean | - | false | -| message | Message text (can contain HTML). | string\|array | - | | -| onClose | Callback function to call after close (programmatically close or user canceled) | func | - | Default function (see source code) | -| override | Override classes | boolean | - | false | -| position | Which position the notification will appear when programmatically. | string | `top-right`, `top`, `top-left`, `bottom-right`, `bottom`, `bottom-left` | 'top' | -| queue | If should queue with others notices (snackbar/toast/notification). | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> notification: {<br> noticeQueue: false<br>}</code> | -| type | Type (color) of the notification, optional. | string | - | | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| close | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------- | ------------------------------------- | ---------------------------- | -| --oruga-notification-background-color | \$notification-background-color | \$primary | -| --oruga-notification-border-radius | \$notification-border-radius | 4px | -| --oruga-notification-padding | \$notification-padding | 1.75em 1.75em | -| --oruga-notification-margin-bottom | \$notification-margin-bottom | 1.5rem | -| --oruga-notification-animantion | \$notification-animantion | append-animate .3s linear | -| --oruga-notification-color | \$notification-color | \$white | -| --oruga-notification-close-border-radius | \$notification-close-border-radius | \$base-rounded-border-radius | -| --oruga-notification-close-right | \$notification-close-right | .5rem | -| --oruga-notification-close-top | \$notification-close-top | .5rem | -| --oruga-notification-close-size | \$notification-close-size | 20px | -| --oruga-notification-close-color | \$notification-close-color | \$white | -| --oruga-notification-close-background-color | \$notification-close-background-color | hsla(0,0%,4%,.2) | -| --oruga-notification-icon-margin-right | \$notification-icon-margin-right | 1rem | -| --oruga-notification-notices-padding | \$notification-notices-padding | 2em | -| --oruga-notification-notices-zindex | \$notification-notices-zindex | 1000 | diff --git a/packages/docs/components/Pagination.md b/packages/docs/components/Pagination.md deleted file mode 100644 index 43486c9e2..000000000 --- a/packages/docs/components/Pagination.md +++ /dev/null @@ -1,413 +0,0 @@ ---- -title: Pagination ---- - -# Pagination - -> A responsive and flexible pagination - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/pagination/examples/Pagination.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-field label="Total"> - <o-input type="number" v-model="total"></o-input> - </o-field> - <o-field label="Items per page"> - <o-input type="number" v-model="perPage"></o-input> - </o-field> - </o-field> - <o-field grouped group-multiline> - <o-field label="Show buttons before current"> - <o-input type="number" v-model="rangeBefore" min="0"></o-input> - </o-field> - <o-field label="Show buttons after current"> - <o-input type="number" v-model="rangeAfter" min="0"></o-input> - </o-field> - </o-field> - <o-field grouped group-multiline> - <o-field label="Order"> - <o-select v-model="order"> - <option value="">default</option> - <option value="centered">centered</option> - <option value="right">right</option> - </o-select> - </o-field> - <o-field label="Size"> - <o-select v-model="size"> - <option value="">default</option> - <option value="small">small</option> - <option value="medium">medium</option> - <option value="large">large</option> - </o-select> - </o-field> - </o-field> - <o-field grouped group-multiline> - <o-field label="Previous icon"> - <o-select v-model="prevIcon"> - <option value="chevron-left">Chevron</option> - <option value="arrow-left">Arrow</option> - </o-select> - </o-field> - <o-field label="Next icon"> - <o-select v-model="nextIcon"> - <option value="chevron-right">Chevron</option> - <option value="arrow-right">Arrow</option> - </o-select> - </o-field> - </o-field> - <div class="block"> - <o-switch v-model="isSimple">Simple</o-switch> - <o-switch v-model="isRounded">Rounded</o-switch> - </div> - - <hr /> - <o-pagination - :total="total" - :current.sync="current" - :range-before="rangeBefore" - :range-after="rangeAfter" - :order="order" - :size="size" - :simple="isSimple" - :rounded="isRounded" - :per-page="perPage" - :icon-prev="prevIcon" - :icon-next="nextIcon" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - > - </o-pagination> - </section> -</template> - -<script> - export default { - data() { - return { - total: 200, - current: 10, - perPage: 10, - rangeBefore: 3, - rangeAfter: 1, - order: '', - size: '', - isSimple: false, - isRounded: false, - prevIcon: 'chevron-left', - nextIcon: 'chevron-right' - } - } - } -</script> -``` - -::: - -### Slots - -::: demo - -```html -<template> - <section> - <o-pagination :total="200" :current.sync="current" :per-page="10"> - <o-pagination-button slot-scope="props" :page="props.page" :id="`page${props.page.number}`"> - {{ convertToRoman(props.page.number) }} - </o-pagination-button> - - <o-pagination-button slot="previous" slot-scope="props" :page="props.page"> - Previous - </o-pagination-button> - - <o-pagination-button slot="next" slot-scope="props" :page="props.page"> - Next - </o-pagination-button> - </o-pagination> - </section> -</template> - -<script> - export default { - data() { - return { - current: 10, - basicRomanNumeral: [ - '', - 'I', - 'II', - 'III', - 'IV', - 'V', - 'VI', - 'VII', - 'VIII', - 'IX', - '', - 'X', - 'XX', - 'XXX', - 'XL', - 'L', - 'LX', - 'LXX', - 'LXXX', - 'XC', - '', - 'C', - 'CC', - 'CCC', - 'CD', - 'D', - 'DC', - 'DCC', - 'DCCC', - 'CM', - '', - 'M', - 'MM', - 'MMM' - ] - } - }, - methods: { - convertToRoman(num) { - const numArray = num.toString().split('') - const base = numArray.length - let count = base - 1 - const convertedRoman = numArray.reduce((roman, digit) => { - const digitRoman = this.basicRomanNumeral[+digit + count * 10] - const result = roman + digitRoman - count -= 1 - return result - }, '') - return convertedRoman - } - } - /* - watch: { - $route: { - immediate: true, - handler(newVal, oldVal) { - if (newVal.hash) { - this.current = parseInt(newVal.hash.replace(/\#page/g, '')) - } - }, - }, - } - */ - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_pagination.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-pagination - v-bind='s' - :total="total" - :current.sync="current" - :range-before="rangeBefore" - :range-after="rangeAfter" - :per-page="perPage" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - icon-prev='chevron-left' - icon-next='chevron-right' - > - </o-pagination> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - total: 200, - current: 10, - perPage: 10, - rangeBefore: 3, - rangeAfter: 1, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "mobileClass", - description: "Class of pagination component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "prevBtnClass", - description: "Class of the prev. button", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "nextBtnClass", - description: "Class of the next button", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "listClass", - description: "Class of the pagination list", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "linkClass", - description: "Class of the link button", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "linkCurrentClass", - description: "Class of the current link", - }, - { - class: "ellipsisClass", - description: "Class of the pagination ellipsis ", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "infoClass", - description: "Class of the info in `simple` mode", - properties: ['simple'], - action: (cmp) => { - cmp.data.simple = true; - } - }, - { - class: "orderClass", - description: "Class of the pagination order", - properties: ['order'], - suffixes: ['centered', 'right', 'left'], - action: (cmp) => { - cmp.data.order = 'centered'; - } - }, - { - class: "simpleClass", - description: "Class of the pagination in `simple` mode", - properties: ['simple'], - action: (cmp) => { - cmp.data.simple = true; - } - }, - { - class: "roundedClass", - description: "Class of the pagination when rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - } - }, - { - class: "linkDisabledClass", - description: "Class of the disabled link", - action: () => { - this.current = 20; - } - }, - { - class: "sizeClass", - description: "Class for the pagination size", - properties: ['size'], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'small'; - } - } - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ----------------- | ------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -| ariaCurrentLabel | | string | - | | -| ariaNextLabel | | string | - | | -| ariaPageLabel | | string | - | | -| ariaPreviousLabel | | string | - | | -| current | Current page number, use the .sync modifier (Vue 2.x) or v-model:current (Vue 3.x) to make it two-way binding | number\|string | - | 1 | -| iconNext | Icon to use for next button | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br> iconNext: 'chevron-right'<br>}</code> | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconPrev | Icon to use for previous button | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br> iconPrev: 'chevron-left'<br>}</code> | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| order | Buttons order, optional | string | `centered`, `right`, `left` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br> order: 'right'<br>}</code> | -| override | Override classes | boolean | - | false | -| perPage | Items count for each page | number\|string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> pagination: {<br> perPage: 20<br>}</code> | -| rangeAfter | Number of pagination items to show after current page | number\|string | - | 1 | -| rangeBefore | Number of pagination items to show before current page | number\|string | - | 1 | -| rounded | Rounded button styles | boolean | - | | -| simple | Simple style | boolean | - | | -| size | Pagination size, optional | string | `small`, `medium`, `large` | | -| total | Total count of items | number\|string | - | | - -## Events - -| Event name | Properties | Description | -| -------------- | ---------- | ----------- | -| change | | -| update:current | | - -## Slots - -| Name | Description | Bindings | -| -------- | ----------- | -------- | -| previous | | <br><br> | -| next | | <br><br> | -| default | | <br><br> | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------------ | ------------------------------------------ | ---------------------------- | -| --oruga-pagination-disabled-opacity | \$pagination-disabled-opacity | \$base-disabled-opacity | -| --oruga-pagination-ellipsis-color | \$pagination-ellipsis-color | \$grey-light | -| --oruga-pagination-link-border-color | \$pagination-link-border-color | \$grey-lighter | -| --oruga-pagination-link-border-radius | \$pagination-link-border-radius | \$base-border-radius | -| --oruga-pagination-link-border | \$pagination-link-border | 1px solid transparent | -| --oruga-pagination-link-color | \$pagination-link-color | #363636 | -| --oruga-pagination-link-current-background-color | \$pagination-link-current-background-color | \$primary | -| --oruga-pagination-link-current-border-color | \$pagination-link-current-border-color | \$primary // !!! | -| --oruga-pagination-link-current-color | \$pagination-link-current-color | #fff | -| --oruga-pagination-link-height | \$pagination-link-height | 2.25em | -| --oruga-pagination-link-hover-border-color | \$pagination-link-hover-border-color | \$grey-light | -| --oruga-pagination-link-line-height | \$pagination-link-line-height | \$base-line-height | -| --oruga-pagination-link-margin | \$pagination-link-margin | .25rem | -| --oruga-pagination-link-min-width | \$pagination-link-min-width | 2.25em | -| --oruga-pagination-link-padding | \$pagination-link-padding | .5em .5em | -| --oruga-pagination-margin | \$pagination-margin | -.25rem | -| --oruga-pagination-rounded-border-radius | \$pagination-rounded-border-radius | \$base-rounded-border-radius | diff --git a/packages/docs/components/Radio.md b/packages/docs/components/Radio.md deleted file mode 100644 index 2e6f5953e..000000000 --- a/packages/docs/components/Radio.md +++ /dev/null @@ -1,225 +0,0 @@ ---- -title: Radio ---- - -# Radio - -> Select an option from a set - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/radio/examples/Radio.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <div class="block"> - <o-radio v-model="radio" name="name" native-value="Flint"> - Flint - </o-radio> - <o-radio v-model="radio" name="name" native-value="Silver"> - Silver - </o-radio> - <o-radio v-model="radio" name="name" native-value="Jack"> - Jack - </o-radio> - <o-radio v-model="radio" name="name" native-value="Vane" disabled> - Vane - </o-radio> - </div> - <p class="content"> - <b>Selection:</b> - {{ radio }} - </p> - </section> -</template> - -<script> - export default { - data() { - return { - radio: 'Jack' - } - } - } -</script> -``` - -::: - -### Variants - -::: demo - -```html -<template> - <section> - <div class="field"> - <o-radio v-model="radio" native-value="default"> - Default - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" native-value="info" variant="info"> - Info - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" native-value="success" variant="success"> - Success - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" native-value="danger" variant="danger"> - Danger - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" native-value="warning" variant="warning"> - Warning - </o-radio> - </div> - </section> -</template> - -<script> - export default { - data() { - return { - radio: 'default' - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_radio.scss) - -<br /> -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-radio v-model="s.checkbox" native-value="default" v-bind="s">Radio</o-radio> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - -export default { - data() { - return { - inspectData: [ - { - class: 'rootClass', - description : 'Class of the root element' - }, - { - class: 'labelClass', - description : 'Class of the radio label' - }, - { - class: 'checkClass', - description : 'Class of the native radio element' - }, - { - class: 'checkedClass', - description : 'Class of the root element when checked', - action: (cmp) => { - cmp.data.checkbox = 'default'; - } - }, - { - class: 'checkCheckedClass', - description : 'Class of the native radio element when checked', - action: (cmp) => { - cmp.data.checkbox = 'default'; - } - }, - { - class: 'sizeClass', - description : 'Class of the radio size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: 'disabledClass', - description : 'Class when radio is disabled', - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: 'variantClass', - description : 'Class of the radio variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - } - ] - } - } -} -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------- | ------- | -| disabled | Same as native disabled | boolean | - | | -| name | Same as native name | string | - | | -| nativeValue | Same as native value | string\|number\|boolean\|array | - | | -| override | Override classes | boolean | - | false | -| required | | boolean | - | | -| size | Size of the control, optional | string | `small`, `medium`, `large` | | -| v-model | | string\|number\|boolean\|array | - | | -| variant | Color of the control, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ---------------------------------------- | ---------------------------------- | ----------------------- | -| --oruga-radio-active-background-color | \$radio-active-background-color | \$primary | -| --oruga-radio-checked-box-shadow-length | \$radio-checked-box-shadow-length | 0 0 0.5em | -| --oruga-radio-checked-box-shadow-opacity | \$radio-checked-box-shadow-opacity | 0.8 | -| --oruga-radio-disabled-opacity | \$radio-disabled-opacity | \$base-disabled-opacity | -| --oruga-radio-label-padding | \$radio-label-padding | 0 0 0 .5em | -| --oruga-radio-margin-sibiling | \$radio-margin-sibiling | 0.5em | -| --oruga-radio-size | \$radio-size | 1rem | -| --oruga-radio-line-height | \$radio-line-height | 1.25 | diff --git a/packages/docs/components/Select.md b/packages/docs/components/Select.md deleted file mode 100644 index c5a6317e6..000000000 --- a/packages/docs/components/Select.md +++ /dev/null @@ -1,342 +0,0 @@ ---- -title: Select ---- - -# Select - -> Select an item in a dropdown list. Use with Field to access all functionalities - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/select/examples/Select.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field label="Simple"> - <o-select placeholder="Select a name"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Grouped"> - <o-select placeholder="Select a character" icon="user"> - <optgroup label="Black Sails"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - <option value="vane">Vane</option> - <option value="billy">Billy</option> - <option value="jack">Jack</option> - </optgroup> - - <optgroup label="Breaking Bad"> - <option value="heisenberg">Heisenberg</option> - <option value="jesse">Jesse</option> - <option value="saul">Saul</option> - <option value="mike">Mike</option> - </optgroup> - - <optgroup label="Game of Thrones"> - <option value="tyrion-lannister">Tyrion Lannister</option> - <option value="jamie-lannister">Jamie Lannister</option> - <option value="daenerys-targaryen">Daenerys Targaryen</option> - <option value="jon-snow">Jon Snow</option> - </optgroup> - </o-select> - </o-field> - - <o-field label="Error" variant="danger" message="Something went wrong with this field"> - <o-select placeholder="Select a character"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Rounded"> - <o-select placeholder="Select a character" rounded> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Disabled"> - <o-select placeholder="Select a character" disabled> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Disabled option"> - <o-select placeholder="Select a character"> - <option value="flint">Flint</option> - <option value="silver" disabled>Silver</option> - </o-select> - </o-field> - - <o-field label="Expanded"> - <o-select placeholder="Select a character" expanded> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Size 'large'"> - <o-select placeholder="Large" size="large"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Multiple"> - <o-select multiple native-size="8" v-model="selectedOptions"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - <option value="vane">Vane</option> - <option value="billy">Billy</option> - <option value="jack">Jack</option> - <option value="heisenberg">Heisenberg</option> - <option value="jesse">Jesse</option> - <option value="saul">Saul</option> - <option value="mike">Mike</option> - </o-select> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - selectedOptions: [] - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_select.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field :variant="s.fieldvariant" :message="s.fieldmessage"> - <o-select placeholder="Select a character" v-bind="s" v-model="selectedOptions"> - <optgroup label="Black Sails"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - <option value="vane">Vane</option> - <option value="billy">Billy</option> - <option value="jack">Jack</option> - </optgroup> - <optgroup label="Breaking Bad"> - <option value="heisenberg">Heisenberg</option> - <option value="jesse">Jesse</option> - <option value="saul">Saul</option> - <option value="mike">Mike</option> - </optgroup> - </o-select> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - selectedOptions: null, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: () => { - this.selectedOptions = null; - } - }, - { - class: "iconLeftSpaceClass", - description: "Class of the left icon space inside the select", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - this.selectedOptions = null; - } - }, - { - class: "iconRightSpaceClass", - description: "Class of the right icon space inside the select", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - this.selectedOptions = null; - } - }, - { - class: "roundedClass", - description: "Class of select when rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - this.selectedOptions = null; - } - }, - { - class: "multipleClass", - description: "Class of the select when multiple mode is active", - properties: ['multiple'], - action: (cmp) => { - cmp.data.multiple = true; - this.selectedOptions = []; - } - }, - { - class: "expandedClass", - description: "Class of select when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - this.selectedOptions = null; - } - }, - { - class: "iconLeftClass", - description: "Class of the left icon", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - this.selectedOptions = null; - } - }, - { - class: "iconRightClass", - description: "Class of the right icon", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - this.selectedOptions = null; - } - }, - { - class: "sizeClass", - description: "Class of the select size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - this.selectedOptions = null; - } - }, - { - class: "variantClass", - description : 'Class of the select variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.fieldvariant = 'info'; - cmp.data.fieldmessage = "Info for this field" - this.selectedOptions = null; - } - }, - { - class: "selectClass", - description: "Class of the native select element" - }, - { - class: "placeholderClass", - description: "Class of the select placeholder", - action: () => { - this.selectedOptions = null; - } - }, - { - class: "arrowClass", - description: "Class of the select arrow", - warning: "It applies the arrow icon using background-image and background-position on select element. An alternative to override it is iconRight prop (globally or not)", - action: () => { - this.selectedOptions = null; - } - } - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------ | ----------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| icon | Icon name to be added | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> select: {<br> iconPack: undefined<br>}</code> | -| iconRight | Icon name to be added on the right side | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> select: {<br> iconRight: undefined<br>}</code> | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| multiple | | boolean | - | | -| nativeSize | Same as native size | string\|number | - | | -| override | Override classes | boolean | - | false | -| placeholder | Text when nothing is selected | string | - | | -| rounded | Makes the element rounded | boolean | - | | -| size | Vertical size of input, optional | string | `small`, `medium`, `large` | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| v-model | | string\|number\|boolean\|object\|array | - | null | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| variant | Color of the control, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| blur | | -| focus | | -| invalid | | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------ | ------------------------------ | ----------------------------------------------------- | -| --oruga-select-background-color | \$select-background-color | #fff | -| --oruga-select-border-color | \$select-border-color | \$grey-lighter | -| --oruga-select-border-width | \$select-border-width | 1px | -| --oruga-select-border-style | \$select-border-style | solid | -| --oruga-select-border-radius | \$select-border-radius | \$base-border-radius | -| --oruga-select-rounded-border-radius | \$select-rounded-border-radius | \$base-rounded-border-radius | -| --oruga-select-box-shadow | \$select-box-shadow | none | -| --oruga-select-color | \$select-color | #363636 | -| --oruga-select-icon-zindex | \$select-icon-zindex | 4 | -| --oruga-select-height | \$select-height | \$control-height | -| --oruga-select-arrow-size | \$select-arrow-size | 1rem | -| --oruga-select-line-height | \$select-line-height | \$base-line-height | -| --oruga-select-margin | \$select-margin | 0 | -| --oruga-select-max-width | \$select-max-width | 100% | -| --oruga-select-width | \$select-width | 100% | -| --oruga-select-placeholder-opacity | \$select-placeholder-opacity | \$base-disabled-opacity | -| --oruga-select-padding | \$select-padding | $control-padding-vertical $control-padding-horizontal | diff --git a/packages/docs/components/Sidebar.md b/packages/docs/components/Sidebar.md deleted file mode 100644 index a406ed8a8..000000000 --- a/packages/docs/components/Sidebar.md +++ /dev/null @@ -1,371 +0,0 @@ ---- -title: Sidebar ---- - -# Sidebar - -> A sidebar to use as left/right overlay or static - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/sidebar/examples/Sidebar.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-sidebar :fullheight="fullheight" :fullwidth="fullwidth" :overlay="overlay" :right="right" :open.sync="open"> - <o-button v-if="fullwidth" icon-left="times" label="Close" @click="open = false" /> - <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" /> - <h3>Example</h3> - </o-sidebar> - <div class="block"> - <o-field grouped group-multiline> - <o-switch v-model="overlay">Overlay</o-switch> - <o-switch v-model="fullheight">Fullheight</o-switch> - <o-switch v-model="fullwidth">Fullwidth</o-switch> - <o-switch v-model="right">Right</o-switch> - </o-field> - </div> - - <br /> - - <o-button @click="open = true">Show</o-button> - </section> -</template> - -<script> - export default { - data() { - return { - open: false, - overlay: true, - fullheight: true, - fullwidth: false, - right: false - } - } - } -</script> -``` - -::: - -### Static - -::: demo - -```html -<template> - <div class="sidebar-page"> - <section class="sidebar-layout"> - <o-sidebar position="static" :mobile="mobile" :expand-on-hover="expandOnHover" :reduce="reduce" open> - <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" /> - <section style="padding: 1em"> - <h5>Example 1</h5> - <h5>Example 2</h5> - <h5>Example 3</h5> - <h5>Example 4</h5> - <h5>Example 5</h5> - </section> - </o-sidebar> - - <div style="padding: 1em"> - <o-field> - <o-switch v-model="reduce">Reduced</o-switch> - </o-field> - <o-field> - <o-switch v-model="expandOnHover">Expand on hover</o-switch> - </o-field> - <br /> - <o-field label="Mobile Layout"> - <o-select v-model="mobile"> - <option :value="null"></option> - <option value="reduced">Reduced</option> - <option value="hidden">Hidden</option> - <option value="fullwidth">Fullwidth</option> - </o-select> - </o-field> - </div> - </section> - </div> -</template> - -<script> - export default { - data() { - return { - expandOnHover: false, - mobile: 'reduced', - reduce: false - } - } - } -</script> - -<style> - .sidebar-page { - display: flex; - flex-direction: column; - width: 100%; - min-height: 100%; - } - .sidebar-layout { - display: flex; - flex-direction: row; - min-height: 100%; - } -</style> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_sidebar.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <div class="sidebar-page"> - <section class="sidebar-layout" v-if="position === 'static'"> - <o-sidebar v-bind="s" position="static" open> - <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" /> - <section style="padding: 1em"> - <h5>Example 1</h5> - <h5>Example 2</h5> - <h5>Example 3</h5> - <h5>Example 4</h5> - <h5>Example 5</h5> - </section> - </o-sidebar> - </section> - <section class="sidebar-layout" v-if="position !== 'static'"> - <o-sidebar v-bind="s" :position="position" :open.sync="open" variant="primary" style="--oruga-sidebar-zindex: 50"> - <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" /> - <section style="padding: 1em"> - <h5>Example 1</h5> - <h5>Example 2</h5> - <h5>Example 3</h5> - <h5>Example 4</h5> - <h5>Example 5</h5> - </section> - </o-sidebar> - </section> - </div> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - position: 'static', - open: false, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: () => { - this.position = 'static'; - } - }, - { - class: "mobileClass", - description: "Class of sidebar component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "overlayClass", - description: "Class of the sidebar overlay", - action: (cmp) => { - this.position = 'fixed'; - setTimeout(() => { - this.open = true; - cmp.data.overlay = true - cmp.data.fullheight = true - }, 400) - } - }, - { - class: "contentClass", - description: "Class of the sidebar content", - action: () => { - this.position = 'static'; - } - }, - { - class: "fixedClass", - description: "Class of the sidebar when its position is fixed", - properties: ['position'], - action: (cmp) => { - this.position = 'fixed'; - setTimeout(() => { - this.open = true; - cmp.data.overlay = true - cmp.data.fullheight = true - }, 400) - } - }, - { - class: "staticClass", - description: "Class of the sidebar when its position is static", - properties: ['position'], - action: () => { - this.position = 'static'; - } - }, - { - class: "absoluteClass", - description: "Class of the sidebar when its position is absolute", - properties: ['position'], - warning: "Scroll to the top of this page to see the sidebar", - action: (cmp) => { - this.position = 'absolute'; - setTimeout(() => { - cmp.data.fullheight = true - this.open = true; - }, 400) - } - }, - { - class: "fullheightClass", - description: "Class of the sidebar when is fullheight", - properties: ['fullheight'], - action: (cmp) => { - this.position = 'static'; - cmp.data.fullheight = true; - } - }, - { - class: "fullwidthClass", - description: "Class of the sidebar when is fullwidth", - properties: ['fullwidth'], - action: (cmp) => { - this.position = 'static'; - cmp.data.fullwidth = true; - } - }, - { - class: "rightClass", - description: "Class of the sidebar when is positioned on the right", - properties: ['right'], - action: (cmp) => { - this.position = 'static'; - cmp.data.right = true; - } - }, - { - class: "reduceClass", - description: "Class of the sidebar when reduced", - properties: ['reduce'], - action: (cmp) => { - this.position = 'static'; - cmp.data.reduce = true; - } - }, - { - class: "expandOnHoverClass", - description: "Class of the sidebar when expanded on hover", - properties: ['expandOnHover'], - action: (cmp) => { - this.position = 'static'; - cmp.data.expandOnHover = true; - } - }, - { - class: "expandOnHoverFixedClass", - description: "Class of the sidebar when expanded on hover and its position is fixed", - properties: ['expandOnHover', 'expandOnHoverFixed'], - action: (cmp) => { - this.position = 'fixed'; - setTimeout(() => { - cmp.data.expandOnHover = true; - cmp.data.expandOnHoverFixed = true; - this.open = true; - }, 400) - } - }, - { - class: "variantClass", - description : 'Class of the sidebar variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - this.position = 'static'; - cmp.data.variant = 'warning'; - } - }, - { - class: "visibleClass", - description : 'Class of the sidebar when sidebar is visible', - }, - { - class: "hiddenClass", - description : 'Class of the sidebar when sidebar is hidden', - }, - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| canCancel | Sidebar cancel options | array\|boolean | `true`, `false`, `'escape'`, `'outside'` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> sidebar: {<br> canCancel: ['escape', 'outside']<br>}</code> | -| expandOnHover | Expand sidebar on hover when reduced or mobile is reduce | boolean | - | | -| expandOnHoverFixed | Expand sidebar on hover with fixed position when reduced or mobile is reduce | boolean | - | | -| fullheight | Show sidebar in fullheight | boolean | - | | -| fullwidth | Show sidebar in fullwidth | boolean | - | | -| mobile | Custom layout on mobile | string | `fullwidth`, `reduced`, `hidden` | | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| onCancel | Callback on cancel | func | - | Default function (see source code) | -| open | To control the behaviour of the sidebar programmatically, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding | boolean | - | | -| overlay | Show an overlay like modal | boolean | - | | -| override | Override classes | boolean | - | false | -| position | Skeleton position in relation to the window | string | `fixed`, `absolute`, `static` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> sidebar: {<br> position: 'fixed'<br>}</code> | -| reduce | Show a small sidebar | boolean | - | | -| right | Show the sidebar on right | boolean | - | | -| scroll | | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> sidebar: {<br> scroll: 'clip'<br>}</code> | -| variant | Color of the sidebar, optional | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ----------- | ---------- | ----------- | -| close | | -| update:open | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ---------------------------------------- | ---------------------------------- | ----------------------------------- | -| --oruga-sidebar-overlay | \$sidebar-overlay | hsla(0,0%,4%,.86) | -| --oruga-sidebar-box-shadow | \$sidebar-box-shadow | 5px 0px 13px 3px rgba(\$black, 0.1) | -| --oruga-sidebar-content-background-color | \$sidebar-content-background-color | \$grey-lighter | -| --oruga-sidebar-mobile-width | \$sidebar-mobile-width | 80px | -| --oruga-sidebar-width | \$sidebar-width | 260px | -| --oruga-sidebar-zindex | \$sidebar-zindex | 38 | diff --git a/packages/docs/components/Skeleton.md b/packages/docs/components/Skeleton.md deleted file mode 100644 index c1483a2f2..000000000 --- a/packages/docs/components/Skeleton.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Skeleton ---- - -# Skeleton - -> A placeholder for content to load - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/skeleton/examples/Skeleton.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-switch v-model="animated">Animated</o-switch> - </o-field> - - <o-skeleton width="20%" :animated="animated"></o-skeleton> - - <o-skeleton width="40%" :animated="animated"></o-skeleton> - - <o-skeleton width="80%" :animated="animated"></o-skeleton> - - <o-skeleton :animated="animated"></o-skeleton> - - <o-skeleton :animated="animated" circle width="64px" height="64px"></o-skeleton> - - <o-skeleton :animated="animated" size="large" :count="2"></o-skeleton> - </section> -</template> - -<script> - export default { - data() { - return { - animated: true - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_skeleton.scss) - -<br /> -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-skeleton v-bind="s" width="264px" :count="2"></o-skeleton> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - -export default { - data() { - return { - inspectData: [ - { - class: 'rootClass', - description : 'Class of the root element' - }, - { - class: 'animationClass', - description : 'Class of the skeleton animation', - - action: (cmp) => { - cmp.data.animated = true; - } - }, - { - class: 'positionClass', - description : 'Class of the skeleton position', - properties: ['position'], - suffixes: ['left', 'centered', 'right'], - action: (cmp) => { - cmp.data.position = 'centered'; - } - }, - { - class: 'itemClass', - description : 'Class of the skeleton item' - }, - { - class: 'itemRoundedClass', - description : 'Class of the skeleton item rounded', - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - } - }, - { - class: 'sizeClass', - description : 'Class of the skeleton size', - properties: ['size'], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - } - ] - } - } -} -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | -------------------------------------------- | -------------- | --------------------------- | ------- | -| active | Show or hide loader | boolean | - | true | -| animated | Show a loading animation | boolean | - | true | -| circle | Show a circle shape | boolean | - | | -| count | Number of shapes to display | number | - | 1 | -| height | Custom height | number\|string | - | | -| override | Override classes | boolean | - | false | -| position | Skeleton position in relation to the element | string | `left`, `centered`, `right` | 'left' | -| rounded | Rounded style | boolean | - | true | -| size | Size of skeleton | string | `small`, `medium`, `large` | | -| width | Custom width | number\|string | - | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------ | ------------------------ | ------------------------------------------------------------------------------------------- | -| --oruga-skeleton-background | \$skeleton-background | linear-gradient(90deg, $grey-lighter 25%, rgba($grey-lighter, 0.5) 50%, \$grey-lighter 75%) | -| --oruga-skeleton-border-radius | \$skeleton-border-radius | \$base-border-radius | -| --oruga-skeleton-duration | \$skeleton-duration | 1.5s | -| --oruga-skeleton-margin | \$skeleton-margin | .5rem 0 0 0 | diff --git a/packages/docs/components/Slider.md b/packages/docs/components/Slider.md deleted file mode 100644 index 8e79f01bf..000000000 --- a/packages/docs/components/Slider.md +++ /dev/null @@ -1,369 +0,0 @@ ---- -title: Slider ---- - -# Slider - -> A slider to select a value or range from a given range - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/slider/examples/Slider.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field label="Simple"> - <o-slider v-model="value"></o-slider> - </o-field> - - <o-field label="Warning"> - <o-slider v-model="value" variant="warning"></o-slider> - </o-field> - - <o-field label="Large"> - <o-slider v-model="value" size="large"></o-slider> - </o-field> - - <o-field label="Disabled"> - <o-slider :value="30" disabled></o-slider> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - value: 5 - } - } - } -</script> -``` - -::: - -### Customize - -::: demo - -```html -<template> - <section> - <o-field label="Tooltip type"> - <o-slider v-model="sliderValue" :tooltip-variant="sliderType"></o-slider> - </o-field> - - <o-field label="Hide tooltip"> - <o-slider :tooltip="false"></o-slider> - </o-field> - - <o-field label="Custom tooltip label"> - <o-slider :custom-formatter="val => val + '%'"></o-slider> - </o-field> - - <o-field label="Rounded thumb"> - <o-slider rounded></o-slider> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - sliderValue: 0 - } - }, - computed: { - sliderType() { - if (this.sliderValue > 25 && this.sliderValue < 75) { - return 'warning' - } else if (this.sliderValue >= 75) { - return 'success' - } - return 'danger' - } - } - } -</script> -``` - -::: - -### Tick and label - -::: demo - -```html -<template> - <section> - <o-field label="Show ticks"> - <o-slider :min="1" :max="10" ticks></o-slider> - </o-field> - - <o-field label="Custom tick and label"> - <o-slider size="medium" :min="0" :max="10"> - <template v-for="val in [3, 5, 8]"> - <o-slider-tick :value="val" :key="val">{{ val }}</o-slider-tick> - </template> - </o-slider> - </o-field> - - <o-field label="Fan"> - <o-slider :min="0" :max="3" aria-label="Fan" :tooltip="false"> - <o-slider-tick :value="0">Off</o-slider-tick> - <o-slider-tick :value="1">Low</o-slider-tick> - <o-slider-tick :value="2">High</o-slider-tick> - <o-slider-tick :value="3">Auto</o-slider-tick> - </o-slider> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Range - -::: demo - -```html -<template> - <section> - <o-field> - <o-slider v-model="numbers" :min="1" :max="15" :step="0.5" ticks> </o-slider> - </o-field> - - <o-field> - <o-slider v-model="numbers2" variant="danger" :min="-2" :max="8" :step="2"> </o-slider> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - numbers: [2, 5], - numbers2: [2, 6] - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_slider.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-slider v-bind="s" :min="1" :max="10" :value="4"> - <template v-for="val in [1, 2, 3, 4, 5, 6, 7, 8, 9]"> - <o-slider-tick v-bind="s" :value="val" :key="val">{{ val }}</o-slider-tick> - </template> - </o-slider> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - subitem: "slider-tick", - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "trackClass", - description: "Class of the slider track", - action: () => { - } - }, - { - class: "fillClass", - description: "Class of the filled part of the slider", - action: () => { - } - }, - { - class: "thumbRoundedClass", - description: "Class when the slider is rounded", - properties: ["rounded"], - action: (cmp) => { - cmp.data.rounded = true - } - }, - { - class: "thumbDraggingClass", - description: "Class when the thumb gets dragged", - warning: "Drag the thumb to see it in action!", - action: () => { - } - }, - { - class: "disabledClass", - description: "Class when slider is disabled", - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "thumbWrapperClass", - description: "Class of the thumb wrapper", - action: (cmp) => { - cmp.data.fullScreen = true; - } - }, - { - class: "thumbClass", - description: "Class of the thumb", - action: (cmp) => { - cmp.data.fullScreen = true; - } - }, - { - class: "variantClass", - description : 'Class of the slider variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - this.position = 'static'; - cmp.data.variant = 'warning'; - } - }, - { - class: "tickClass", - description: "Class of slider tick", - properties: ["ticks"], - subitem: true, - }, - { - class: "tickHiddenClass", - description: "Class when slider tick is hidden", - properties: ["ticks"], - subitem: true, - }, - { - class: "tickLabelClass", - description: "Class of tick label", - properties: ["ticks"], - subitem: true, - } - ] - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ----------------- | ------------------------------------------------ | ------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| ariaLabel | | string\|array | - | | -| biggerSliderFocus | Increases slider size on focus | boolean | - | false | -| customFormatter | Function to format the tooltip label for display | func | - | | -| disabled | | boolean | - | false | -| format | | string | - | 'raw' | -| indicator | | boolean | - | false | -| lazy | Update v-model only when dragging is finished | boolean | - | false | -| locale | | string\|array | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> locale: undefined<br>}</code> | -| max | Maximum value | number | - | 100 | -| min | Minimum value | number | - | 0 | -| override | Override classes | boolean | - | false | -| rounded | Rounded thumb | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> slider: {<br> rounded: false<br>}</code> | -| size | Vertical size of slider, optional | string | `small`, `medium`, `large` | | -| step | Step interval of ticks | number | - | 1 | -| ticks | Show tick marks | boolean | - | false | -| tooltip | Show tooltip when thumb is being dragged | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> slider: {<br> tooltip: true<br>}</code> | -| tooltipAlways | Tooltip displays always | boolean | - | false | -| tooltipVariant | Color of the tooltip | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | -| v-model | | number\|array | - | 0 | -| variant | Color of the slider | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| dragstart | | -| dragend | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - ---- - -# Slider Tick - -> <CarbonAds /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | -------------------- | ------- | ------ | ------- | -| override | Override classes | boolean | - | false | -| value | Value of single tick | number | - | 0 | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------ | ------------------------------ | ---------------------------- | -| --oruga-slider-background | \$slider-background | transparent | -| --oruga-slider-margin | \$slider-margin | 1em 0 | -| --oruga-slider-mark-size | \$slider-mark-size | 0.75rem | -| --oruga-slider-font-size | \$slider-font-size | \$base-font-size | -| --oruga-slider-rounded-borded-radius | \$slider-rounded-borded-radius | \$base-rounded-border-radius | -| --oruga-slider-thumb-background | \$slider-thumb-background | \$white | -| --oruga-slider-thumb-border | \$slider-thumb-border | 1px solid \$grey-light | -| --oruga-slider-thumb-radius | \$slider-thumb-radius | \$base-border-radius | -| --oruga-slider-thumb-shadow | \$slider-thumb-shadow | none | -| --oruga-slider-thumb-to-track-ratio | \$slider-thumb-to-track-ratio | 2 | -| --oruga-slider-thumb-transform | \$slider-thumb-transform | scale(1.25) | -| --oruga-slider-tick-background | \$slider-tick-background | \$primary | -| --oruga-slider-tick-radius | \$slider-tick-radius | \$base-border-radius | -| --oruga-slider-tick-to-track-ratio | \$slider-tick-to-track-ratio | 0.5 | -| --oruga-slider-tick-width | \$slider-tick-width | 3px | -| --oruga-slider-track-background | \$slider-track-background | \$grey-lighter | -| --oruga-slider-fill-background | \$slider-fill-background | \$primary | -| --oruga-slider-track-border-radius | \$slider-track-border-radius | \$base-border-radius | -| --oruga-slider-track-border | \$slider-track-border | 0px solid \$grey | -| --oruga-slider-track-disabled | \$slider-track-disabled | 0.5 | -| --oruga-slider-track-radius | \$slider-track-radius | \$base-border-radius | -| --oruga-slider-track-shadow | \$slider-track-shadow | 0px 0px 0px \$grey | diff --git a/packages/docs/components/Steps.md b/packages/docs/components/Steps.md deleted file mode 100644 index cf70559fc..000000000 --- a/packages/docs/components/Steps.md +++ /dev/null @@ -1,544 +0,0 @@ ---- -title: Steps ---- - -# Steps - -> Responsive horizontal process steps - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/steps/examples/Steps.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <p> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="showSocial"> Show Social step </o-switch> - </div> - <div class="control"> - <o-switch v-model="isAnimated"> Animated </o-switch> - </div> - <div class="control"> - <o-switch v-model="isRounded"> Rounded </o-switch> - </div> - <div class="control"> - <o-switch v-model="isStepsClickable"> Clickable Marker </o-switch> - </div> - </o-field> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="hasNavigation"> Navigation Buttons </o-switch> - </div> - <div class="control"> - <o-switch v-model="customNavigation"> Custom Navigation </o-switch> - </div> - <div class="control"> - <o-switch v-model="isProfileSuccess"> Set <code>success</code> for profile </o-switch> - </div> - <div class="control"> - <o-switch v-model="enableProfileActivateEvent"> Enable profile activate event </o-switch> - </div> - </o-field> - <o-field v-if="hasNavigation" grouped group-multiline> - <o-field label="Prev icon"> - <o-select v-model="prevIcon"> - <option value="chevron-left">Chevron</option> - <option value="arrow-left">Arrow</option> - </o-select> - </o-field> - <o-field label="Next icon"> - <o-select v-model="nextIcon"> - <option value="chevron-right">Chevron</option> - <option value="arrow-right">Arrow</option> - </o-select> - </o-field> - <o-field label="Label position"> - <o-select v-model="labelPosition"> - <option value="bottom">Bottom</option> - <option value="right">Right</option> - <option value="left">Left</option> - </o-select> - </o-field> - </o-field> - </p> - <o-steps - v-model="activeStep" - :animated="isAnimated" - :rounded="isRounded" - :has-navigation="hasNavigation" - :icon-prev="prevIcon" - :icon-next="nextIcon" - :label-position="labelPosition" - > - <o-step-item step="1" label="Account" :clickable="isStepsClickable"> - <h1 class="title has-text-centered">Account</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item step="2" label="Profile" :clickable="isStepsClickable" :variant="isProfileSuccess ? 'success': ''" @activate="onProfileActivate"> - <h1 class="title has-text-centered">Profile</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item step="3" :visible="showSocial" label="Social" :clickable="isStepsClickable"> - <h1 class="title has-text-centered">Social</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item :step="showSocial ? '4' : '3'" label="Finish" :clickable="isStepsClickable" disabled> - <h1 class="title has-text-centered">Finish</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <template v-if="customNavigation" slot="navigation" slot-scope="{previous, next}"> - <o-button outlined variant="danger" icon-pack="fas" icon-left="backward" :disabled="previous.disabled" @click.prevent="previous.action"> - Previous - </o-button> - <o-button outlined variant="success" icon-pack="fas" icon-right="forward" :disabled="next.disabled" @click.prevent="next.action"> - Next - </o-button> - </template> - </o-steps> - </section> -</template> - -<script> - export default { - data() { - return { - activeStep: 1, - - showSocial: false, - isAnimated: true, - isRounded: true, - isStepsClickable: false, - - hasNavigation: true, - customNavigation: false, - isProfileSuccess: false, - enableProfileActivateEvent: false, - - prevIcon: 'chevron-left', - nextIcon: 'chevron-right', - labelPosition: 'bottom' - } - }, - methods: { - onProfileActivate() { - if (this.enableProfileActivateEvent) { - alert('Profile Activated') - } - } - } - } -</script> -``` - -::: - -### Variants - -::: demo - -```html -<template> - <section> - <h4>Warning</h4> - <o-steps variant="warning"> - <o-step-item label="Account" icon="user-lock"></o-step-item> - <o-step-item label="Profile" icon="user"></o-step-item> - <o-step-item label="Social" icon="user-plus"></o-step-item> - </o-steps> - - <h4>Info</h4> - <o-steps variant="info"> - <o-step-item label="Account" icon="user-lock"></o-step-item> - <o-step-item label="Profile" icon="user"></o-step-item> - <o-step-item label="Social" icon="user-plus"></o-step-item> - </o-steps> - - <h4>Success</h4> - <o-steps variant="success"> - <o-step-item label="Account" icon="user-lock"></o-step-item> - <o-step-item label="Profile" icon="user"></o-step-item> - <o-step-item label="Social" icon="user-plus"></o-step-item> - </o-steps> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Vertical - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="position" true-value="right"> Right position </o-switch> - </div> - <o-field label="Size"> - <o-select v-model="size" placeholder="Size"> - <option :value="null">Default</option> - <option value="small">Small</option> - <option value="medium">Medium</option> - <option value="large">Large</option> - </o-select> - </o-field> - <o-field label="Label position" label-position="on-border"> - <o-select v-model="labelPosition"> - <option value="bottom">Bottom</option> - <option value="right">Right</option> - <option value="left">Left</option> - </o-select> - </o-field> - </o-field> - - <o-steps :position="position" :label-position="labelPosition" :size="size" vertical> - <o-step-item label="Account" icon="user-lock"> - Account: Lorem ipsum dolor sit amet. <br /> - Account: Lorem ipsum dolor sit amet. <br /> - Account: Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item label="Profile" icon="user"> - Profile: Lorem ipsum dolor sit amet. <br /> - Profile: Lorem ipsum dolor sit amet.? <br /> - Profile: Lorem ipsum dolor sit amet. <br /> - Profile: Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item label="Social" icon="user-plus" disabled> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. - </o-step-item> - </o-steps> - </section> -</template> - -<script> - export default { - data() { - return { - labelPosition: 'bottom', - position: null, - size: null - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_steps.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-steps v-bind="s" v-model="activeStep"> - <o-step-item v-bind="s" label="Account" icon="user-lock" step="1"> - <h1 class="title has-text-centered">Account</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - <o-step-item v-bind="s" label="Profile" icon="user" clickable step="2"> - <h1 class="title has-text-centered">Profile</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - <o-step-item v-bind="s" label="Social" icon="user-plus" step="3"> - <h1 class="title has-text-centered">Social</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - </o-steps> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - activeStep: 1, - subitem: 'step-item', - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "mobileClass", - description: "Class of steps component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "sizeClass", - description: "Size of the steps", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: "verticalClass", - description: "Class of the tooltip trigger", - properties: ['vertical'], - action: (cmp) => { - cmp.data.vertical = true - } - }, - { - class: "positionClass", - description: "Class of the Steps component when is vertical and its position changes", - properties: ['position', 'vertical'], - suffixes: ['bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.vertical = true - cmp.data.position = 'right' - } - }, - { - class: "itemClass", - description: "Class of the content item", - subitem: true - }, - { - class: "itemHeaderClass", - description: "Class of the nav item", - specificity: "when <b>positionClass</b> is applied", - subitem: true - }, - { - class: "itemHeaderActiveClass", - description: "Class of the nav item when active", - subitem: true - }, - { - class: "itemHeaderPreviousClass", - description: "Class of the nav item behind the active one", - subitem: true, - action: () => { - this.activeStep = 2; - } - }, - { - class: "itemHeaderVariantClass", - description: "Class of the nav item with variant (default value by parent steps component)", - subitem: true, - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - }, - { - class: "stepsClass", - description: "Class of the steps container", - specificity: "when <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "animatedClass", - description: "Class of Steps component when animation gets triggered", - properties: ['animated'], - action: (cmp) => { - cmp.data.animated = true - } - }, - { - class: "stepMarkerRoundedClass", - description: "Class of the Steps markers trigger when are rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.position = 'right' - } - }, - { - class: "stepDividerClass", - description: "Class of the Steps component dividers", - specificity: "when <b>mobileClass</b> or <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> or <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "stepMarkerClass", - description: "Class of the Steps component marker", - specificity: "when <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> is applied", - action: () => { - } - }, - { - class: "stepContentClass", - description: "Class of the Steps component content", - specificity: "when <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "stepContentTransitioningClass", - description: "Class of the Steps component content when transition is happening", - warning: "Click on a marker to see it in action", - action: () => { - } - }, - { - class: "stepNavigationClass", - description: "Class of the Steps component navigation element", - specificity: "when <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "stepLinkLabelClass", - description: "Class of the Step component link label", - action: () => { - } - }, - { - class: "stepLinkClass", - description: "Class of the Steps component link", - specificity: "when <b>itemHeaderActiveClass</b> is applied", - action: () => { - } - }, - { - class: "stepLinkClickableClass", - description: "Class of the Steps component link when clickable", - properties: ["clickable"], - action: () => { - } - }, - { - class: "stepLinkLabelPositionClass", - description: "Class of the Step component link label when positioned", - properties: ['labelPosition'], - suffixes: ['bottom', 'right', 'left'], - action: (cmp) => { - cmp.data.labelPosition = "right" - } - } - ] - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| animated | Step navigation is animated | boolean | - | true | -| ariaNextLabel | | string | - | | -| ariaPreviousLabel | | string | - | | -| destroyOnHide | Destroy tab on hide | boolean | - | false | -| hasNavigation | Next and previous buttons below the component. You can use this property if you want to use your own custom navigation items. | boolean | - | true | -| iconNext | Icon to use for navigation button | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> steps: {<br> iconNext: 'chevron-right'<br>}</code> | -| iconPack | Icon pack to use for the navigation | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| iconPrev | Icon to use for navigation button | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> steps: {<br> iconPrev: 'chevron-left'<br>}</code> | -| labelPosition | Position of the marker label, optional | string | `bottom`, `right`, `left` | 'bottom' | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| override | Override classes | boolean | - | false | -| position | Position of the tab, optional | string | `centered`, `right` | | -| rounded | Rounded step markers | boolean | - | true | -| size | Tab size, optional | string | `small`, `medium`, `large` | | -| v-model | | string\|number | - | | -| variant | Color of the control, optional | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | -| vertical | Show tab in vertical layout | boolean | - | false | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| input | | - -### Slots - -| Name | Description | Bindings | -| ---------- | ----------- | -------- | -| default | | | -| navigation | | <br> | - ---- - -# Step Item - -> <CarbonAds /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | --------- | -| clickable | Item can be used directly to navigate. If undefined, previous steps are clickable while the others are not | boolean | - | undefined | -| icon | Icon on the left | string | - | | -| iconPack | Icon pack | string | - | | -| label | Item label | string | - | | -| override | Override classes | boolean | - | false | -| step | Step marker content (when there is no icon) | string\|number | - | | -| value | Item value (it will be used as v-model of wrapper component) | string\|number | - | | -| variant | Default style for the step, optional This will override parent type. Could be used to set a completed step to "success" for example | string\|object | - | | -| visible | Show/hide item | boolean | - | true | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| activate | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------ | ------------------------------------ | ---------------------------- | -| --oruga-steps-details-background-color | \$steps-details-background-color | hsl(0, 0%, 100%) | -| --oruga-steps-details-padding | \$steps-details-padding | .2em | -| --oruga-steps-marker-background | \$steps-marker-background | \$grey-light | -| --oruga-steps-marker-color | \$steps-marker-color | \$primary-invert | -| --oruga-steps-marker-border | \$steps-marker-border | .2em solid #fff | -| --oruga-steps-marker-font-weight | \$steps-marker-font-weight | 700 | -| --oruga-steps-marker-rounded-border-radius | \$steps-marker-rounded-border-radius | \$base-rounded-border-radius | -| --oruga-steps-color | \$steps-color | \$grey-lighter | -| --oruga-steps-previous-color | \$steps-previous-color | \$primary | -| --oruga-steps-active-color | \$steps-active-color | \$primary | -| --oruga-steps-divider-height | \$steps-divider-height | .2em | -| --oruga-steps-vertical-padding | \$steps-vertical-padding | 1em 0 | -| --oruga-steps-item-line-height | \$steps-item-line-height | \$base-line-height | -| --oruga-steps-link-color | \$steps-link-color | hsl(0, 0%, 29%) | -| --oruga-steps-content-padding | \$steps-content-padding | 1rem | -| --oruga-steps-font-size | \$steps-font-size | \$base-font-size | -| --oruga-steps-details-title-font-weight | \$steps-details-title-font-weight | 600 | diff --git a/packages/docs/components/Switch.md b/packages/docs/components/Switch.md deleted file mode 100644 index 788e45825..000000000 --- a/packages/docs/components/Switch.md +++ /dev/null @@ -1,343 +0,0 @@ ---- -title: Switch ---- - -# Switch - -> Switch between two opposing states - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/switch/examples/Switch.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-field> - <o-switch>Default</o-switch> - </o-field> - <o-field> - <o-switch v-model="isSwitched"> - {{ isSwitched }} - </o-switch> - </o-field> - <o-field> - <o-switch v-model="isSwitchedCustom" true-value="Yes" false-value="No"> - {{ isSwitchedCustom }} - </o-switch> - </o-field> - <o-field> - <o-switch disabled>Disabled</o-switch> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - isSwitched: false, - isSwitchedCustom: 'Yes' - } - } - } -</script> -``` - -::: - -### Variants - -::: demo - -```html -<template> - <section> - <o-field> - <o-switch :value="true"> - Default - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" variant="info"> - Info - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" variant="success"> - Success - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" variant="danger"> - Danger - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" variant="warning"> - Warning - </o-switch> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Sizes - -::: demo - -```html -<template> - <section> - <o-field> - <o-switch size="small">Small</o-switch> - </o-field> - <o-field> - <o-switch>Default</o-switch> - </o-field> - <o-field> - <o-switch size="medium">Medium</o-switch> - </o-field> - <o-field> - <o-switch size="large">Large</o-switch> - </o-field> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Style variants - -::: demo - -```html -<template> - <section> - <o-field grouped> - <o-switch v-model="isRounded">Rounded</o-switch> - <o-switch v-model="position" true-value="left" false-value="right">Label on left</o-switch> - </o-field> - <o-field label="Variant"> - <o-select expanded v-model="variant" placeholder="Variant"> - <option value="null">Default</option> - <option value="primary">Primary</option> - <option value="success">Success</option> - <option value="warning">Warning</option> - <option value="danger">Danger</option> - </o-select> - </o-field> - <o-field label="Passive Variant"> - <o-select expanded v-model="passive" placeholder="Passive Variant"> - <option value="null">Default</option> - <option value="primary">Primary</option> - <option value="success">Success</option> - <option value="warning">Warning</option> - <option value="danger">Danger</option> - </o-select> - </o-field> - <o-field label="Size"> - <o-select expanded v-model="size"> - <option value="">Default</option> - <option value="small">small</option> - <option value="medium">medium</option> - <option value="large">large</option> - </o-select> - </o-field> - <o-switch :rounded="isRounded" :position="position" :size="size" :variant="variant" :passive-variant="passive">Sample</o-switch> - </section> -</template> - -<script> - export default { - data() { - return { - size: '', - variant: null, - passive: null, - isRounded: false, - position: 'right' - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_switch.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-switch v-bind="s" v-model="checkValue">Switch</o-switch> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - checkValue: true, - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "inputClass", - description: "Root class of the native input checkbox", - }, - { - class: "checkClass", - description: "Class of the switch check", - action: () => { - } - }, - { - class: "checkCheckedClass", - description: "Class of the switch check when checked", - action: () => { - this.checkValue = true; - } - }, - { - class: "checkSwitchClass", - description: "Class of the switch check", - }, - { - class: "roundedClass", - description: "Class of the switch when rounded", - properties: ["rounded"], - action: (cmp) => { - cmp.data.rounded = true - } - }, - { - class: "disabledClass", - description: "Class when slider is disabled", - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "labelClass", - description: "Class of the switch label" - }, - { - class: "positionClass", - description: "Class of switch label position", - properties: ["position"], - action: (cmp) => { - cmp.data.position = 'left'; - } - }, - { - class: 'sizeClass', - description : 'Class of the switch size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: 'variantClass', - description : 'Class of the switch variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - this.checkValue = true; - } - }, - { - class: "passiveVariantClass", - description : 'Class of the switch passive variant', - properties: ["passiveVariant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.passiveVariant = 'danger'; - this.checkValue = false; - } - } - ], - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| -------------- | ----------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------- | ------- | -| ariaLabelledby | Accessibility label to establish relationship between the switch and control label' | string | - | | -| disabled | | boolean | - | | -| falseValue | Overrides the returned value when it's not checked | string\|number\|boolean | - | false | -| name | Name attribute on native checkbox | string | - | | -| nativeValue | Same as native value | string\|number\|boolean | - | | -| override | Override classes | boolean | - | false | -| passiveVariant | Color of the switch when is passive, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | -| position | Label position | string | - | 'right' | -| required | | boolean | - | | -| rounded | Rounded style | boolean | - | true | -| size | Vertical size of switch, optional | string | `small`, `medium`, `large` | | -| trueValue | Overrides the returned value when it's checked | string\|number\|boolean | - | true | -| v-model | | string\|number\|boolean | - | | -| variant | Color of the switch, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| -------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------ | -| --oruga-switch-active-background-color | \$switch-active-background-color | \$primary | -| --oruga-switch-action-background | \$switch-action-background | #f5f5f5 | -| --oruga-switch-background | \$switch-background | \$grey-light | -| --oruga-switch-border-radius | \$switch-border-radius | \$base-border-radius | -| --oruga-switch-box-shadow | \$switch-box-shadow | 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05) | -| --oruga-switch-disabled-opacity | \$switch-disabled-opacity | \$base-disabled-opacity | -| --oruga-switch-margin-label | \$switch-margin-label | .5em | -| --oruga-switch-padding | \$switch-padding | 0.2em | -| --oruga-switch-rounded-border-radius | \$switch-rounded-border-radius | \$base-rounded-border-radius | -| --oruga-switch-width | \$switch-width | 2.75 \* 1em | diff --git a/packages/docs/components/Table.md b/packages/docs/components/Table.md deleted file mode 100644 index 8f6e5b546..000000000 --- a/packages/docs/components/Table.md +++ /dev/null @@ -1,2177 +0,0 @@ ---- -title: Table ---- - -# Table - -> Tabulated data are sometimes needed, it's even better when it's responsive - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/table/examples/Table.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <o-table :data="data" :columns="columns"></o-table> -</template> - -<script> - export default { - data() { - return { - data: [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male' - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016-12-15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016-04-26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016-04-10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Anne', - last_name: 'Lee', - date: '2016-12-06 14:38:38', - gender: 'Female' - } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name' - }, - { - field: 'last_name', - label: 'Last Name' - }, - { - field: 'date', - label: 'Date', - position: 'centered' - }, - { - field: 'gender', - label: 'Gender' - } - ] - } - } - } -</script> -``` - -::: - -### Sandbox - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-switch v-model="isBordered">Bordered</o-switch> - <o-switch v-model="isStriped">Striped</o-switch> - <o-switch v-model="isNarrowed">Narrowed</o-switch> - <o-switch v-model="isHoverable">Hoverable</o-switch> - <o-switch v-model="isFocusable">Focusable</o-switch> - <o-switch v-model="isLoading">Loading state</o-switch> - <o-switch v-model="isEmpty">Empty</o-switch> - <o-switch v-model="hasMobileCards">Mobile cards <small>(collapsed rows)</small></o-switch> - </o-field> - - <o-table - :data="isEmpty ? [] : data" - :bordered="isBordered" - :striped="isStriped" - :narrowed="isNarrowed" - :hoverable="isHoverable" - :loading="isLoading" - :focusable="isFocusable" - :mobile-cards="hasMobileCards" - > - <o-table-column field="id" label="ID" width="40" numeric v-slot="props"> - {{ props.row.id }} - </o-table-column> - - <o-table-column field="first_name" label="First Name" v-slot="props"> - {{ props.row.first_name }} - </o-table-column> - - <o-table-column field="last_name" label="Last Name" v-slot="props"> - {{ props.row.last_name }} - </o-table-column> - - <o-table-column field="date" label="Date" position="centered" v-slot="props"> - {{ new Date(props.row.date).toLocaleDateString() }} - </o-table-column> - - <o-table-column label="Gender" v-slot="props"> - <span> - <o-icon pack="fas" :icon="props.row.gender === 'Male' ? 'mars' : 'venus'"> </o-icon> - {{ props.row.gender }} - </span> - </o-table-column> - </o-table> - </section> -</template> - -<script> - export default { - data() { - const data = [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016/10/15 13:43:27', - gender: 'Male' - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016/12/15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016/04/26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016/04/10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Anne', - last_name: 'Lee', - date: '2016/12/06 14:38:38', - gender: 'Female' - } - ] - - return { - data, - isEmpty: false, - isBordered: false, - isStriped: false, - isNarrowed: false, - isHoverable: false, - isFocusable: false, - isLoading: false, - hasMobileCards: true - } - } - } -</script> -``` - -::: - -### Selection - -::: demo - -```html -<template> - <section> - <o-button variant="danger" @click="selected = null" :disabled="!selected" icon-left="times"> - <span>Clear selected</span> - </o-button> - - <p> - {{ selected }} - </p> - - <o-table :data="data" :columns="columns" :selected.sync="selected" focusable> </o-table> - </section> -</template> - -<script> - export default { - data() { - const data = [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male' - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016-12-15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016-04-26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016-04-10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Anne', - last_name: 'Lee', - date: '2016-12-06 14:38:38', - gender: 'Female' - } - ] - - return { - data, - selected: data[1], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name' - }, - { - field: 'last_name', - label: 'Last Name' - }, - { - field: 'date', - label: 'Date', - position: 'centered' - }, - { - field: 'gender', - label: 'Gender' - } - ] - } - } - } -</script> -``` - -::: - -### Pagination - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-select v-model="defaultSortDirection"> - <option value="asc">Default sort direction: ASC</option> - <option value="desc">Default sort direction: DESC</option> - </o-select> - <o-select v-model="perPage" :disabled="!isPaginated"> - <option value="5">5 per page</option> - <option value="10">10 per page</option> - <option value="15">15 per page</option> - <option value="20">20 per page</option> - </o-select> - <o-button @click="currentPage = 2" :disabled="!isPaginated">Set page to 2</o-button> - <o-switch v-model="isPaginated">Paginated</o-switch> - <o-switch v-model="isPaginationSimple" :disabled="!isPaginated">Simple pagination</o-switch> - <o-select v-model="paginationPosition" :disabled="!isPaginated"> - <option value="bottom">bottom pagination</option> - <option value="top">top pagination</option> - <option value="both">both</option> - </o-select> - <o-select v-model="sortIcon"> - <option value="arrow-up">Arrow sort icon</option> - <option value="caret-up">Caret sort icon</option> - <option value="chevron-up">Chevron sort icon </option> - </o-select> - <o-select v-model="sortIconSize"> - <option value="small">Small sort icon</option> - <option value="">Regular sort icon</option> - <option value="medium">Medium sort icon</option> - <option value="large">Large sort icon</option> - </o-select> - </o-field> - - <o-table - :data="data" - :paginated="isPaginated" - :per-page="perPage" - :current-page.sync="currentPage" - :pagination-simple="isPaginationSimple" - :pagination-position="paginationPosition" - :default-sort-direction="defaultSortDirection" - :sort-icon="sortIcon" - :sort-icon-size="sortIconSize" - default-sort="user.first_name" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - > - <o-table-column field="id" label="ID" width="40" sortable numeric v-slot="props"> - {{ props.row.id }} - </o-table-column> - - <o-table-column field="user.first_name" label="First Name" sortable v-slot="props"> - {{ props.row.user.first_name }} - </o-table-column> - - <o-table-column field="user.last_name" label="Last Name" sortable v-slot="props"> - {{ props.row.user.last_name }} - </o-table-column> - - <o-table-column field="date" label="Date" sortable position="centered" v-slot="props"> - {{ new Date(props.row.date).toLocaleDateString() }} - </o-table-column> - - <o-table-column label="Gender" v-slot="props"> - <span> - <o-icon pack="fas" :icon="props.row.gender === 'Male' ? 'mars' : 'venus'"> </o-icon> - {{ props.row.gender }} - </span> - </o-table-column> - </o-table> - </section> -</template> - -<script> - const data = [ - { - id: 1, - user: { first_name: 'Jesse', last_name: 'Simmons' }, - date: '2016/10/15 13:43:27', - gender: 'Male' - }, - { - id: 2, - user: { first_name: 'John', last_name: 'Jacobs' }, - date: '2016/12/15 06:00:53', - gender: 'Male' - }, - { - id: 3, - user: { first_name: 'Tina', last_name: 'Gilbert' }, - date: '2016/04/26 06:26:28', - gender: 'Female' - }, - { - id: 4, - user: { first_name: 'Clarence', last_name: 'Flores' }, - date: '2016/04/10 10:28:46', - gender: 'Male' - }, - { - id: 5, - user: { first_name: 'Anne', last_name: 'Lee' }, - date: '2016/12/06 14:38:38', - gender: 'Female' - }, - { - id: 6, - user: { first_name: 'Sara', last_name: 'Armstrong' }, - date: '2016/09/23 18:50:04', - gender: 'Female' - }, - { - id: 7, - user: { first_name: 'Anthony', last_name: 'Webb' }, - date: '2016/08/30 23:49:38', - gender: 'Male' - }, - { - id: 8, - user: { first_name: 'Andrew', last_name: 'Greene' }, - date: '2016/11/20 14:57:47', - gender: 'Male' - }, - { - id: 9, - user: { first_name: 'Russell', last_name: 'White' }, - date: '2016/07/13 09:29:49', - gender: 'Male' - }, - { - id: 10, - user: { first_name: 'Lori', last_name: 'Hunter' }, - date: '2016/12/09 01:44:05', - gender: 'Female' - }, - { - id: 11, - user: { first_name: 'Ronald', last_name: 'Wood' }, - date: '2016/12/04 02:23:48', - gender: 'Male' - }, - { - id: 12, - user: { first_name: 'Michael', last_name: 'Harper' }, - date: '2016/07/27 13:28:15', - gender: 'Male' - }, - { - id: 13, - user: { first_name: 'George', last_name: 'Dunn' }, - date: '2017/03/07 12:26:52', - gender: 'Male' - }, - { - id: 14, - user: { first_name: 'Eric', last_name: 'Rogers' }, - date: '2016/06/07 05:41:52', - gender: 'Male' - }, - { - id: 15, - user: { first_name: 'Juan', last_name: 'Meyer' }, - date: '2017/02/01 04:56:34', - gender: 'Male' - }, - { - id: 16, - user: { first_name: 'Silvia', last_name: 'Rosa' }, - date: '2017/01/26 11:50:04', - gender: 'Female' - }, - { - id: 17, - user: { first_name: 'Lori', last_name: 'Cunningham' }, - date: '2016/05/01 10:00:56', - gender: 'Female' - }, - { - id: 18, - user: { first_name: 'Charles', last_name: 'Graham' }, - date: '2016/05/31 06:43:30', - gender: 'Male' - }, - { - id: 19, - user: { first_name: 'Henry', last_name: 'Morrison' }, - date: '2016/09/27 16:15:44', - gender: 'Male' - }, - { - id: 20, - user: { first_name: 'Albert', last_name: 'Mendoza' }, - date: '2016/08/08 05:29:24', - gender: 'Male' - }, - { - id: 21, - user: { first_name: 'Ruby', last_name: 'Snyder' }, - date: '2017/04/01 12:04:39', - gender: 'Female' - }, - { - id: 22, - user: { first_name: 'Jesse', last_name: 'Warren' }, - date: '2016/08/20 01:36:38', - gender: 'Male' - }, - { - id: 23, - user: { first_name: 'Carlos', last_name: 'Ferguson' }, - date: '2016/05/31 10:40:29', - gender: 'Male' - }, - { - id: 24, - user: { first_name: 'Melissa', last_name: 'Peters' }, - date: '2016/07/23 00:41:54', - gender: 'Female' - }, - { - id: 25, - user: { first_name: 'Arthur', last_name: 'Garza' }, - date: '2017/03/11 14:11:37', - gender: 'Male' - }, - { - id: 26, - user: { first_name: 'Joe', last_name: 'Berry' }, - date: '2016/07/09 15:16:56', - gender: 'Male' - }, - { - id: 27, - user: { first_name: 'Joseph', last_name: 'Bishop' }, - date: '2016/10/04 19:44:54', - gender: 'Male' - }, - { - id: 28, - user: { first_name: 'Sarah', last_name: 'Harper' }, - date: '2016/09/23 05:09:11', - gender: 'Female' - }, - { - id: 29, - user: { first_name: 'Christopher', last_name: 'Fuller' }, - date: '2016/04/12 00:05:35', - gender: 'Male' - }, - { - id: 30, - user: { first_name: 'Alan', last_name: 'Mendoza' }, - date: '2016/04/22 10:48:02', - gender: 'Male' - }, - { - id: 31, - user: { first_name: 'James', last_name: 'Davis' }, - date: '2017/01/16 15:17:03', - gender: 'Male' - }, - { - id: 32, - user: { first_name: 'Scott', last_name: 'Welch' }, - date: '2016/10/04 23:31:51', - gender: 'Male' - }, - { - id: 33, - user: { first_name: 'Mildred', last_name: 'Myers' }, - date: '2016/11/23 13:46:18', - gender: 'Female' - }, - { - id: 34, - user: { first_name: 'Victor', last_name: 'Martinez' }, - date: '2016/04/06 17:05:07', - gender: 'Male' - }, - { - id: 35, - user: { first_name: 'Susan', last_name: 'Medina' }, - date: '2016/12/09 10:33:37', - gender: 'Female' - }, - { - id: 36, - user: { first_name: 'Judy', last_name: 'Long' }, - date: '2016/07/26 16:19:04', - gender: 'Female' - }, - { - id: 37, - user: { first_name: 'Joan', last_name: 'Myers' }, - date: '2016/09/22 04:55:54', - gender: 'Female' - }, - { - id: 38, - user: { first_name: 'Rachel', last_name: 'Gonzales' }, - date: '2016/07/15 13:56:38', - gender: 'Female' - }, - { - id: 39, - user: { first_name: 'Roger', last_name: 'Hunt' }, - date: '2016/08/14 10:43:11', - gender: 'Male' - }, - { - id: 40, - user: { first_name: 'Dorothy', last_name: 'Howard' }, - date: '2016/06/19 05:34:49', - gender: 'Female' - }, - { - id: 41, - user: { first_name: 'Eugene', last_name: 'Lynch' }, - date: '2016/12/24 08:19:24', - gender: 'Male' - }, - { - id: 42, - user: { first_name: 'Kathy', last_name: 'Webb' }, - date: '2017/04/01 21:09:05', - gender: 'Female' - }, - { - id: 43, - user: { first_name: 'Antonio', last_name: 'White' }, - date: '2017/02/10 06:51:20', - gender: 'Male' - }, - { - id: 44, - user: { first_name: 'Louis', last_name: 'Spencer' }, - date: '2016/10/08 02:20:22', - gender: 'Male' - }, - { - id: 45, - user: { first_name: 'Andrea', last_name: 'Marshall' }, - date: '2016/09/04 10:59:57', - gender: 'Female' - }, - { - id: 46, - user: { first_name: 'Eugene', last_name: 'Sims' }, - date: '2017/03/15 06:39:48', - gender: 'Male' - }, - { - id: 47, - user: { first_name: 'Mildred', last_name: 'Gibson' }, - date: '2016/04/18 06:43:54', - gender: 'Female' - }, - { - id: 48, - user: { first_name: 'Joan', last_name: 'Arnold' }, - date: '2016/12/16 04:52:23', - gender: 'Female' - }, - { - id: 49, - user: { first_name: 'Jesse', last_name: 'Schmidt' }, - date: '2016/06/11 02:44:33', - gender: 'Male' - }, - { - id: 50, - user: { first_name: 'David', last_name: 'Frazier' }, - date: '2017/02/15 21:46:30', - gender: 'Male' - }, - { - id: 51, - user: { first_name: 'Nicholas', last_name: 'Howell' }, - date: '2016/11/01 15:08:31', - gender: 'Male' - }, - { - id: 52, - user: { first_name: 'Douglas', last_name: 'Chapman' }, - date: '2017/02/08 03:33:24', - gender: 'Male' - }, - { - id: 53, - user: { first_name: 'Bruce', last_name: 'Simmons' }, - date: '2016/07/14 12:11:17', - gender: 'Male' - }, - { - id: 54, - user: { first_name: 'Antonio', last_name: 'George' }, - date: '2016/11/07 19:12:55', - gender: 'Male' - }, - { - id: 55, - user: { first_name: 'Chris', last_name: 'Marshall' }, - date: '2016/07/03 12:11:45', - gender: 'Male' - }, - { - id: 56, - user: { first_name: 'Ashley', last_name: 'Hudson' }, - date: '2016/10/14 21:08:05', - gender: 'Female' - }, - { - id: 57, - user: { first_name: 'Alan', last_name: 'Edwards' }, - date: '2017/03/22 21:10:25', - gender: 'Male' - }, - { - id: 58, - user: { first_name: 'George', last_name: 'Clark' }, - date: '2016/04/28 03:15:05', - gender: 'Male' - }, - { - id: 59, - user: { first_name: 'Frank', last_name: 'Porter' }, - date: '2016/09/08 00:48:14', - gender: 'Male' - }, - { - id: 60, - user: { first_name: 'Christopher', last_name: 'Palmer' }, - date: '2016/05/24 08:58:12', - gender: 'Male' - } - ] - - export default { - data() { - return { - data, - isPaginated: true, - isPaginationSimple: false, - paginationPosition: 'bottom', - defaultSortDirection: 'asc', - sortIcon: 'arrow-up', - sortIconSize: 'small', - currentPage: 1, - perPage: 5 - } - } - } -</script> -``` - -::: - -### Async Data - -::: demo - -```html -<template> - <section> - <o-table - :data="data" - :loading="loading" - paginated - backend-pagination - :total="total" - :per-page="perPage" - @page-change="onPageChange" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - backend-sorting - :default-sort-direction="defaultSortOrder" - :default-sort="[sortField, sortOrder]" - @sort="onSort" - > - <o-table-column field="original_title" label="Title" sortable v-slot="props"> - {{ props.row.original_title }} - </o-table-column> - <o-table-column field="vote_average" label="Vote Average" numeric sortable v-slot="props"> - <span class="tag" :class="type(props.row.vote_average)"> - {{ props.row.vote_average }} - </span> - </o-table-column> - <o-table-column field="vote_count" label="Vote Count" numeric sortable v-slot="props"> - {{ props.row.vote_count }} - </o-table-column> - <o-table-column field="release_date" label="Release Date" sortable centered v-slot="props"> - {{ props.row.release_date ? new Date(props.row.release_date).toLocaleDateString() : 'unknown' }} - </o-table-column> - <o-table-column label="Overview" width="500" v-slot="props"> - {{ props.row.overview }} - </o-table-column> - </o-table> - </section> -</template> -<script> - export default { - data() { - return { - data: [], - total: 0, - loading: false, - sortField: 'vote_count', - sortOrder: 'desc', - defaultSortOrder: 'desc', - page: 1, - perPage: 20 - } - }, - methods: { - /* - * Load async data - */ - loadAsyncData() { - const params = [ - 'api_key=bb6f51bef07465653c3e553d6ab161a8', - 'language=en-US', - 'include_adult=false', - 'include_video=false', - `sort_by=${this.sortField}.${this.sortOrder}`, - `page=${this.page}` - ].join('&') - this.loading = true - fetch(`https://api.themoviedb.org/3/discover/movie?${params}`) - .then(response => response.json()) - .then(data => { - // api.themoviedb.org manage max 1000 pages - this.data = [] - let currentTotal = data.total_results - if (data.total_results / this.perPage > 1000) { - currentTotal = this.perPage * 1000 - } - this.total = currentTotal - data.results.forEach(item => { - item.release_date = item.release_date ? item.release_date.replace(/-/g, '/') : null - this.data.push(item) - }) - this.loading = false - }) - .catch(error => { - this.data = [] - this.total = 0 - this.loading = false - throw error - }) - }, - /* - * Handle page-change event - */ - onPageChange(page) { - this.page = page - this.loadAsyncData() - }, - /* - * Handle sort event - */ - onSort(field, order) { - this.sortField = field - this.sortOrder = order - this.loadAsyncData() - }, - /* - * Type style in relation to the value - */ - type(value) { - const number = parseFloat(value) - if (number < 6) { - return 'is-danger' - } else if (number >= 6 && number < 8) { - return 'is-warning' - } else if (number >= 8) { - return 'is-success' - } - } - }, - mounted() { - this.loadAsyncData() - } - } -</script> -``` - -::: - -### Checkable - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-button variant="danger" @click="checkedRows = []" :disabled="!checkedRows.length" icon-left="times"> - <span>Clear checked</span> - </o-button> - <o-select v-model="checkboxPosition"> - <option value="left">Checkbox at left</option> - <option value="right">Checkbox at right</option> - </o-select> - </o-field> - - <o-table - :data="data" - :columns="columns" - :checked-rows.sync="checkedRows" - :is-row-checkable="(row) => row.id !== 3 && row.id !== 4" - checkable - :checkbox-position="checkboxPosition" - > - <template slot="bottom-left"> <b>Total checked</b>: {{ checkedRows.length }} </template> - </o-table> - </section> -</template> - -<script> - export default { - data() { - const data = [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male' - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016-12-15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016-04-26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016-04-10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Anne', - last_name: 'Lee', - date: '2016-12-06 14:38:38', - gender: 'Female' - } - ] - - return { - data, - checkboxPosition: 'left', - checkedRows: [data[1], data[3]], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name' - }, - { - field: 'last_name', - label: 'Last Name' - }, - { - field: 'date', - label: 'Date', - position: 'centered' - }, - { - field: 'gender', - label: 'Gender' - } - ] - } - } - } -</script> -``` - -::: - -### Sticky - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="stickyHeaders">Sticky Headers</o-switch> - </div> - </o-field> - <o-table :data="data" :columns="columns" :sticky-header="stickyHeaders"></o-table> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - id: 1, - user: { first_name: 'Jesse', last_name: 'Simmons' }, - date: '2016/10/15 13:43:27', - gender: 'Male' - }, - { - id: 2, - user: { first_name: 'John', last_name: 'Jacobs' }, - date: '2016/12/15 06:00:53', - gender: 'Male' - }, - { - id: 3, - user: { first_name: 'Tina', last_name: 'Gilbert' }, - date: '2016/04/26 06:26:28', - gender: 'Female' - }, - { - id: 4, - user: { first_name: 'Clarence', last_name: 'Flores' }, - date: '2016/04/10 10:28:46', - gender: 'Male' - }, - { - id: 5, - user: { first_name: 'Anne', last_name: 'Lee' }, - date: '2016/12/06 14:38:38', - gender: 'Female' - }, - { - id: 6, - user: { first_name: 'Sara', last_name: 'Armstrong' }, - date: '2016/09/23 18:50:04', - gender: 'Female' - }, - { - id: 7, - user: { first_name: 'Anthony', last_name: 'Webb' }, - date: '2016/08/30 23:49:38', - gender: 'Male' - }, - { - id: 8, - user: { first_name: 'Andrew', last_name: 'Greene' }, - date: '2016/11/20 14:57:47', - gender: 'Male' - }, - { - id: 9, - user: { first_name: 'Russell', last_name: 'White' }, - date: '2016/07/13 09:29:49', - gender: 'Male' - }, - { - id: 10, - user: { first_name: 'Lori', last_name: 'Hunter' }, - date: '2016/12/09 01:44:05', - gender: 'Female' - } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true, - sticky: true, - thAttrs: () => ({ class: 'is-sticky-column-one' }), - tdAttrs: () => ({ class: 'is-sticky-column-one' }) - }, - { - field: 'user.first_name', - label: 'First Name' - }, - { - field: 'user.last_name', - label: 'Last Name' - }, - { - field: 'date', - label: 'Date', - position: 'centered', - sticky: true, - thAttrs: () => ({ class: 'is-sticky-column-two' }), - tdAttrs: () => ({ class: 'is-sticky-column-two' }) - }, - { - field: 'gender', - label: 'Gender' - }, - { - field: 'id', - label: 'Column A' - }, - { - field: 'id', - label: 'Column B' - }, - { - field: 'id', - label: 'Column C' - }, - { - field: 'id', - label: 'Column D' - }, - { - field: 'id', - label: 'Column E' - }, - { - field: 'id', - label: 'Column F' - }, - { - field: 'id', - label: 'Column G' - }, - { - field: 'id', - label: 'Column H' - }, - { - field: 'id', - label: 'Column I' - }, - { - field: 'id', - label: 'Column L' - }, - { - field: 'id', - label: 'Column M' - }, - { - field: 'id', - label: 'Column N' - }, - { - field: 'id', - label: 'Column O' - } - ], - stickyHeaders: true - } - } - } -</script> - -<style> - .is-sticky-column-one { - background: #006724 !important; - color: white !important; - } - .is-sticky-column-two { - background: #167df0 !important; - color: white !important; - } -</style> -``` - -::: - -### Detailed - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-checkbox v-model="showDetailIcon">Show detail chevron</o-checkbox> - <o-checkbox v-model="showDefaultDetail">Custom detail column</o-checkbox> - <div v-for="(column, index) in columnsVisible" :key="index"> - <o-checkbox v-model="column.display"> - {{ column.title }} - </o-checkbox> - </div> - </o-field> - - <o-table - :data="data" - ref="table" - detailed - hoverable - :custom-detail-row="!showDefaultDetail" - :opened-detailed="['Board Games']" - :default-sort="['name', 'asc']" - detail-key="name" - :show-detail-icon="showDetailIcon" - > - <o-table-column field="name" :visible="columnsVisible['name'].display" :label="columnsVisible['name'].title" width="300" sortable v-slot="props"> - <template v-if="showDetailIcon"> - {{ props.row.name }} - </template> - <template v-else> - <a @click="toggle(props.row)"> - {{ props.row.name }} - </a> - </template> - </o-table-column> - - <o-table-column field="sold" :visible="columnsVisible['sold'].display" :label="columnsVisible['sold'].title" sortable position="centered" v-slot="props"> - {{ props.row.sold }} - </o-table-column> - - <o-table-column field="available" :visible="columnsVisible['available'].display" :label="columnsVisible['available'].title" sortable position="centered" v-slot="props"> - {{ props.row.available }} - </o-table-column> - - <o-table-column :visible="columnsVisible['cleared'].display" :label="columnsVisible['cleared'].title" position="centered" v-slot="props"> - <span> - {{ Math.round((props.row.sold / props.row.available) * 100) }}% - </span> - </o-table-column> - - <template slot="detail" slot-scope="props"> - <tr v-for="item in props.row.items" :key="item.name"> - <td v-if="showDetailIcon"></td> - <td v-show="columnsVisible['name'].display"> - {{ item.name }} - </td> - <td v-show="columnsVisible['sold'].display">{{ item.sold }}</td> - <td v-show="columnsVisible['available'].display"> - {{ item.available }} - </td> - <td v-show="columnsVisible['cleared'].display"> - <span> - {{ Math.round((item.sold / item.available) * 100) }}% - </span> - </td> - </tr> - </template> - </o-table> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - name: 'Board Games', - sold: 131, - available: 301, - items: [ - { - name: 'Monopoly', - sold: 57, - available: 100 - }, - { - name: 'Scrabble', - sold: 23, - available: 84 - }, - { - name: 'Chess', - sold: 37, - available: 61 - }, - { - name: 'Battleships', - sold: 14, - available: 56 - } - ] - }, - { - name: 'Jigsaws & Puzzles', - sold: 88, - available: 167, - items: [ - { - name: 'World Map', - sold: 31, - available: 38 - }, - { - name: 'London', - sold: 23, - available: 29 - }, - { - name: 'Sharks', - sold: 20, - available: 44 - }, - { - name: 'Disney', - sold: 14, - available: 56 - } - ] - }, - { - name: 'Books', - sold: 434, - available: 721, - items: [ - { - name: 'Hamlet', - sold: 101, - available: 187 - }, - { - name: 'The Lord Of The Rings', - sold: 85, - available: 156 - }, - { - name: 'To Kill a Mockingbird', - sold: 78, - available: 131 - }, - { - name: 'Catch-22', - sold: 73, - available: 98 - }, - { - name: 'Frankenstein', - sold: 51, - available: 81 - }, - { - name: "Alice's Adventures In Wonderland", - sold: 46, - available: 68 - } - ] - } - ], - columnsVisible: { - name: { title: 'Name', display: true }, - sold: { title: 'Stock Sold', display: true }, - available: { title: 'Stock Available', display: true }, - cleared: { title: 'Stock Cleared', display: true } - }, - showDetailIcon: true, - showDefaultDetail: true - } - }, - methods: { - toggle(row) { - this.$refs.table.toggleDetails(row) - } - } - } -</script> -``` - -::: - -### Searchable - -::: demo - -```html -<template> - <section> - <o-table :data="data" :columns="columns"> </o-table> - <hr /> - <p> - You can debounce search filter to avoid multiple filtering when typing. - </p> - <o-table :data="data" :columns="columns" :debounce-search="1000"> </o-table> - <p>You can also customize the search input using a scoped slot.</p> - <o-table :data="data"> - <template v-for="column in columns"> - <o-table-column :key="column.id" v-bind="column"> - <template v-if="column.searchable && !column.numeric" slot="searchable" slot-scope="props"> - <o-input v-model="props.filters[props.column.field]" placeholder="Search..." icon="search" size="small" /> - </template> - <template v-slot="props"> - {{ props.row[column.field] }} - </template> - </o-table-column> - </template> - </o-table> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male' - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016-12-15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016-04-26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016-04-10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Anne', - last_name: 'Lee', - date: '2016-12-06 14:38:38', - gender: 'Female' - } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '100', - numeric: true, - searchable: true - }, - { - field: 'first_name', - label: 'First Name', - searchable: true - }, - { - field: 'last_name', - label: 'Last Name', - searchable: true - }, - { - field: 'date', - label: 'Date', - position: 'centered' - }, - { - field: 'gender', - label: 'Gender' - } - ] - } - } - } -</script> -``` - -::: - -### Draggable rows/columns - -::: demo - -```html -<template> - <div> - <p> - Use <code>draggable</code>/<code>draggable-column</code> prop to allow rows and columns to be draggable. Manage dragging using - <code>dragstart</code>/<code>columndragstart</code>,<code>dragover</code>/<code>columndragover</code> and <code>drop</code>/<code>columndrop</code> events - </p> - <o-table - :data="data" - :columns="columns" - draggable - draggable-column - @dragstart="dragstart" - @drop="drop" - @dragover="dragover" - @dragleave="dragleave" - @columndragstart="columndragstart" - @columndrop="columndrop" - @columndragover="columndragover" - @columndragleave="columndragleave" - > - </o-table> - </div> -</template> -<script> - export default { - data() { - return { - data: [ - { id: 1, first_name: 'Jesse', last_name: 'Simmons', date: '2016-10-15 13:43:27', gender: 'Male' }, - { id: 2, first_name: 'John', last_name: 'Jacobs', date: '2016-12-15 06:00:53', gender: 'Male' }, - { id: 3, first_name: 'Tina', last_name: 'Gilbert', date: '2016-04-26 06:26:28', gender: 'Female' }, - { id: 4, first_name: 'Clarence', last_name: 'Flores', date: '2016-04-10 10:28:46', gender: 'Male' }, - { id: 5, first_name: 'Anne', last_name: 'Lee', date: '2016-12-06 14:38:38', gender: 'Female' } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name' - }, - { - field: 'last_name', - label: 'Last Name' - }, - { - field: 'date', - label: 'Date', - centered: true - }, - { - field: 'gender', - label: 'Gender' - } - ], - draggingRow: null, - draggingRowIndex: null, - draggingColumn: null, - draggingColumnIndex: null - } - }, - methods: { - dragstart(payload) { - this.draggingRow = payload.row - this.draggingRowIndex = payload.index - payload.event.dataTransfer.effectAllowed = 'copy' - }, - dragover(payload) { - payload.event.dataTransfer.dropEffect = 'copy' - payload.event.target.closest('tr').classList.add('is-selected') - payload.event.preventDefault() - }, - dragleave(payload) { - payload.event.target.closest('tr').classList.remove('is-selected') - payload.event.preventDefault() - }, - drop(payload) { - payload.event.target.closest('tr').classList.remove('is-selected') - const droppedOnRowIndex = payload.index - this.$oruga.notification.open(`Moved ${this.draggingRow.first_name} from row ${this.draggingRowIndex + 1} to ${droppedOnRowIndex + 1}`) - }, - - columndragstart(payload) { - this.draggingColumn = payload.column - this.draggingColumnIndex = payload.index - payload.event.dataTransfer.effectAllowed = 'copy' - }, - columndragover(payload) { - payload.event.dataTransfer.dropEffect = 'copy' - payload.event.target.closest('th').classList.add('is-selected') - payload.event.preventDefault() - }, - columndragleave(payload) { - payload.event.target.closest('th').classList.remove('is-selected') - payload.event.preventDefault() - }, - columndrop(payload) { - payload.event.target.closest('th').classList.remove('is-selected') - const droppedOnColumnIndex = payload.index - this.$oruga.notification.open(`Moved ${this.draggingColumn.field} from column ${this.draggingColumnIndex + 1} to ${droppedOnColumnIndex + 1}`) - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_table.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-table v-bind="s" :data="s.isEmpty ? [] : data" :columns="columns" :selected.sync="selected" detailed> - <template slot="footer"> This is the footer </template> - <template slot="detail"> - DETAILS - </template> - </o-table> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - selected: null, - data: [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male', - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016-12-15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016-04-26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016-04-10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Brandon', - last_name: 'Lee', - date: '2016-12-06 14:38:38', - gender: 'Female' - }, - { - id: 6, - first_name: 'Anne', - last_name: 'Straus', - date: '2017-12-06 14:38:38', - gender: 'Female' - }, - { - id: 7, - first_name: 'Mark', - last_name: 'Knopfler', - date: '2018-12-06 14:38:38', - gender: 'Male' - }, - { - id: 8, - first_name: 'Craig', - last_name: 'David', - date: '2019-12-06 14:38:38', - gender: 'Male' - }, - { - id: 9, - first_name: 'Dave', - last_name: 'Copperfield', - date: '2020-12-06 14:38:38', - gender: 'Male' - }, - { - id: 10, - first_name: 'Hilary', - last_name: 'Nelson', - date: '2021-12-06 14:38:38', - gender: 'Female' - } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name', - searchable: true, - sortable: true - }, - { - field: 'last_name', - label: 'Last Name', - searchable: true - }, - { - field: 'date', - label: 'Date', - sticky: true, - position: 'centered' - }, - { - field: 'gender', - label: 'Gender' - }, - { - field: 'id', - label: 'Column A' - }, - { - field: 'id', - label: 'Column B' - }, - { - field: 'id', - label: 'Column C' - }, - { - field: 'id', - label: 'Column D' - }, - { - field: 'id', - label: 'Column E' - }, - { - field: 'id', - label: 'Column F' - }, - { - field: 'id', - label: 'Column G' - }, - { - field: 'id', - label: 'Column H' - }, - { - field: 'id', - label: 'Column I' - }, - { - field: 'id', - label: 'Column L' - }, - { - field: 'id', - label: 'Column M' - }, - { - field: 'id', - label: 'Column N' - }, - { - field: 'id', - label: 'Column O' - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of Table root element" - }, - { - class: "tableClass", - description: "Class of the Table" - }, - { - class: "borderedClass", - properties: ["bordered"], - description: "Class of the Table when is bordered", - action: (cmp) => { - cmp.data.bordered = true; - } - }, - { - class: "stripedClass", - properties: ["striped"], - description: "Class of the Table when rows are striped", - action: (cmp) => { - cmp.data.striped = true; - } - }, - { - class: "narrowedClass", - properties: ["narrowed"], - description: "Class of the Table when rows are narrowed", - action: (cmp) => { - cmp.data.narrowed = true; - } - }, - { - class: "hoverableClass", - properties: ["hoverable or focusable"], - description: "Class of the Table when is hoverable", - action: (cmp) => { - cmp.data.hoverable = true; - } - }, - { - class: "emptyClass", - description: "Class of the Table when is empty", - action: (cmp) => { - cmp.data.isEmpty = true - } - }, - { - class: "wrapperClass", - description: "Class of the Table wrapper" - }, - { - class: "stickyHeaderClass", - properties: ["sticky-header"], - description: "Class of the Table wrapper when header is sticky", - action: (cmp) => { - cmp.data.stickyHeader = true; - } - }, - { - class: "scrollableClass", - properties: ["scrollable"], - description: "Class of the Table wrapper when its content is scrollable", - action: (cmp) => { - cmp.data.scrollable = true; - } - }, - { - class: "footerClass", - description: "Class of the Table footer", - action: (cmp) => { - cmp.data.tableClass = 'inspector_table' - } - }, - { - class: "thClass", - description: "Class of the Table `th` element" - }, - { - class: "tdClass", - description: "Class of the Table `td` element" - }, - { - class: "thCheckboxClass", - description: "Class of the Table `th` element when is checkable", - properties: ["checkable"], - action: (cmp) => { - cmp.data.checkable = true - } - }, - { - class: "thDetailedClass", - description: "Class of the Table `th` element of the detail column of triggers", - properties: ["detailed"], - action: (cmp) => { - cmp.data.detailed = true; - } - }, - { - class: "tdCheckboxClass", - description: "Class of the Table `td` element when is checkable", - properties: ["checkable"], - action: (cmp) => { - cmp.data.checkable = true - } - }, - { - class: "detailedClass", - description: "Class of the Table row detail", - properties: ["detailed"], - warning: "Expand details to see it in action!", - action: (cmp) => { - cmp.data.tableClass = 'inspector_table' - cmp.data.mobileCards = true; - } - }, - { - class: "tdDetailedChevronClass", - properties: ["detailed"], - description: "Class of the Table `td` element that contains the chevron to trigger details", - action: (cmp) => { - cmp.data.mobileCards = true; - } - }, - { - class: "thCurrentSortClass", - description: "Class of the Table `th` element currently sorted", - warning: "Click on 'First Name' header to sort elements and see it in action!", - }, - { - class: "thSortableClass", - description: "Class of the sortable Table `th` element", - properties: ['sortable'] - }, - { - class: "thUnselectableClass", - description: "Class of the Table `th` element that is unsortable", - properties: ["!headerSelectable and sortable"] - }, - { - class: "thPositionClass", - description: "Class of the Table `th` element when component is positioned", - suffixes: ['left', 'centered', 'right'], - properties: ["position"] - }, - { - class: "thStickyClass", - description: "Class of the Table `th` element when component is sticky", - properties: ['sticky'] - }, - { - class: "trSelectedClass", - description: "Class of the Table row when selected", - warning: "Select a row of the table to see it in action!", - action: (cmp) => { - cmp.data.tableClass = 'inspector_table' - } - }, - { - class: "thSortIconClass", - description: "Class of the Table sort icon in the header", - warning: "Click on 'First Name' header to sort elements and see it in action!", - }, - { - class: "tdPositionClass", - description: "Class of the Table `td` element when component is positioned", - suffixes: ['left', 'centered', 'right'], - properties: ["position"] - }, - { - class: "tdStickyClass", - description: "Class of the Table `td` element when component is sticky", - properties: ['sticky'] - }, - { - class: "mobileSortClass", - description: "Class of the sortable form wrapper on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "mobileClass", - description: "Class of the Table component when on mobile", - warning: "Switch to mobile view to see it in action!" - }, - { - class: "paginationWrapperClass", - description: "Class of the Table pagination wrapper", - properties: ["paginated"], - action: (cmp) => { - cmp.data.paginated = true - cmp.data.paginationSimple = true - cmp.data.perPage = 2 - } - } - ], - }; - }, -}; -</script> -<style> -.inspector_table { - border-collapse: collapse; -} -</style> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| ariaCurrentLabel | | string | - | | -| ariaNextLabel | | string | - | | -| ariaPageLabel | | string | - | | -| ariaPreviousLabel | | string | - | | -| backendFiltering | Columns won't be filtered with Javascript, use with searchable prop to the columns to filter in your backend | boolean | - | | -| backendPagination | Rows won't be paginated with Javascript, use with page-change event to paginate in your backend | boolean | - | | -| backendSorting | Columns won't be sorted with Javascript, use with sort event to sort in your backend | boolean | - | | -| bordered | Border to all cells | boolean | - | | -| checkable | Rows can be checked (multiple), checked rows will have a .is-checked class if you want to style | boolean | - | | -| checkboxPosition | Position of the checkbox (if checkable is true) | string | `left`, `right` | 'left' | -| checkedRows | Set which rows are checked, use the .sync modifier (Vue 2.x) or v-model:checkedRows (Vue 3.x) to make it two-way binding | array | - | [] | -| columns | Table columns | array | - | [] | -| currentPage | Current page of table data (if paginated), use the .sync modifier (Vue 2.x) or v-model:currentPage (Vue 3.x) to make it two-way binding | number | - | 1 | -| customDetailRow | Custom style on details | boolean | - | false | -| customIsChecked | Custom method to verify if row is checked, works when is checkable. Useful for backend pagination | func | - | | -| customRowKey | Use a unique key of your data Object for each row. Useful if your data prop has dynamic indices. (id recommended) | string | - | | -| data | Table data | array | - | [] | -| debounceSearch | Filtering debounce time (in milliseconds) | number | - | | -| defaultSort | Sets the default sort column and order โ e.g. ['first_name', 'desc'] | string\|array | - | | -| defaultSortDirection | Sets the default sort column direction on the first click | string | `asc`, `desc` | 'asc' | -| detailIcon | Icon name of detail action | string | - | 'chevron-right' | -| detailKey | Use a unique key of your data Object when use detailed or opened detailed. (id recommended) | string | - | '' | -| detailTransition | | string | - | '' | -| detailed | Allow row details | boolean | - | | -| draggable | Allows rows to be draggable | boolean | - | false | -| draggableColumn | Allows columns to be draggable | boolean | - | false | -| filtersEvent | Add a native event to filter | string | - | '' | -| focusable | Table can be focused and user can navigate with keyboard arrows (require selected) and rows are highlighted when hovering | boolean | - | | -| hasDetailedVisible | Controls the visibility of the trigger that toggles the detailed rows. | func | - | Default function (see source code) | -| headerCheckable | Show check/uncheck all checkbox in table header when checkable | boolean | - | true | -| height | Table fixed height | number\|string | - | | -| hoverable | Rows are highlighted when hovering | boolean | - | | -| iconPack | Icon pack to use | string | - | | -| isRowCheckable | Custom method to verify if a row is checkable, works when is checkable | func | - | Default function (see source code) | -| isRowSelectable | Custom method to verify if a row is selectable, works when is selected. | func | - | Default function (see source code) | -| loading | Loading state | boolean | - | | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| mobileCards | Rows appears as cards on mobile (collapse rows) | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br> mobileCards: true<br>}</code> | -| mobileSortPlaceholder | Text when nothing is selected | string | - | | -| narrowed | Makes the cells narrower | boolean | - | | -| openedDetailed | Allow pre-defined opened details. Ideal to open details via vue-router. (A unique key is required; check detail-key prop) | array | - | [] | -| override | Override classes | boolean | - | false | -| paginated | Adds pagination to the table | boolean | - | | -| paginationPosition | Pagination position (if paginated) | string | `bottom`, `top`, `bot` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br> paginationPosition: 'bottom'<br>}</code> | -| paginationRounded | Rounded pagination if paginated | boolean | - | | -| perPage | How many rows per page (if paginated) | number\|string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br> perPage: 20<br>}</code> | -| scrollable | Add a horizontal scrollbar when table is too wide | boolean | - | | -| selected | Set which row is selected, use the .sync modifier (Vue 2.x) or v-model:selected (Vue 3.x) to make it two-way binding | object | - | | -| showDetailIcon | Allow icon and column to be visible | boolean | - | true | -| showHeader | Show header | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br> showHeader: true<br>}</code> | -| sortIcon | Sets the header sorting icon | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br> sortIcon: 'arrow-up'<br>}</code> | -| sortIconSize | Sets the size of the sorting icon | string | `small`, `medium`, `large` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> table: {<br> sortIconSize: 'small'<br>}</code> | -| stickyCheckbox | Make the checkbox column sticky when checkable | boolean | - | false | -| stickyHeader | Show a sticky table header | boolean | - | | -| striped | Whether table is striped | boolean | - | | -| total | Total number of table data if backend-pagination is enabled | number\|string | - | 0 | - -### Events - -| Event name | Properties | Description | -| --------------------- | ------------------------------------------------------------------------------------------------------------------ | ----------- | -| page-change | | -| dblclick | | -| contextmenu | | -| cell-click | | -| update:currentPage | | -| filters-change | | -| sort | **field** `string` - column field<br>**direction** `boolean` - 'asc' or 'desc'<br>**event** `Event` - native event | -| check | **newCheckedRows** `Array<Object>` - checked rows | -| check-all | | -| update:checkedRows | | -| click | **row** `Object` - clicked row<br>**index** `number` - index of clicked row | -| select | **row** `Object` - selected row<br>**selected** `Array<Object>` - selected rows | -| update:selected | | -| details-close | | -| details-open | | -| update:openedDetailed | | -| dragstart | | -| dragend | | -| drop | | -| dragover | | -| dragleave | | -| columndragstart | | -| columndragend | | -| columndrop | | -| columndragover | | -| columndragleave | | - -### Slots - -| Name | Description | Bindings | -| ----------- | ----------- | -------- | -| default | | | -| pagination | | | -| top-left | | | -| caption | | | -| detail | | <br> | -| empty | | | -| footer | | | -| loading | | | -| bottom-left | | | -| preheader | A slot inside `<thead>` above the normal header row. | | - ---- - -# Table Column - -> <CarbonAds /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ---------------- | --------------------------------------------------------------- | -------------------------------------------- | ------------------- | ---------------------------------- | -| customKey | | string\|number | - | | -| customSearch | | func | - | | -| customSort | | func | - | | -| field | | string | - | | -| headerSelectable | | boolean | - | | -| label | | string | - | | -| meta | | string\|number\|boolean\|func\|object\|array | - | | -| numeric | | boolean | - | | -| position | Optional, position of column content | string | `centered`, `right` | | -| searchable | | boolean | - | | -| sortable | | boolean | - | | -| sticky | | boolean | - | | -| subheading | | string | - | | -| tdAttrs | Adds native attributes to td :td-attrs="(row, column)" => ({})" | func | - | Default function (see source code) | -| thAttrs | Adds native attributes to th :th-attrs="(column)" => ({})" | func | - | Default function (see source code) | -| visible | | boolean | - | true | -| width | | number\|string | - | | - -## Style - -| CSS Variable | SASS Variable | Default | -| --------------------------------------------- | --------------------------------------- | -------------------------------------------------------- | -| --oruga-table-background-color | \$table-background-color | #fff | -| --oruga-table-background | \$table-background | #f5f5f5 | -| --oruga-table-boder | \$table-boder | 1px solid transparent | -| --oruga-table-border-radius | \$table-border-radius | \$base-border-radius | -| --oruga-table-card-box-shadow | \$table-card-box-shadow | 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) | -| --oruga-table-card-cell-font-weight | \$table-card-cell-font-weight | 600 | -| --oruga-table-card-cell-padding | \$table-card-cell-padding | 0 0.5em 0 0 | -| --oruga-table-card-cell-text-align | \$table-card-cell-text-align | left | -| --oruga-table-card-detail-margin | \$table-card-detail-margin | -1rem 0 0 0 | -| --oruga-table-card-margin | \$table-card-margin | 0 0 1rem 0 | -| --oruga-table-color | \$table-color | black | -| --oruga-table-current-sort-border-color | \$table-current-sort-border-color | \$grey | -| --oruga-table-current-sort-font-weight | \$table-current-sort-font-weight | 700 | -| --oruga-table-current-sort-hover-border-color | \$table-current-sort-hover-border-color | \$grey | -| --oruga-table-detail-background | \$table-detail-background | #fafafa | -| --oruga-table-detail-box-shadow | \$table-detail-box-shadow | inset 0 1px 3px \$grey | -| --oruga-table-detail-chevron-color | \$table-detail-chevron-color | \$primary | -| --oruga-table-detail-chevron-width | \$table-detail-chevron-width | 40px | -| --oruga-table-detail-padding | \$table-detail-padding | 1rem | -| --oruga-table-focus-border-color | \$table-focus-border-color | \$primary | -| --oruga-table-focus-box-shadow | \$table-focus-box-shadow | 0 0 0 0.125em rgba(\$primary, 0.25) | -| --oruga-table-hoverable-background-color | \$table-hoverable-background-color | #fafafa | -| --oruga-table-narrow-padding | \$table-narrow-padding | .25em .5em | -| --oruga-table-row-active-background-color | \$table-row-active-background-color | \$primary | -| --oruga-table-row-active-color | \$table-row-active-color | \$primary-invert | -| --oruga-table-sticky-header-height | \$table-sticky-header-height | 300px | -| --oruga-table-sticky-zindex | \$table-sticky-zindex | 1 | -| --oruga-table-striped-background-color | \$table-striped-background-color | #fafafa | -| --oruga-table-td-border | \$table-td-border | 1px solid \$grey-lighter | -| --oruga-table-td-padding | \$table-td-padding | .5em .75em | -| --oruga-table-th-border | \$table-th-border | 2px solid \$grey-lighter | -| --oruga-table-th-checkbox-width | \$table-th-checkbox-width | 40px | -| --oruga-table-th-color | \$table-th-color | #363636 | -| --oruga-table-th-detail-width | \$table-th-detail-width | 14px | -| --oruga-table-th-font-weight | \$table-th-font-weight | 600 | -| --oruga-table-th-padding | \$table-th-padding | 0.5em 0.75em | diff --git a/packages/docs/components/Tabs.md b/packages/docs/components/Tabs.md deleted file mode 100644 index dfb857306..000000000 --- a/packages/docs/components/Tabs.md +++ /dev/null @@ -1,546 +0,0 @@ ---- -title: Tabs ---- - -# Tabs - -> Responsive horizontal navigation tabs, switch between contents with ease - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/tabs/examples/Tabs.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <p> - <o-button @click="activeTab = 1">Set Music</o-button> - </p> - <p> - <o-switch v-model="showBooks"> Show Books item </o-switch> - <o-switch v-model="multiline"> Multiline </o-switch> - </p> - <o-tabs v-model="activeTab" :multiline="multiline"> - <o-tab-item value="0" label="Pictures"> - Lorem ipsum dolor sit amet. - </o-tab-item> - - <o-tab-item :value="1" label="Music"> - Lorem <br /> - ipsum <br /> - dolor <br /> - sit <br /> - amet. - </o-tab-item> - - <o-tab-item value="2" :visible="showBooks" label="Books"> - What light is light, if Silvia be not seen? <br /> - What joy is joy, if Silvia be not byโ <br /> - Unless it be to think that she is by <br /> - And feed upon the shadow of perfection? <br /> - Except I be by Silvia in the night, <br /> - There is no music in the nightingale. - </o-tab-item> - - <o-tab-item value="3" label="Videos" icon="video" disabled> - Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales - felis lobortis eget. - </o-tab-item> - </o-tabs> - </section> -</template> - -<script> - export default { - data() { - return { - activeTab: '0', - showBooks: false, - multiline: false - } - } - } -</script> -``` - -::: - -### Custom header - -::: demo - -```html -<template> - <o-tabs type="boxed"> - <o-tab-item> - <template slot="header"> - <o-icon icon="info-circle" rootClass="custom-icon"></o-icon> - <span> Issues 3 </span> - </template> - </o-tab-item> - <o-tab-item> - <template slot="header"> - <o-icon icon="retweet" rootClass="custom-icon"></o-icon> - <span> Pull Requests {{count}} </span> - </template> - </o-tab-item> - </o-tabs> -</template> - -<script> - export default { - data() { - return { - count: 1 - } - }, - mounted() { - setTimeout(() => { - this.count++ - }, 3 * 1000) - } - } -</script> - -<style> - .custom-icon { - margin-right: 5px; - } -</style> -``` - -::: - -### Long header - -::: demo - -```html -<template> - <o-tabs type="boxed"> - <o-tab-item v-for="(item, index) in new Array(45)" :key="`longitem-${index}`"> - <template slot="header"> - <span>Head {{index}}</span> - </template> - </o-tab-item> - </o-tabs> -</template> -<script> - export default { - data() { - return { - expanded: false, - atRight: false, - size: null, - type: 'default' - } - } - } -</script> -``` - -::: - -### Vertical - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="atRight"> Right position </o-switch> - </div> - <div class="control"> - <o-switch v-model="expanded"> Expanded </o-switch> - </div> - <o-field label="Size"> - <o-select v-model="size" placeholder="Size"> - <option :value="null">Default</option> - <option value="small">Small</option> - <option value="medium">Medium</option> - <option value="large">Large</option> - </o-select> - </o-field> - <o-field label="Type"> - <o-select v-model="type" placeholder="Type"> - <option value="default">Default</option> - <option value="boxed">Boxed</option> - <option value="toggle">Toggle</option> - </o-select> - </o-field> - </o-field> - - <o-tabs :position="atRight ? 'right' : ''" :size="size" :type="type" vertical :expanded="expanded"> - <o-tab-item label="Pictures" icon="images"> - Lorem ipsum dolor sit amet. <br /> - Lorem ipsum dolor sit amet. <br /> - Lorem ipsum dolor sit amet. <br /> - Lorem ipsum dolor sit amet. <br /> - Lorem ipsum dolor sit amet. <br /> - Lorem ipsum dolor sit amet. - </o-tab-item> - - <o-tab-item label="Music" icon="music"> - What light is light, if Silvia be not seen? <br /> - What joy is joy, if Silvia be not byโ <br /> - Unless it be to think that she is by <br /> - And feed upon the shadow of perfection? <br /> - Except I be by Silvia in the night, <br /> - There is no music in the nightingale. - </o-tab-item> - - <o-tab-item label="Videos" icon="video" disabled> - Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales - felis lobortis eget. - </o-tab-item> - </o-tabs> - </section> -</template> - -<script> - export default { - data() { - return { - expanded: false, - atRight: false, - size: null, - type: 'default' - } - } - } -</script> -``` - -::: - -### Types - -::: demo - -```html -<template> - <section> - <o-tabs type="boxed"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - - <o-tabs type="toggle"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Position - -::: demo - -```html -<template> - <section> - <o-tabs type="boxed" position="centered"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - - <o-tabs type="toggle" position="right"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_tabs.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-tabs v-model="activeTab" v-bind="s"> - <o-tab-item v-bind="s" :value="1" label="Pictures" icon="images"> - Lorem ipsum dolor sit amet. - </o-tab-item> - <o-tab-item v-bind="s" :value="2" label="Music" icon="music"> - Lorem <br /> - ipsum <br /> - dolor <br /> - sit <br /> - amet. - </o-tab-item> - <o-tab-item v-bind="s" :value="3" label="Videos" icon="video"> - Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales - felis lobortis eget. - </o-tab-item> - </o-tabs> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - activeTab: 1, - subitem: "tab-item", - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "navSizeClass", - description: "Size of the navigation", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: "navTypeClass", - description: "Type of the navigation", - properties: ["type"], - suffixes: ['default', 'boxed', 'toggle'], - action: () => {} - }, - { - class: "verticalClass", - description: "Class of Tabs component when vertical", - properties: ['vertical'], - action: (cmp) => { - cmp.data.vertical = true - } - }, - { - class: "expandedClass", - description: "Class of Tabs component when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true - } - }, - { - class: "multilineClass", - description: "Class of Tabs component when multiline", - properties: ['multiline'], - action: (cmp) => { - cmp.data.multiline = true - } - }, - { - class: "positionClass", - description: "Class of Tabs component when when is vertical and its position changes", - properties: ['position', 'vertical'], - suffixes: ['bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.vertical = true - cmp.data.position = 'right' - } - }, - { - class: "tabItemWrapperClass", - description: "Class of the tab item wrapper", - specificity: "when <b>expandedClass</b> is applied", - }, - { - class: "contentClass", - description: "Class of the tab content", - }, - { - class: "itemClass", - description: "Class of the tab item", - subitem: true - }, - { - class: "itemHeaderClass", - description: "Class of the tab item header", - specificity: "when <b>verticalClass</b> or <b>expandedClass</b> or <b>positionClass</b> is applied", - subitem: true, - }, - { - class: "itemHeaderActiveClass", - description: "Class of the tab item header when active", - subitem: true, - suffixes: ['default', 'boxed', 'toggle'], - }, - { - class: "itemHeaderDisabledClass", - description: "Class of the tab item header when disabled", - subitem: true, - suffixes: ['default', 'boxed', 'toggle'], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "itemHeaderTypeClass", - description: "Class of the tab item header type", - subitem: true, - suffixes: ['default', 'boxed', 'toggle'], - action: () => {} - }, - { - class: "itemHeaderIconClass", - description: "Class of the tab item header icon", - subitem: true, - action: () => { - } - }, - { - class: "itemHeaderTextClass", - description: "Class of the tab item header text", - subitem: true, - action: () => { - } - }, - { - class: "navTabsClass", - description: "Class of the Tabs component nav tabs", - specificity: "when <b>positionClass</b> is applied", - }, - { - class: "navPositionClass", - description: "Class of the Tabs component nav position", - properties: ['position'], - suffixes: ['bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.vertical = false - cmp.data.position = 'right' - } - }, - ] - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------- | ----------------------------------------------- | -------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| animated | Tab will have an animation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tabs: {<br> animated: true<br>}</code> | -| destroyOnHide | Destroy tab on hide | boolean | - | false | -| expanded | Tabs will be expanded (full-width) | boolean | - | | -| multiline | Show tab items multiline when there is no space | boolean | - | | -| override | Override classes | boolean | - | false | -| position | Position of the tab, optional | string | `centered`, `right` | | -| size | Tab size, optional | string | `small`, `medium`, `large` | | -| type | Tab type | string | `boxed`, `toggle` | 'default' | -| v-model | | string\|number | - | | -| variant | Color of the control, optional | string\|object | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | -| vertical | Show tab in vertical layout | boolean | - | false | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| input | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| start | | | -| end | | | -| default | | | - ---- - -# Tab Item - -> <CarbonAds /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------- | ------------------------------------------------------------ | -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- | -| disabled | Item will be disabled | boolean | - | | -| icon | Icon on the left | string | - | | -| iconPack | Icon pack | string | - | | -| label | Item label | string | - | | -| override | Override classes | boolean | - | false | -| tag | Tabs item tag name | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tabs: {<br> itemTag: 'button'<br>}</code> | -| value | Item value (it will be used as v-model of wrapper component) | string\|number | - | | -| visible | Show/hide item | boolean | - | true | - -### Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| activate | | - -### Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| -------------------------------------------------- | -------------------------------------------- | ----------------------- | -| --oruga-tabs-disabled-opacity | \$tabs-disabled-opacity | \$base-disabled-opacity | -| --oruga-tabs-font-size | \$tabs-font-size | \$base-font-size | -| --oruga-tabs-icon-margin | \$tabs-icon-margin | 0.5em | -| --oruga-tabs-content-padding | \$tabs-content-padding | 1rem | -| --oruga-tabs-margin-bottom | \$tabs-margin-bottom | 1.5rem | -| --oruga-tabs-border-bottom-color | \$tabs-border-bottom-color | \$grey-lighter | -| --oruga-tabs-border-bottom-style | \$tabs-border-bottom-style | solid | -| --oruga-tabs-border-bottom-width | \$tabs-border-bottom-width | 1px | -| --oruga-tabs-link-color | \$tabs-link-color | hsl(0, 0%, 29%) | -| --oruga-tabs-link-active-border-bottom-color | \$tabs-link-active-border-bottom-color | \$primary | -| --oruga-tabs-link-active-color | \$tabs-link-active-color | \$primary | -| --oruga-tabs-link-line-height | \$tabs-link-line-height | \$base-line-height | -| --oruga-tabs-link-padding | \$tabs-link-padding | 0.5em 1em | -| --oruga-tabs-boxed-link-radius | \$tabs-boxed-link-radius | \$base-border-radius | -| --oruga-tabs-boxed-link-hover-background-color | \$tabs-boxed-link-hover-background-color | hsl(0, 0%, 96%) | -| --oruga-tabs-boxed-link-hover-border-bottom-color | \$tabs-boxed-link-hover-border-bottom-color | hsl(0, 0%, 86%) | -| --oruga-tabs-boxed-link-active-background-color | \$tabs-boxed-link-active-background-color | hsl(0, 0%, 100%) | -| --oruga-tabs-boxed-link-active-border-color | \$tabs-boxed-link-active-border-color | hsl(0, 0%, 86%) | -| --oruga-tabs-boxed-link-active-border-bottom-color | \$tabs-boxed-link-active-border-bottom-color | transparent | -| --oruga-tabs-toggle-link-border-color | \$tabs-toggle-link-border-color | hsl(0, 0%, 86%) | -| --oruga-tabs-toggle-link-border-style | \$tabs-toggle-link-border-style | solid | -| --oruga-tabs-toggle-link-border-width | \$tabs-toggle-link-border-width | 1px | -| --oruga-tabs-toggle-link-hover-background-color | \$tabs-toggle-link-hover-background-color | hsl(0, 0%, 96%) | -| --oruga-tabs-toggle-link-hover-border-color | \$tabs-toggle-link-hover-border-color | hsl(0, 0%, 71%) | -| --oruga-tabs-toggle-link-radius | \$tabs-toggle-link-radius | \$base-border-radius | -| --oruga-tabs-toggle-link-active-background-color | \$tabs-toggle-link-active-background-color | \$primary | -| --oruga-tabs-toggle-link-active-border-color | \$tabs-toggle-link-active-border-color | \$primary | -| --oruga-tabs-toggle-link-active-color | \$tabs-toggle-link-active-color | \$primary-invert | diff --git a/packages/docs/components/Timepicker.md b/packages/docs/components/Timepicker.md deleted file mode 100644 index 05ec3bf9a..000000000 --- a/packages/docs/components/Timepicker.md +++ /dev/null @@ -1,357 +0,0 @@ ---- -title: Timepicker ---- - -# Timepicker - -> An input with a simple dropdown/modal for selecting a time, uses native timepicker for mobile - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/timepicker/examples/Timepicker.md" class="docgen-edit-link">edit on github</a> - -## Examples - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="enableSeconds">Enable seconds</o-switch> - </div> - <o-field label="Locale"> - <o-select v-model="locale"> - <option :value="undefined"></option> - <option value="de-DE">de-DE</option> - <option value="en-CA">en-CA</option> - <option value="en-GB">en-GB</option> - <option value="en-US">en-US</option> - <option value="es-ES">es-ES</option> - <option value="es-MX">es-MX</option> - <option value="fr-CA">fr-CA</option> - <option value="fr-FR">fr-FR</option> - <option value="it-IT">it-IT</option> - <option value="ja-JP">ja-JP</option> - <option value="pt-BR">pt-BR</option> - <option value="ru-RU">ru-RU</option> - <option value="zn-CN">zn-CN</option> - </o-select> - </o-field> - <o-field label="Hour format"> - <o-select v-model="hourFormat"> - <option :value="undefined"></option> - <option value="12">12</option> - <option value="24">24</option> - </o-select> - </o-field> - </o-field> - <o-field label="Select time"> - <o-timepicker rounded placeholder="Click to select..." icon="clock" :enable-seconds="enableSeconds" :hour-format="hourFormat" :locale="locale"> </o-timepicker> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - hourFormat: undefined, // Browser locale - enableSeconds: false, - locale: undefined // Browser locale - } - } - } -</script> -``` - -::: - -### Min/Max date - -::: demo - -```html -<template> - <o-field label="Select time"> - <o-timepicker placeholder="Click to select..." :min-time="minTime" :max-time="maxTime"> </o-timepicker> - </o-field> -</template> - -<script> - export default { - data() { - const min = new Date() - min.setHours(9) - min.setMinutes(0) - const max = new Date() - max.setHours(18) - max.setMinutes(0) - return { - minTime: min, - maxTime: max - } - } - } -</script> -``` - -::: - -### Footer - -::: demo - -```html -<template> - <o-field label="Select time"> - <o-timepicker v-model="time" placeholder="Click to select..."> - <o-button label="Now" variant="primary" icon-left="clock" @click="time = new Date()" /> - <o-button label="Clear" variant="danger" icon-left="times" outlined @click="time = null" /> - </o-timepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - time: new Date() - } - } - } -</script> -``` - -::: - -### Granularity - -::: demo - -```html -<template> - <o-field label="Select timepicker"> - <o-timepicker placeholder="Click to select" icon="clock" :incrementMinutes="minutesGranularity" :incrementHours="hoursGranularity"> </o-timepicker> - </o-field> -</template> -<script> - export default { - data() { - return { - minutesGranularity: 15, - hoursGranularity: 2 - } - } - } -</script> -``` - -::: - -### Inline - -::: demo - -```html -<template> - <o-timepicker v-model="time" inline></o-timepicker> -</template> - -<script> - export default { - data() { - return { - time: new Date() - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_timepicker.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field label="Select time"> - <o-timepicker v-bind="s" placeholder="Click to select..." ref="timepicker"> - <div>This is the footer</div> - </o-timepicker> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - methods: { - openTimePicker() { - setTimeout(() => { - this.$refs.timepicker.$el.getElementsByClassName('o-drop__trigger')[0].click() - }, 500) - } - }, - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "sizeClass", - description: "Class of the Timepicker component size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - this.openTimePicker(); - }, - }, - { - class: "boxClass", - description: "Class of the Timepicker component box where you choose the date", - action: () => { - this.openTimePicker(); - } - }, - { - class: "separatorClass", - description: "Class of the Timepicker separator", - action: () => { - this.openTimePicker(); - }, - }, - { - class: "footerClass", - description: "Class of the Timepicker footer", - action: () => { - this.openTimePicker(); - } - }, - { - class: "mobileClass", - description: "Class of the Table when on mobile", - warning: "Switch to mobile view to see it in action!" - }, - { - class: "inputClasses", - realClass: "inputClasses.rootClass", - description: "Classes to apply on internal input.", - componentRef: "Input" - }, - { - class: "dropdownClasses", - realClass: "dropdownClasses.rootClass", - description: "Classes to apply on dropdown.", - componentRef: "Dropdown", - action: () => { - this.openTimePicker(); - } - }, - { - class: "selectClasses", - realClass: "selectClasses.selectClass", - description: "Classes to apply on select.", - componentRef: "Select", - action: () => { - this.openTimePicker(); - } - }, - ], - }; - } -} -</script> -<style> -.datepicker__table { - border-collapse: collapse; -} -</style> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| --------------------- | ----------------------------------------------------------- | -------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| appendToBody | | boolean | - | | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| defaultMinutes | | number | - | | -| defaultSeconds | | number | - | | -| disabled | | boolean | - | | -| editable | | boolean | - | | -| enableSeconds | | boolean | - | | -| expanded | Makes input full width when inside a grouped or addon field | boolean | - | | -| hourFormat | Hour format for input and display | string | `12`, `24` | | -| icon | Icon name to be added | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| incrementHours | | number | - | 1 | -| incrementMinutes | | number | - | 1 | -| incrementSeconds | | number | - | 1 | -| inline | | boolean | - | | -| maxTime | | date | - | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| minTime | | date | - | | -| mobileBreakpoint | Mobile breakpoint as max-width value | string | - | | -| mobileNative | | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> timepicker: {<br> mobileNative: true<br>}</code> | -| openOnFocus | | boolean | - | | -| override | Override classes | boolean | - | false | -| placeholder | | string | - | | -| position | Optional, position of the datepicker relative to the input | string | `top-right`, `top-left`, `bottom-left` | | -| resetOnMeridianChange | | boolean | - | false | -| rounded | Makes the element rounded | boolean | - | | -| size | Size of button, optional | string | `small`, `medium`, `large` | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| timeCreator | | func | - | Default function (see source code) | -| timeFormatter | | func | - | Default function (see source code) | -| timeParser | | func | - | Default function (see source code) | -| unselectableTimes | | array | - | | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| value | | date | - | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| blur | | -| focus | | -| invalid | | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| trigger | | | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| --------------------------------------------- | --------------------------------------- | ----------------------------------------------------- | -| --oruga-timepicker-font-size | \$timepicker-font-size | \$base-font-size | -| --oruga-timepicker-box-line-height | \$timepicker-box-line-height | \$base-line-height | -| --oruga-timepicker-box-padding | \$timepicker-box-padding | .375rem 1rem | -| --oruga-timepicker-footer-padding | \$timepicker-footer-padding | 0 .5rem | -| --oruga-timepicker-footer-margin | \$timepicker-footer-margin | 0.875rem 0 0 0 | -| --oruga-timepicker-select-line-height | \$timepicker-select-line-height | \$base-line-height | -| --oruga-timepicker-select-padding | \$timepicker-select-padding | $control-padding-vertical $control-padding-horizontal | -| --oruga-timepicker-select-color | \$timepicker-select-color | #363636 | -| --oruga-timepicker-select-font-weight | \$timepicker-select-font-weight | 600 | -| --oruga-timepicker-select-placeholder-opacity | \$timepicker-select-placeholder-opacity | \$base-disabled-opacity | -| --oruga-timepicker-separator-font-weight | \$timepicker-separator-font-weight | 600 | diff --git a/packages/docs/components/Tooltip.md b/packages/docs/components/Tooltip.md deleted file mode 100644 index ec4590a72..000000000 --- a/packages/docs/components/Tooltip.md +++ /dev/null @@ -1,309 +0,0 @@ ---- -title: Tooltip ---- - -# Tooltip - -> Display a brief helper text to your user - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/tooltip/examples/Tooltip.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <section> - <o-tooltip label="Tooltip right" position="right"> - <o-button> - Right - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip top"> - <o-button> - Top (default) - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip bottom" position="bottom"> - <o-button> - Bottom - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip left" position="left"> - <o-button> - Left - </o-button> - </o-tooltip> - - <o-tooltip label="delayed by 1000ms" :delay="1000"> - <o-button variant="warning"> - Delayed - </o-button> - </o-tooltip> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Multiline - -::: demo - -```html -<template> - <section> - <o-tooltip label="Tooltip multiline, probably because it's too long for a casual tooltip" multiline> - <o-button> - Multiline (default) - </o-button> - </o-tooltip> - - <o-tooltip label="It's not brief, but it's also not long" size="small" multiline> - <o-button> - Multiline (small) - </o-button> - </o-tooltip> - - <o-tooltip - label="Tooltip large multiline, because it's too long to be on a medium size. Did I tell you it's really long? Yes, it is โ I assure you!" - position="bottom" - size="large" - multiline - > - <o-button> - Multiline (large) - </o-button> - </o-tooltip> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Slot - -::: demo - -```html -<template> - <section> - <o-tooltip position="bottom" multiline> - <o-button>Html Content</o-button> - <template v-slot:content> <b>Lorem ipsum dolor sit amet</b>, consectetur warning elit. <i>Fusce id fermentum quam</i>. </template> - </o-tooltip> - - <o-tooltip variant="primary" :triggers="['click']" :auto-close="['outside', 'escape']"> - <template v-slot:content> - <o-icon icon="heart" variant="danger"></o-icon> - <o-icon icon="thumbs-up" variant="info"></o-icon> - <o-icon icon="thumbs-down" variant="warning"></o-icon> - <o-icon icon="smile-beam"></o-icon> - </template> - <o-button>Action</o-button> - </o-tooltip> - </section> -</template> - -<script> - export default {} -</script> -``` - -::: - -### Toggle - -::: demo - -```html -<template> - <section> - <o-button @click="active = !active"> - Toggle - </o-button> - - <hr /> - - <o-tooltip label="I'm never closing" :active="active" always> - <o-button> - Always - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip right" position="right" :active="active"> - <o-button> - Right - </o-button> - </o-tooltip> - </section> -</template> - -<script> - export default { - data() { - return { - active: true - } - } - } -</script> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_tooltip.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-tooltip v-bind="s" label="Tooltip!" always> - <o-button> - Delayed - </o-button> - </o-tooltip> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "contentClass", - description: "Class of the tooltip content", - action: () => { - } - }, - { - class: "triggerClass", - description: "Class of the tooltip trigger", - action: () => { - } - }, - { - class: "multilineClass", - description: "Class of the tooltip content when is multiline", - action: (cmp) => { - cmp.data.multiline = true - } - }, - { - class: "arrowClass", - description: "Class of the tooltip arrow", - action: () => { - } - }, - { - class: "arrowOrderClass", - description: "Class of the tooltip arrow when its position changes", - properties: ['position'], - suffixes: ['top', 'bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.position = 'right' - } - }, - { - class: "orderClass", - description: "Class of the tooltip trigger when its position changes", - properties: ['position'], - suffixes: ['top', 'bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.position = 'right' - } - }, - { - class: "alwaysClass", - description: "Class of the tooltip trigger when is always visible", - action: () => { - } - }, - { - class: "variantClass", - description : 'Class of the tooltip variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - } - ] - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| active | Whether tooltip is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding | boolean | - | true | -| always | Tooltip will be always active | boolean | - | | -| animated | Tooltip will have an animation | boolean | - | true | -| animation | Tooltip default animation | string | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tooltip: {<br> animation: 'fade'<br>}</code> | -| appendToBody | Append tooltip content to body | boolean | - | | -| autoClose | Tooltip auto close options | array\|boolean | `true`, `false`, `'inside'`, `'outside'` | true | -| delay | Tooltip delay before it appears (number in ms) | number | - | | -| label | Tooltip text | string | - | | -| multiline | Tooltip will be multilined | boolean | - | | -| override | Override classes | boolean | - | false | -| position | Tooltip position in relation to the element | string | `top`, `bottom`, `left`, `right` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tooltip: {<br> position: 'top'<br>}</code> | -| triggers | Tooltip trigger events | array | `hover`, `click`, `focus`, `contextmenu` | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'> tooltip: {<br> triggers: ['hover']<br>}</code> | -| variant | Color of the tooltip | string\|func\|array | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| content | | | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| --------------------------------------- | --------------------------------- | ---------------------------------- | -| --oruga-tooltip-arrow-margin | \$tooltip-arrow-margin | 2px | -| --oruga-tooltip-arrow-size | \$tooltip-arrow-size | 5px | -| --oruga-tooltip-background-color | \$tooltip-background-color | \$primary | -| --oruga-tooltip-color | \$tooltip-color | \$primary-invert | -| --oruga-tooltip-content-box-shadow | \$tooltip-content-box-shadow | 0px 1px 2px 1px rgba(0, 1, 0, 0.2) | -| --oruga-tooltip-content-font-size | \$tooltip-content-font-size | 0.85rem | -| --oruga-tooltip-content-max-width | \$tooltip-content-max-width | 300px | -| --oruga-tooltip-content-multiline-width | \$tooltip-content-multiline-width | 300px | -| --oruga-tooltip-content-padding | \$tooltip-content-padding | 0.35rem 0.75rem | -| --oruga-tooltip-content-radius-large | \$tooltip-content-radius-large | 6px | -| --oruga-tooltip-content-weight-normal | \$tooltip-content-weight-normal | 400 | -| --oruga-tooltip-content-zindex | \$tooltip-content-zindex | 38 | diff --git a/packages/docs/components/Upload.md b/packages/docs/components/Upload.md deleted file mode 100644 index 92f1a228f..000000000 --- a/packages/docs/components/Upload.md +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: Upload ---- - -# Upload - -> Upload one or more files - -> <CarbonAds /> - ---- - -<a href="https://github.com/oruga-ui/oruga/edit/develop/packages/docs/../oruga/src/components/upload/examples/Upload.md" class="docgen-edit-link">edit on github</a> - -## Examples - -### Base - -::: demo - -```html -<template> - <o-field class="file"> - <o-upload v-model="file"> - <o-button tag="a" variant="primary"> - <o-icon icon="upload"></o-icon> - <span>Click to upload</span> - </o-button> - </o-upload> - <span class="file-name" v-if="file"> - {{ file.name }} - </span> - </o-field> -</template> - -<script> - export default { - data() { - return { - file: null - } - } - } -</script> -``` - -::: - -### Drag&Drop - -::: demo - -```html -<template> - <section> - <o-field> - <o-upload v-model="dropFiles" multiple drag-drop> - <section class="ex-center"> - <p> - <o-icon icon="upload" size="is-large"> </o-icon> - </p> - <p>Drop your files here or click to upload</p> - </section> - </o-upload> - </o-field> - - <div class="tags"> - <span v-for="(file, index) in dropFiles" :key="index"> - {{file.name}} - <o-button icon-left="times" size="small" native-type="button" @click="deleteDropFile(index)"> </o-button> - </span> - </div> - </section> -</template> - -<script> - export default { - data() { - return { - dropFiles: [] - } - }, - methods: { - deleteDropFile(index) { - this.dropFiles.splice(index, 1) - } - } - } -</script> - -<style> - .ex-center { - text-align: center; - } -</style> -``` - -::: - -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_upload.scss) - -<br /> -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <section> - <o-field> - <o-upload v-bind="s"> - <section class="ex-center"> - <p> - <o-icon icon="upload" size="is-large"> </o-icon> - </p> - <p v-if="s.dragDrop">Drop your files here or click to upload</p> - <p v-if="!s.dragDrop">Click to upload</p> - </section> - </o-upload> - </o-field> - </section> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "draggableClass", - description: "Upload class when draggable", - properties: ['dragDrop'], - action: (cmp) => { - cmp.data.dragDrop = true; - } - }, - { - class: "expandedClass", - description: "Upload class when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "disabledClass", - description: "Upload class when disabled", - properties: ['disabled'], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "hoveredClass", - description: "Upload class on dragging", - properties: ['dragDrop'], - warning: 'Drag & drop a file to see it in action!', - action: (cmp) => { - cmp.data.dragDrop = true; - } - }, - { - class: "variantClass", - description : 'Class of the upload variant', - properties: ["variant", "dragDrop"], - suffixes: ['primary', 'info', 'warning', 'danger'], - warning: 'Drag & drop a file to see it in action!', - action: (cmp) => { - cmp.data.variant = 'warning'; - cmp.data.dragDrop = true; - } - } - ] - }; - }, -}; -</script> - -<br /> -<br /> - -## Props - -| Prop name | Description | Type | Values | Default | -| ------------------ | --------------------------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| accept | Same as native accept | string | - | | -| autocomplete | Native options to use in HTML5 validation | string | - | | -| disabled | Same as native disabled | boolean | - | | -| dragDrop | Accepts drag & drop and change its style | boolean | - | | -| expanded | Upload will be expanded (full-width) | boolean | - | false | -| icon | Icon name to be added | string | - | | -| iconPack | Icon pack to use | string | `mdi`, `fa`, `fas and any other custom icon pack` | | -| maxlength | Same as native maxlength, plus character counter | number\|string | - | | -| multiple | Same as native, also push new item to v-model instead of replacing | boolean | - | | -| native | Replace last chosen files every time (like native file input element) | boolean | - | false | -| override | Override classes | boolean | - | false | -| rounded | Makes the element rounded | boolean | - | | -| statusIcon | Show status icon using field and variant prop | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "statusIcon": true<br>}</code> | -| useHtml5Validation | Enable html 5 native validation | boolean | - | <div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> "useHtml5Validation": true<br>}</code> | -| v-model | | object\|File\|array | - | | -| validationMessage | The message which is shown when a validation error occurs | string | - | | -| variant | Color of the control, optional | string | `primary`, `info`, `success`, `warning`, `danger`, `and any other custom color` | | - -## Events - -| Event name | Properties | Description | -| ---------- | ---------- | ----------- | -| blur | | -| focus | | -| invalid | | -| input | | - -## Slots - -| Name | Description | Bindings | -| ------- | ----------- | -------- | -| default | | | - -## Style - -| CSS Variable | SASS Variable | Default | -| ------------------------------------------- | ------------------------------------- | ----------------------- | -| --oruga-upload-draggable-border | \$upload-draggable-border | 1px dashed \$grey-light | -| --oruga-upload-draggable-border-radius | \$upload-draggable-border-radius | \$base-border-radius | -| --oruga-upload-draggable-disabled-opacity | \$upload-draggable-disabled-opacity | \$base-disabled-opacity | -| --oruga-upload-draggable-hover-border-color | \$upload-draggable-hover-border-color | \$grey | -| --oruga-upload-draggable-padding | \$upload-draggable-padding | 0.25em | diff --git a/packages/docs/docgen.config.js b/packages/docs/docgen.config.js deleted file mode 100644 index 69c11edd0..000000000 --- a/packages/docs/docgen.config.js +++ /dev/null @@ -1,171 +0,0 @@ -const path = require('path'); -const fs = require('fs'); - -const src = '../oruga/src'; - -const IGNORE = [ - 'DropdownItem.vue', 'FieldBody.vue', 'SliderThumb.vue', 'SliderTick.vue', - 'TableMobileSort.vue', 'TablePagination.vue', 'TableColumn.vue', 'PaginationButton.vue', - 'TabItem.vue', 'StepItem.vue', 'MenuItem.vue', 'MenuList.vue', 'Inspector.vue', - 'DatepickerTable.vue', 'DatepickerTableRow.vue', 'DatepickerMonth.vue', 'NotificationNotice.vue', - 'CarouselItem.vue' -]; - -const IGNORE_CLASSES = { - 'icon' : ['customClass'] -} - -const NAME_FOLDER_MAPPING = { - 'notification/toast' : 'notification' -} - -module.exports = { - componentsRoot: `${src}/components`, - components: '**/[A-Z]*.vue', - outDir: './components', - docsRepo: 'oruga-ui/oruga', - docsBranch: 'develop', - docsFolder: 'packages/docs', - defaultExamples: false, - getDestFile: (file, config) => { - const component = path.basename(file); - if (!component || IGNORE.indexOf(component) >= 0) return; - return path.join(config.outDir, component).replace(/\.vue$/, '.md'); - }, - templates: { - component: (renderedUsage, doc, config, fileName, requiresMd, { isSubComponent }) => { - const { displayName, description, docsBlocks, tags, functional } = doc; - const { deprecated, author, since, version, see, link, style } = tags || {}; - return ` - -${!isSubComponent ? ` ---- -title: ${displayName} ---- -`: ''} -# ${deprecated ? `~~${displayName}~~` : displayName} -${deprecated ? `> **Deprecated** ${deprecated[0].description}\n` : ''} -${description ? '> ' + description : ''} -${functional ? renderedUsage.functionalTag : ''} -${author ? author.map(a => `Author: ${a.description}\n`) : ''} -${since ? `Since: ${since[0].description}\n` : ''} -${version ? `Version: ${version[0].description}\n` : ''} -${see ? see.map(s => `[See](${s.description})\n`) : ''} -${link ? link.map(l => `[See](${l.description})\n`) : ''} -> <CarbonAds /> -${docsBlocks ? '---\n' + docsBlocks.join('\n---\n') : ''} -${tmplClassProps(config, displayName.toLowerCase())} -${tmplProps(renderedUsage.props, config, displayName.toLowerCase())} -${renderedUsage.methods} -${renderedUsage.events} -${renderedUsage.slots} -${requiresMd.length ? '---\n' + requiresMd.map(component => component.content).join('\n---\n') : ''} -${style ? renderStyleDocs(config, style[0].description) : ''} -`; - }, - props: (props) => { - return props - } - } -}; - -function tmplClassProps(config, name) { - try { - name = NAME_FOLDER_MAPPING[name] ? NAME_FOLDER_MAPPING[name] : name - const inspectorVueFile = path.resolve(config.cwd, `${src}/components/${name}/Inspector.vue`) - return ` -## Class props - -๐ [Full scss file](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/components/_${name}.scss) - -<br /> -${fs.readFileSync(inspectorVueFile, 'utf8')} -<br /> -<br /> -` - } catch (err) { - return '' - } -} - -function tmplProps(props, config, name) { - let ret = ` -## Props -| Prop name | Description | Type | Values | Default | -| ------------- |-------------| --------- | ----------- | ----------- | -` - props = props.filter(function(prop) { - return !('tags' in prop) || !('ignore' in prop.tags); - }); - - props.sort(function(propa, propb) { - return (propa.name < propb.name) ? -1 : (propa.name > propb.name) ? 1 : 0; - }); - - props.forEach(pr => { - const p = pr.name - if (p.endsWith("Class") || p.endsWith("Classes")) { - if (!(IGNORE_CLASSES[name] && IGNORE_CLASSES[name].indexOf(p) >= 0)) { - return; - } - } - const n = pr.type && pr.type.name ? pr.type.name : '' - let d = pr.defaultValue && pr.defaultValue.value ? pr.defaultValue.value : '' - const v = pr.values ? pr.values.map(pv => `\`${pv}\``).join(', ') : '-' - const t = pr.description ? pr.description : '' - - if (d.indexOf('getValueByPath') >= 0 && d.indexOf('const ') < 0 && d.indexOf('if ') < 0 && d.indexOf('else ') < 0) { - const params = d.substring(d.lastIndexOf('('), d.lastIndexOf(')')).split(',') - let configParts = null - if (params.length > 3) { // In case last param contains a ',' - params[2] = params.slice(2).join(',') - } - if (params[1]) { - configParts = params[1].split('.') - } - if (configParts && configParts[0] && configParts[1]) { - const value = `${configParts[1].replace(/'/g, '')}: ${params[2]}` - d = `<div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>${configParts[0].replace(/'/g, '')}: {<br> ${value}<br>}</code>` - } - if (configParts && configParts.length == 1) { - const value = `${configParts[0].replace(/'/g, '')}: ${params[2]}` - d = `<div>From <b>config</b></div><br><code style='white-space: nowrap; padding: 0;'>{<br> ${value}<br>}</code>` - } - } - - d = d.includes('=>') ? 'Default function (see source code)' : d - - ret += `| ${mdclean(p)} | ${mdclean(t)} | ${mdclean(n)} | ${mdclean(v)} | ${mdclean(d)} |` + '\n' - }) - return ret -} - -function mdclean(input) { - return input.replace(/\r?\n/g, '<br>').replace(/\|/g, '\\|') -} - -function renderStyleDocs(config, name) { - const cssFile = path.resolve(config.cwd, `${src}/scss/components/${name}`) - const content = fs.readFileSync(cssFile, 'utf8'); - const docsRegex = '/* @docs */'; - const docs = content.substring(content.indexOf(docsRegex) + docsRegex.length, content.lastIndexOf(docsRegex)); - const variables = docs.split(/\r?\n/).filter(d => !!d); - return ` -## Style - - | CSS Variable | SASS Variable | Default | - | --------------------- | -------------- | ------- | -${variables - .filter(variable => variable.indexOf('@deprecated') < 0) - .map(variable => { - const keyValue = variable.split(':'); - const varName = keyValue[0].trim(); - const varValue = keyValue[1].replace('!default', '').replace(';', '').trim(); - const varNameCSS = varName.replace('$', ''); - return ( - `| ${'--oruga-' + varNameCSS} | ${varName} | ${varValue} |` - ) - }) - .join('\n')} -` -} diff --git a/packages/docs/documentation/README.md b/packages/docs/documentation/README.md deleted file mode 100644 index 1439969a5..000000000 --- a/packages/docs/documentation/README.md +++ /dev/null @@ -1,686 +0,0 @@ -## Introduction - -Oruga is a <b>lightweight library of UI components for [Vue.js](https://vuejs.org/) without CSS framework dependency.</b><br> -It <b>doesn't depend on any specific style or CSS framework</b> (like Bootstrap, Bulma, TailwindCSS, etc) and it <b>doesn't provide any grid system or CSS utility</b>, it just offer a <b>set of components easy to customize only modifying your stylesheets</b> or <b>integrating it with a CSS framework</b> (see the [demo](#examples)).<br> -Oruga wants you to <b>focus only on UI/UX aspects</b> of your application and <b>be totally flexible to future changes</b> without having to touch a line of JavaScript. - -If you need a component library and want to easily apply your custom styles, Oruga is the library for you! ๐ - -<CarbonAds /> - -### Oruga default stylesheet - -Oruga comes with a default stylesheet containing only the essential rules for Oruga components such as display, position, z-index and other basic attributes. You can use the default Oruga stylesheet in this documentation turning on the switch in the navbar. - -<video class="oruga-doc-video" controls autoplay muted loop> - <source src="/defaultswitch.mp4" type="video/mp4"> -</video> - -If you use the default stylesheet to browse documentation some examples won't work as you expect because sizes, variants and adornments are not included in the Oruga default stylesheet. For more info read ["Differences between default and full css"](#differences-between-default-and-full-css) or go to ["Customization section"](#customization) if you want to know more about components customization. - -### Availability - -๐ Oruga is available for [Vue.js](https://vuejs.org/) **version 2.6+** or **version 3.x** and has been tested in all major browsers - - |  |  |  |  |  ---- | --- | --- | --- | --- | --- | -Latest โ | Latest โ | 10+ โ | Latest โ | 6.1+ โ | IE 11 โ | - -๐ For more info about components customization, go to the ["Customization section"](#customization). - -๐น To see Oruga in action, go to the ["Examples" section](#examples). - -## Setup - -### Vue 2 -<br> -<o-tabs contentClass="installation-tabs-content" navTabsClass="installation-tabs-nav-buttons" rootClass="installation-tabs"> -<o-tab-item override label="Yarn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-"> - -```bash -yarn add @oruga-ui/oruga -``` - -</o-tab-item> -<o-tab-item override label="Npm" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-"> - -```bash -npm install @oruga-ui/oruga --save -``` - -</o-tab-item> -<o-tab-item override label="Cdn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-"> - -```html -<link rel="stylesheet" href="https://unpkg.com/@oruga-ui/oruga/dist/oruga.min.css" /> -<script src="https://unpkg.com/@oruga-ui/oruga/dist/oruga.min.js"></script> -``` - -</o-tab-item> -</o-tabs> - -#### Build from "develop" branch - -```html -<link rel="stylesheet" href="https://preview.oruga.io/cdn/oruga.min.css" /> -<script src="https://preview.oruga.io/cdn/oruga.min.js"></script> -``` - - - -#### Full bundle - -```js -import Vue from 'vue' -import Oruga from '@oruga-ui/oruga' -import '@oruga-ui/oruga/dist/oruga.css' - -Vue.use(Oruga) -``` - -#### Individual components (tree shaking) - -```js -import Vue from 'vue' -import { OAutocomplete, OSidebar } from '@oruga-ui/oruga' -import '@oruga-ui/oruga/dist/oruga.css' - -Vue.component(OAutocomplete) -Vue.component(OSidebar) -``` - -### Vue 3 -<br> -<o-tabs contentClass="installation-tabs-content" navTabsClass="installation-tabs-nav-buttons" rootClass="installation-tabs"> -<o-tab-item override label="Yarn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-"> - -```bash -yarn add @oruga-ui/oruga-next -``` - -</o-tab-item> -<o-tab-item override label="Npm" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-"> - -```bash -npm install @oruga-ui/oruga-next --save -``` - -</o-tab-item> -<o-tab-item override label="Cdn" itemHeaderTypeClass="installation-tabs-nav-button-" itemHeaderActiveClass="installation-tabs-nav-button-active-"> - -```html -<link rel="stylesheet" href="//unpkg.com/oruga-next/dist/oruga.css" /> -<script src="//unpkg.com/oruga-next/dist/oruga.js"></script> -``` - -</o-tab-item> -</o-tabs> - -#### Full bundle - -```js -import { createApp } from 'vue' -import Oruga from '@oruga-ui/oruga-next' -import '@oruga-ui/oruga-next/dist/oruga.css' - -createApp(...).use(Oruga); -``` - -#### Individual components (tree shaking) - -```js -import { createApp } from 'vue' -import { OAutocomplete, OSidebar } from '@oruga-ui/oruga-next' -import '@oruga-ui/oruga-next/dist/oruga.css' - -createApp(...) - .use(OAutocomplete) - .use(OSidebar) -``` - -## Nuxt module - -Oruga provides a [Nuxt.js](https://nuxtjs.org) module to easily integrate the library in your Nuxt.js app. - -Add `@oruga-ui/oruga/nuxt` to `modules` section of your `nuxt.config.js` file. - -```js -module.exports = { - modules: ['@oruga-ui/oruga/nuxt'] -} -``` - -You can also extend and/or override classes in this section (see how to [add new classes](#adding-new-classes) or [override existing classes](#overriding-classes) in Oruga) - -```js -module.exports = { - modules: [ - [ - '@oruga-ui/oruga/nuxt', - { - button: { - override: true - } - } - ] - ] -} -``` - -By default Oruga Nuxt module includes `oruga.css` stylesheet. If you want to avoid including it you can set `includeCss` to `false` inside `nuxt.conf.js` - -```js - oruga: { - includeCss: false - }, -``` - -`includeCss` accepts other 2 values: - -- `full` to include `oruga-full.css` -- `vars` to include `oruga-full-vars.css` - -See ["Customization section"](#customization) to understand the difference between these stylesheets. - -Alternatively you can use Nuxt.js plugins system adding a file (e.g. `oruga.js`) in your `plugins` folder containing - -```js -import Vue from 'vue' -import Oruga from '@oruga-ui/oruga' -import '@oruga-ui/oruga/dist/oruga.css' - -Vue.use(Oruga) -``` - -To make this plugin available in your app, add this file to the `plugins` array in your `nuxt.config.js` - -```js -plugins: [{ src: '~plugins/oruga.js' }] -``` - -To understand how the plugins work with Nuxt.js, take a look at the [NuxtJS plugin documentation](https://nuxtjs.org/guides/configuration-glossary/configuration-plugins). - -## Customization - -Oruga allows you to customize components in 3 different ways: - -- [Adding new classes](#adding-classes) -- [Overriding existing classes](#overriding-classes) -- [Using CSS or SASS/SCSS variables](#using-css-or-sass-scss-variables) - -You can mix them, for example adding new classes and using CSS variables! - -Oruga provides `oruga.css`, a lightweight stylesheet containing only minimal CSS rules (position, display, z-index ...). Include it if you want to perform a complete customization. - -Oruga provides other 2 different stylesheets: - -- `oruga-full.css`: a stylesheet containing the complete Oruga style (the default style used for documentation). -- `oruga-full-vars.css`: a stylesheet containing the complete Oruga style with css vars you can redefine in your application. For more information [click here](#using-css-or-sass-scss-variables). - -For more info read ["Differences between default and full css"](#differences-between-default-and-full-css). - - - -### Adding new classes or override existing ones - -With Oruga you can easily override existing components style appending one or more classes. Each component has a `Class prop` section (for example see [Dropdown Class props](/components/Dropdown.html#class-props)) where you can inspect elements each class property affects using the `Class prop inspector`. - -<video class="oruga-doc-video" controls autoplay muted loop> - <source src="/inspectormov.mp4" type="video/mp4"> -</video> - -### Adding classes - -You can add classes to a component using class properties (see [Autocomplete class props](/components/Autocomplete.html#class-props) for example) - -#### Adding classes from props - -```vue -<o-autocomplete root-class="myautocomplete-root" menu-class="myautocomplete-menu" item-class="myautocomplete-item" /> -``` - -#### Adding classes globally - -```js -import Vue from 'vue'; -import Oruga from '@oruga-ui/oruga'; -import '@oruga-ui/oruga/dist/oruga.css'; - -Vue.use(Oruga, { - autocomplete: { - rootClass: 'myautocomplete-root', - menuClass: 'myautocomplete-menu', - itemClass: 'myautocomplete-item', - ... - } -}); -``` - -If you use individual imports you can customize each component using `Config` plugin. - -```js -import Vue from 'vue'; -import { OAutocomplete, OSidebar, Config } from '@oruga-ui/oruga'; - -Vue.component(OAutocomplete); -Vue.component(OSidebar); -Vue.use(Config, { - autocomplete: { - rootClass: 'myautocomplete-root', - menuClass: 'myautocomplete-menu', - itemClass: 'myautocomplete-item', - ... - } -}) -``` - -You can also use an `array` to specify more than one class or a `function` to extend or override classes in a component. In case you use a function, a suffix is provided by the component and it can be used inside the function. For example, `menuPositionClass` in Autocomplete provides a suffix to specify menu position (top, bottom), in this case you may define a function and append the suffix to the base class name - -```js -Vue.use(Config, { - autocomplete: { - rootClass: 'myautocomplete-root', - menuClass: 'myautocomplete-menu', - menuPositionClass: { - class: (suffix) => { - return `myautocomplete-menu-${suffix}` - } - }, - itemClass: 'myautocomplete-item', - } -}) -``` - -For a better customization experience this function accepts the component's `context` containing its read-only attributes (`props`, `data` and `computed`) as second parameter. For example using [Bootstrap](https://getbootstrap.com/) you may want to apply variants to buttons only when the element is not outlined - -```js -Vue.use(Config, { - input: { - rootClass: (_, context) => { - if (context.computed.hasIconRight) { - return 'has-icons-right') - } - }, - variantClass: (variant, context) => { - if (!context.props.outlined) { - return `btn-${variant}` - } - } - }, - ... -} -``` - -#### Deal with specificity - -Oruga CSS comes with the lowest [specifity](https://www.w3schools.com/css/css_specificity.asp) possible, that's why you can easily override existing classes by defining new ones in the global configuration or using attributes. However there are some cases where specificty is higher than you expect, for example in the [Steps](/components/Steps.html) component the `nav item` contains a `marker` and a `divider` which colors change whether the nav item is active or not. - -```scss -.o-steps { - ... - &__nav-item-active { - .o-steps__link { - cursor: default; - } - - .o-steps__marker { - @include avariable('background-color', 'steps-maker-default-color', $steps-maker-default-color); - @include avariable('border-color', 'steps-active-color', $steps-active-color); - @include avariable('color', 'steps-active-color', $steps-active-color); - } - - .o-steps__divider { - background-position: left bottom; - } - } - - &__nav-item-previous { - .o-steps__marker { - @include avariable('color', 'steps-maker-default-color', $steps-maker-default-color); - @include avariable('background-color', 'steps-previous-color', $steps-previous-color); - } - - .o-steps__divider { - background-position: left bottom; - } - } - ... -} -``` - -If you want to change the color you can use `!important` or change variables values. Otherwise you can easily increase the specificity in your stylesheet - -```css -.steps-nav-item-active .step-marker { - color: blue; - border-color: blue; -} - -.steps-nav-item-active .step-divider { - background-color: blue; -} - -.steps-nav-item-previous .step-marker { - background-color: blue; -} - -.steps-nav-item-previous .step-divider { - background-color: blue; -} -``` - -and then configure Oruga to use your custom classes - -```js -Vue.use(Oruga, { - steps: { - itemActiveClass: 'steps-nav-item-active', - itemPreviousClass: 'steps-nav-item-previous', - stepMarkerClass: 'step-marker', - stepDividerClass: 'step-divider', - } -}); -``` - -You can see this code in action in [Oruga multiframework example](https://oruga-multiframework-demo.netlify.app/tailwind)(code [here](https://github.com/oruga-ui/demo-multiframework/blob/master/src/assets/oruga-tailwindcss.css#L64)) - -Sometimes components change how elements are positioned (horizontally, vertically...), this is another case of higher specificity. In the [Steps](/components/Steps.html) component the `vertical` attribute disposes the steps vertically changing the `height` of the steps `divider`. - -```scss -.o-steps { - &__wrapper-vertical { - display: flex; - flex-direction: row; - - .o-steps__divider { - height: 100%; - @include avariable('width', 'steps-divider-height', $steps-divider-height); - top: -50%; - left: calc(50% - #{$steps-divider-height / 2}); - } - - ... - } - ... -} -``` - -If you want to set height to 50% keeping the other attributes unchanged you can't just define a new class (unless you want to use `!important`), because of a higher specificity. In that case, we suggest to define your new class in this way - -```css -.steps-vertical .step-divider { - height: 50%; -} -``` - -and in your configuration - -```js -Vue.use(Oruga, { - steps: { - verticalClass: 'steps-vertical', - stepDividerClass: 'step-divider' - } -}); -``` - -In Oruga documentation you'll find a special note (๐) in the `Class prop inspector` for classes with a higher specificity. - -### Overriding classes - -In case you want to override Oruga existing classes completely, you can act as above and set the field `override` to true. - -```js -import Vue from 'vue'; -import Oruga from '@oruga-ui/oruga'; - -Vue.use(Oruga, { - autocomplete: { - override: true, - rootClass: 'myautocomplete-root', - menuClass: 'myautocomplete-menu', - itemClass: 'myautocomplete-item', - ... - } -}); -``` - -or directly in your component - -```html -<o-autocomplete - override - rootClass="myautocomplete-root"> -``` - -::: warning -In this case `override` property replaces Oruga existing classes completely, ignoring your configuration. -::: - -You can also specify the override behaviour for each class - -```js -Vue.use(Config, { - autocomplete: { - rootClass: { - class: 'myautocomplete-root', - override: true - }, - menuClass: 'myautocomplete-menu', - itemClass: 'myautocomplete-item', - ... - } -}) -``` - -### Transform classes - -In case you want to transform applied classes' names you can use `transformClasses` function directly in your configuration. - -```js -Vue.use(Config, { - button: { - transformClasses: (appliedClasses) => { - return appliedClasses.replace(/-/g, '--') - } - } - ... -}) -``` - -You can also use `transformClasses` globally if you need to transform classes for any component. - -```js -Vue.use(Config, { - transformClasses: (appliedClasses) => { - return appliedClasses.replace(/-/g, '--') - } - ... -}) -``` - -### Using CSS or SASS/SCSS variables - -You can easily customize Oruga using CSS or SASS/SCSS variables. Each component has its own variables, mostly of them with default values defined in the [base style](documentation/#base-style) (see [utilities/_variables.scss](https://github.com/oruga-ui/oruga/blob/master/packages/oruga/src/scss/utilities/_variables.scss)). - -To use *CSS variables* you have to import `oruga-full-vars.css` stylesheet - -```js -import '@oruga-ui/oruga/dist/oruga-full-vars.css' -``` - -and redefine the variables you want to change. - -For example to change variants globally using CSS variables you can do - -```css -:root { - --oruga-variant-primary: green; - --oruga-variant-danger: red; -} -``` - -or a specific component variable, such as button icon width - -```css -:root { - --oruga-button-icon-width: 2.5em; -} -``` - -To use *SASS/SCSS variables* you have to use .scss files placed in the Oruga package - -```js -import '@oruga-ui/oruga/src/scss/oruga-full-vars'; -``` - -::: warning -In order to work with SASS/SCSS you might also have to install `sass` and `sass-loader` depending on your environment. -::: - -An example can be found in the [Button style section](/components/Button.html#style): here you'll find the complete list of all the CSS and SASS/SCSS variables (with their respective default values) you can redefine for each component. - -## Configuration - -Oruga allows to customize each components using config constructor or programmatically using `this.$oruga.config`. - -```js -{ - globalfield: string|boolean|number|function|...., - componentname: { - override: boolean, - customfieldX: string|boolean|number|function|.... - } -} - -``` - -For example: - -```js -{ - button: { - override: true, - rootClass: 'btn', - roundedClass: 'btn-rounded', - ... - } -} - -``` - -### Differences between default and full css - -The default stylesheet contains only the essantial rules for Oruga components such as display, position, z-index and other basic attributes. - -For example to style a dropdown using override mode with _oruga_ default stylesheet using [TailwindCSS](https://tailwindcss.com/) - -```js -import '@oruga-ui/oruga/dist/oruga.css' -``` - -```css -.dropdown { - @apply inline-flex relative; -} -.dropdown-menu { - top: 100%; - min-width: 12em; - @apply absolute bg-white left-0 m-0 px-2 shadow-lg rounded-sm z-10; -} -.dropdown-item { - @apply relative block no-underline px-1 py-2 cursor-pointer; -} -``` - -And here's how to style a dropdown using _oruga-full_ stylesheet - -```js -import '@oruga-ui/oruga/dist/oruga-full.css' -``` - -```css -.dropdown-menu { - min-width: 12em; - @apply bg-white m-0 px-2 shadow-lg rounded-sm z-10; -} -.dropdown-item { - @apply no-underline px-1 py-2 cursor-pointer; -} -``` - -Take a look at the [official TailwindCSS + Oruga example](https://github.com/oruga-ui/demo-tailwindcss). - -## Global Props - -| Field | Description | Default | -| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| statusIcon | Show status icon using field and variant prop | true | -| statusVariantIcon | Default mapping of variant and icon name | <code style='white-space: nowrap; padding: 0;'>{<br> 'success': 'check',<br> 'danger': 'alert-circle',<br> 'info':'information', <br> 'warning': 'alert'<br>} </code> | -| useHtml5Validation | Default form components use-html5-validation attribute | true | -| iconPack | Icon pack used internally and on the Icon component attribute | 'mdi' | -| reportInvalidInput | Callback function that allows for custom behavior when HTML constraint validation would visually report that a field is invalid. Takes the input and its parent field (if any) as arguments. | <code style='white-space: nowrap; padding: 0;'>null</code> | - -Take a look at each component docs to know all customizable fields/props by config. - -## Base Style - -| SASS Variable | Default | -|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| \$base-border-radius | 4px | -| \$base-font-size | 1rem | -| \$base-rounded-border-radius | 9999px | -| \$base-line-height | 1.5 | -| \$base-disabled-opacity | 0.5 | -| \$speed | 300ms | -| \$speed-slow | 150ms | -| \$speed-slower | 250ms | -| \$easing | ease-out | -| \$control-border-width | 1px | -| \$control-height | 2.25em | -| \$white | #ffffff | -| \$black | #000000 | -| \$grey | #7a7a7a | -| \$grey-light | #b5b5b5 | -| \$grey-lighter | #dbdbdb | -| \$primary | #445e00 | -| \$primary-invert | \$white | -| \$danger | #b60000 | -| \$danger-invert | \$white | -| \$warning | #f4c300 | -| \$warning-invert | \$black | -| \$success | #006724 | -| \$success-invert | \$white | -| \$info | #005C98 | -| \$info-invert | \$white | -| \$whitelist | () | -| \$sass-vars | true | -| \$css-vars | true | -| \$variable-prefix | '--oruga-' | -| \$sizes | (<br> "small": .75rem,<br> "medium": 1.25rem,<br> "large": 1.5rem<br>) | -| \$colors | (<br> "primary": ($primary, $primary-invert),<br> "danger": ($danger, $danger-invert),<br> "warning": ($warning, $warning-invert),<br> "success": ($success, $success-invert),<br> "info": ($info, $info-invert)<br>) | - -## Examples - -### TailwindCSS, Bootstrap 5, Bulma and Material demo ๐งถ - -- [Online demo](https://oruga-multiframework-demo.netlify.app) -- [Source code](https://github.com/oruga-ui/demo-multiframework) - -<iframe frameborder="0" style="margin-top: 1rem; width: 100%; height: 80vh;" - src="https://oruga-multiframework-demo.netlify.app/Tailwind"> -</iframe> - -### TailwindCSS 2 Recipe Demo ๐๐๐ - -This simple demo shows a simple recipe website. Oruga components like Input, Radio, Loading, Switch, Collapse etc are customized using [TailwindCSS 2](https://tailwindcss.com/)! - -- [Online demo](https://oruga-tailwindcss-demo.netlify.app) -- [Source code](https://github.com/oruga-ui/demo-tailwindcss) - -## Articles - -- [Oruga UI Components without CSS Framework Dependency - Article by Walter Tommasi](https://dev.to/jtommy/oruga-ui-components-library-without-css-framework-dependency-4m3m) -- [Oruga, the new kid on the block - Article by Andrea Stagi](https://dev.to/astagi/oruga-the-new-kid-on-the-block-1n55) - - diff --git a/packages/docs/expo/README.md b/packages/docs/expo/README.md deleted file mode 100644 index 4cf0f1837..000000000 --- a/packages/docs/expo/README.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Expo ---- - -# Expo - -> See how devs are using Oruga to create beautiful websites and apps! - ---- - -<expo /> diff --git a/packages/docs/hacktoberfest/README.md b/packages/docs/hacktoberfest/README.md deleted file mode 100644 index 051fbaa63..000000000 --- a/packages/docs/hacktoberfest/README.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Hacktoberfest ---- -# Oruga participates in Hacktoberfest 2021 ๐ - -<img src="https://hacktoberfest.digitalocean.com/_nuxt/img/divider.d80d9b6.svg"> - -[Hacktoberfest](https://hacktoberfest.digitalocean.com/) is a month-long celebration of open source software run by DigitalOcean. During the month of October, you're invited to join open-source software enthusiasts, beginners, and the developer community by contributing to open-source projects. - -## How can I contribute to Oruga projects? - -Hacktoberfest encourages participation in the open source community, which grows bigger every year. Support open source throughout October contributing to Oruga project! - -<CarbonAds /> - -Discover our repositories, pick an issue and contribute to the betterment of Oruga via pull requests to complete the 2021 challenge and earn a [limited edition T-shirt](https://hacktoberfest.digitalocean.com/register). - -<HFRepos filter_fullname="^(?!oruga-ui/demo).+$"/> - -๐ All projects are [available on GitHub](https://github.com/oruga-ui) - -## Stay tuned! - -New issues will be created during this month and properly labeled as well, so stay tuned! - -Don't forget that we'll be very happy to help new devs approaching to hack and improve Oruga for the first time! -<br/>You can use [GitHub](https://github.com/oruga-ui/oruga), [Twitter](https://twitter.com/oruga_ui) and [Discord](https://discord.gg/RuKuBYN) to communicate with us! - -Happy coding! ๐ - -# - -<img src="https://hacktoberfest.digitalocean.com/_nuxt/img/divider.d80d9b6.svg" style="-webkit-transform: scaleX(-1);transform: scaleX(-1);"> - -<img src="/banner08CRredlogo.png" style="display: block; margin-left: auto; margin-right: auto; width: 50%;"> - diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json deleted file mode 100644 index 101e5cea5..000000000 --- a/packages/docs/package-lock.json +++ /dev/null @@ -1,31859 +0,0 @@ -{ - "name": "@oruga-ui/docs", - "version": "0.7.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@oruga-ui/docs", - "version": "0.7.0", - "license": "MIT", - "dependencies": { - "vue-telescope-expo": "^1.0.0" - }, - "devDependencies": { - "@fortawesome/fontawesome-svg-core": "1.2.28", - "@fortawesome/free-solid-svg-icons": "5.13.0", - "@fortawesome/vue-fontawesome": "0.1.9", - "@vuepress/plugin-google-analytics": "1.5.2", - "concurrently": "5.2.0", - "markdown-it-include": "1.1.1", - "sockjs-client": "1.4.0", - "vue-docgen-cli": "4.34.4", - "vuepress": "1.5.2", - "vuepress-plugin-demo-block": "0.7.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", - "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.7", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/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 - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", - "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/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 - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", - "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz", - "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", - "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", - "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", - "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", - "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/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 - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", - "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "1.2.28", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz", - "integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==", - "dev": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.28" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz", - "integrity": "sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg==", - "dev": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.28" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/vue-fontawesome": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.9.tgz", - "integrity": "sha512-h/emhmZz+DfB2zOGLWawNwXq82UYhn9waTfUjLLmeaIqtnIyNt6kYlpQT/vzJjLZRDRvY2IEJAh1di5qKpKVpA==", - "dev": true, - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": ">= 1.2.0 < 1.3", - "vue": "~2" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true - }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "node_modules/@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", - "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", - "dev": true - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", - "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-preset-app": { - "version": "4.5.19", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz", - "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "peerDependencies": { - "@babel/core": "*", - "core-js": "^3", - "vue": "^2 || ^3.0.0-0" - }, - "peerDependenciesMeta": { - "core-js": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-preset-app/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vue/babel-preset-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", - "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", - "dev": true, - "dependencies": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", - "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", - "@vue/babel-sugar-functional-vue": "^1.4.0", - "@vue/babel-sugar-inject-h": "^1.4.0", - "@vue/babel-sugar-v-model": "^1.4.0", - "@vue/babel-sugar-v-on": "^1.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0", - "vue": "*" - }, - "peerDependenciesMeta": { - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-sugar-composition-api-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", - "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-composition-api-render-instance": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", - "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-functional-vue": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", - "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", - "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", - "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-sugar-v-on": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", - "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", - "dev": true, - "dependencies": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "dependencies": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dev": true, - "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/@vue/component-compiler-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "node_modules/@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", - "dev": true - }, - "node_modules/@vuepress/core": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-1.5.2.tgz", - "integrity": "sha512-DaRLzShuT116mu6ObsgfFXk+BX2c0W1Zp+BcIg1W5HrRhMZFnMvncdx9iiIjJhXdhVcaBYrVa3Y2624V113TBA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.4", - "@vue/babel-preset-app": "^4.1.2", - "@vuepress/markdown": "1.5.2", - "@vuepress/markdown-loader": "1.5.2", - "@vuepress/plugin-last-updated": "1.5.2", - "@vuepress/plugin-register-components": "1.5.2", - "@vuepress/shared-utils": "1.5.2", - "autoprefixer": "^9.5.1", - "babel-loader": "^8.0.4", - "cache-loader": "^3.0.0", - "chokidar": "^2.0.3", - "connect-history-api-fallback": "^1.5.0", - "copy-webpack-plugin": "^5.0.2", - "core-js": "^3.6.4", - "cross-spawn": "^6.0.5", - "css-loader": "^2.1.1", - "file-loader": "^3.0.1", - "js-yaml": "^3.13.1", - "lru-cache": "^5.1.1", - "mini-css-extract-plugin": "0.6.0", - "optimize-css-assets-webpack-plugin": "^5.0.1", - "portfinder": "^1.0.13", - "postcss-loader": "^3.0.0", - "postcss-safe-parser": "^4.0.1", - "toml": "^3.0.0", - "url-loader": "^1.0.1", - "vue": "^2.6.10", - "vue-loader": "^15.7.1", - "vue-router": "^3.1.3", - "vue-server-renderer": "^2.6.10", - "vue-template-compiler": "^2.6.10", - "vuepress-html-webpack-plugin": "^3.2.0", - "vuepress-plugin-container": "^2.0.2", - "webpack": "^4.8.1", - "webpack-chain": "^6.0.0", - "webpack-dev-server": "^3.5.1", - "webpack-merge": "^4.1.2", - "webpackbar": "3.2.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@vuepress/core/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/@vuepress/core/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/@vuepress/core/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/@vuepress/core/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/@vuepress/core/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@vuepress/core/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@vuepress/core/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/core/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@vuepress/markdown": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.5.2.tgz", - "integrity": "sha512-736fVRZh4x3QOORWhhz2IzCdrOKOnGL7KpWQ59Y+lg7SYNETRvxGxGXTFGrfd+hR9GugThj952BaWWpUCrO7fw==", - "dev": true, - "dependencies": { - "@vuepress/shared-utils": "1.5.2", - "markdown-it": "^8.4.1", - "markdown-it-anchor": "^5.0.2", - "markdown-it-chain": "^1.3.0", - "markdown-it-emoji": "^1.4.0", - "markdown-it-table-of-contents": "^0.4.0", - "prismjs": "^1.13.0" - } - }, - "node_modules/@vuepress/markdown-loader": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/markdown-loader/-/markdown-loader-1.5.2.tgz", - "integrity": "sha512-ZRW/sQk5EK1yNKjWFNdfLmdlQXgT8GUBrnWQDV6FRwh5r+NmSJsgEYISmewGgGGzlUY+GUJKiUjGhe7itztB2Q==", - "dev": true, - "dependencies": { - "@vuepress/markdown": "1.5.2", - "loader-utils": "^1.1.0", - "lru-cache": "^5.1.1" - } - }, - "node_modules/@vuepress/markdown-loader/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@vuepress/markdown-loader/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@vuepress/markdown/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/@vuepress/markdown/node_modules/markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/@vuepress/plugin-active-header-links": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.5.2.tgz", - "integrity": "sha512-bZP/0jpouVSvMypixx2/I7kxWFUV4HfwLNx7UxbtuDrykQzXnA2cz6yTra8Y1ZoXACbRp6TIqGlWpCUafBzyww==", - "dev": true, - "dependencies": { - "lodash.debounce": "^4.0.8" - } - }, - "node_modules/@vuepress/plugin-google-analytics": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.5.2.tgz", - "integrity": "sha512-MrM/Zs0VbOclL0xKXS/Gi017Kl42oiWHUDr2Uz5VCQjqGB1FyAsQdGLtloE1Y6rtTuDXektsss9Bx9uX0f1amw==", - "dev": true - }, - "node_modules/@vuepress/plugin-last-updated": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-last-updated/-/plugin-last-updated-1.5.2.tgz", - "integrity": "sha512-wTq1reNSpGTSPJcnUHFfg+qpZBg88yXv3fZNWnEGSdiuUnbF4bFMTUr9tSaWHzMgtajvzY2B8VnTmrhy2ABfsA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.5" - } - }, - "node_modules/@vuepress/plugin-nprogress": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-1.5.2.tgz", - "integrity": "sha512-PtiV5u9hHZJNPmyKs7s++f4GCJTuvPP25aIASi06vKACr/+Ier5XC7PvOwUvS1LbG6HAGRbQpokmeP1aVbrI6w==", - "dev": true, - "dependencies": { - "nprogress": "^0.2.0" - } - }, - "node_modules/@vuepress/plugin-register-components": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-register-components/-/plugin-register-components-1.5.2.tgz", - "integrity": "sha512-e0GYZG6KXa7axy8GO9sNtLaZNW+lXlidWCURg61/gfKISG5yzKr71n75j5V7pyEJ/idAV/sAakunp7+6nsShDg==", - "dev": true, - "dependencies": { - "@vuepress/shared-utils": "1.5.2" - } - }, - "node_modules/@vuepress/plugin-search": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-1.5.2.tgz", - "integrity": "sha512-/n0W7lQhBCj7vrIhU6VL8ZlUnWBru83W4w0gGNxzXDzZ1AMRJRnQDamBjKAWNd+WMYz8LA2LbJy1rCCds1Mu2Q==", - "dev": true - }, - "node_modules/@vuepress/shared-utils": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.5.2.tgz", - "integrity": "sha512-msDE6Mpof9JDVZQDHYUbsKmQm4aT/CUlUnItlORF+0J4xrIzv96dldJb8pvloDNUjyvB3DXeDJrV4V1XzpwsIA==", - "dev": true, - "dependencies": { - "chalk": "^2.3.2", - "diacritics": "^1.3.0", - "escape-html": "^1.0.3", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "gray-matter": "^4.0.1", - "hash-sum": "^1.0.2", - "semver": "^6.0.0", - "upath": "^1.1.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vuepress/shared-utils/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vuepress/theme-default": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-1.5.2.tgz", - "integrity": "sha512-sO44ExAoO+pNO5qJJvlFin1vaBjxYkTO5oiBu53sYoInAoN3liG1uraMpyaGmhdmzCSlGQpqH+ojtnISTmfAcg==", - "dev": true, - "dependencies": { - "@vuepress/plugin-active-header-links": "1.5.2", - "@vuepress/plugin-nprogress": "1.5.2", - "@vuepress/plugin-search": "1.5.2", - "docsearch.js": "^2.5.2", - "lodash": "^4.17.15", - "stylus": "^0.54.5", - "stylus-loader": "^3.0.2", - "vuepress-plugin-container": "^2.0.2", - "vuepress-plugin-smooth-scroll": "^0.0.3" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agentkeepalive": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", - "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/algoliasearch": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz", - "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==", - "dev": true, - "dependencies": { - "agentkeepalive": "^2.2.0", - "debug": "^2.6.9", - "envify": "^4.0.0", - "es6-promise": "^4.1.0", - "events": "^1.1.0", - "foreach": "^2.0.5", - "global": "^4.3.2", - "inherits": "^2.0.1", - "isarray": "^2.0.1", - "load-script": "^1.0.0", - "object-keys": "^1.0.11", - "querystring-es3": "^0.2.1", - "reduce": "^1.0.1", - "semver": "^5.1.0", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/algoliasearch/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/algoliasearch/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", - "dev": true - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autocomplete.js": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.36.0.tgz", - "integrity": "sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==", - "dev": true, - "dependencies": { - "immediate": "^3.2.3" - } - }, - "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.9.6" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/buffer-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", - "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/buffer/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-3.0.1.tgz", - "integrity": "sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==", - "dev": true, - "dependencies": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/cache-loader/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cache-loader/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001441", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", - "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/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, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/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, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", - "dev": true, - "dependencies": { - "is-regex": "^1.0.3" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/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, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", - "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - }, - "bin": { - "concurrently": "bin/concurrently.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/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, - "dependencies": { - "bluebird": "^3.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dev": true, - "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/make-dir/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", - "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "engines": { - "node": ">4" - } - }, - "node_modules/css-declaration-sorter/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", - "dev": true, - "dependencies": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/css-loader/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/css-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-loader/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==", - "dev": true, - "dependencies": { - "css": "^2.0.0" - } - }, - "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diacritics": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==", - "dev": true - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/docsearch.js": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.3.tgz", - "integrity": "sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @docsearch/js.", - "dev": true, - "dependencies": { - "algoliasearch": "^3.24.5", - "autocomplete.js": "0.36.0", - "hogan.js": "^3.0.2", - "request": "^2.87.0", - "stack-utils": "^1.0.1", - "to-factory": "^1.0.0", - "zepto": "^1.2.0" - } - }, - "node_modules/doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", - "dev": true - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domhandler/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, - "node_modules/envify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", - "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.0", - "through": "~2.3.4" - }, - "bin": { - "envify": "bin/envify" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", - "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", - "dev": true, - "dependencies": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/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, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", - "dev": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dev": true, - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/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, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hogan.js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", - "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==", - "dev": true, - "dependencies": { - "mkdirp": "0.3.0", - "nopt": "1.0.10" - }, - "bin": { - "hulk": "bin/hulk" - } - }, - "node_modules/hogan.js/node_modules/mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "node_modules/html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "bin": { - "html-minifier": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/htmlparser2/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/htmlparser2/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, - "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/icss-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/icss-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true - }, - "node_modules/import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", - "dev": true, - "dependencies": { - "import-from": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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 - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd/node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true - }, - "node_modules/js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", - "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", - "dev": true, - "dependencies": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "dependencies": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/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, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/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, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", - "dev": true, - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true, - "peerDependencies": { - "markdown-it": "*" - } - }, - "node_modules/markdown-it-chain": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", - "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==", - "dev": true, - "dependencies": { - "webpack-chain": "^4.9.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "markdown-it": ">=5.0.0" - } - }, - "node_modules/markdown-it-chain/node_modules/javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==", - "dev": true - }, - "node_modules/markdown-it-chain/node_modules/webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "dev": true, - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - } - }, - "node_modules/markdown-it-container": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz", - "integrity": "sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==", - "dev": true - }, - "node_modules/markdown-it-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", - "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", - "dev": true - }, - "node_modules/markdown-it-include": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-it-include/-/markdown-it-include-1.1.1.tgz", - "integrity": "sha512-jDWIHhOtiQkFIc6BqXqXK1r4LfCxKFOWtsdvwZjLw5zZaWk64n71lE5HWHtzyVvfDudYWxR+tH0hO10B2I1e3w==", - "dev": true, - "peerDependencies": { - "markdown-it": ">=8.4.2 <11.0.0" - } - }, - "node_modules/markdown-it-table-of-contents": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", - "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", - "dev": true, - "engines": { - "node": ">6.4.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/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, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", - "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "normalize-url": "^2.0.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.4.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "dev": true - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "dev": true - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", - "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optimize-css-assets-webpack-plugin": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", - "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==", - "dev": true, - "dependencies": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-calc/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-colormin/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - } - }, - "node_modules/postcss-modules-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-normalize-url/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.26" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-safe-parser/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dev": true, - "dependencies": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "node_modules/pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", - "dev": true - }, - "node_modules/pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "node_modules/pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "dev": true, - "dependencies": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "node_modules/pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", - "dev": true - }, - "node_modules/pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", - "dev": true, - "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/recast/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/reduce": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz", - "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.1.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "dev": true, - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smoothscroll-polyfill": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", - "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==", - "dev": true - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "dev": true, - "dependencies": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - } - }, - "node_modules/sockjs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/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 - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/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 - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stack-utils": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", - "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/std-env": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", - "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - } - }, - "node_modules/std-env/node_modules/ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/stylehacks/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "dependencies": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - } - }, - "node_modules/stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", - "dev": true, - "dependencies": { - "loader-utils": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "when": "~3.6.x" - }, - "peerDependencies": { - "stylus": ">=0.52.4" - } - }, - "node_modules/stylus/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/stylus/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylus/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/stylus/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/stylus/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/terser/node_modules/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 - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "dev": true - }, - "node_modules/to-factory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz", - "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", - "dev": true - }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", - "dev": true - }, - "node_modules/toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", - "dev": true - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-map": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", - "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==", - "dev": true - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "dependencies": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "dependencies": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" - } - }, - "node_modules/vue-docgen-api": { - "version": "4.56.2", - "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.56.2.tgz", - "integrity": "sha512-7V36UExnHwAKq0KmB7rtk5ONuHzsATkhDZwCZ+aEudsnaNmMUTc+9g5MZgUXTi8V76KNE4gMrWd3MuESbaUItw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.13.12", - "@babel/types": "^7.18.8", - "@vue/compiler-dom": "^3.2.0", - "@vue/compiler-sfc": "^3.2.0", - "ast-types": "0.14.2", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.5", - "pug": "^3.0.2", - "recast": "0.21.5", - "ts-map": "^1.0.3", - "vue-inbrowser-compiler-independent-utils": "^4.56.2" - } - }, - "node_modules/vue-docgen-api/node_modules/@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/vue-docgen-cli": { - "version": "4.34.4", - "resolved": "https://registry.npmjs.org/vue-docgen-cli/-/vue-docgen-cli-4.34.4.tgz", - "integrity": "sha512-G3+vwUX0v6IwHlVmp2fpmWnXnVHRHM+wbgEnpTslZTdSJgaidofcPZ5PHo1gQuDmGb+inCUCNJsfbgfEkSnVKg==", - "dev": true, - "dependencies": { - "chokidar": "^3.4.3", - "globby": "^10.0.1", - "lodash.memoize": "4.1.2", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "prettier": "^1.18.2", - "vue-docgen-api": "^4.34.2" - }, - "bin": { - "vue-docgen": "lib/bin.js" - } - }, - "node_modules/vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "node_modules/vue-inbrowser-compiler-independent-utils": { - "version": "4.56.2", - "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz", - "integrity": "sha512-szE2vZDSkZlItq+K4MevgvCGKt5IzM6OkIjyCuj/09ty2akixeQGNFRXyDELMdmVVzmN+9nJn02YKnoPkhXHwA==", - "dev": true, - "peerDependencies": { - "vue": ">=2" - } - }, - "node_modules/vue-loader": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", - "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", - "dev": true, - "dependencies": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/vue-router": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", - "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==", - "dev": true - }, - "node_modules/vue-server-renderer": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.7.14.tgz", - "integrity": "sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "hash-sum": "^2.0.0", - "he": "^1.2.0", - "lodash.template": "^4.5.0", - "lodash.uniq": "^4.5.0", - "resolve": "^1.22.0", - "serialize-javascript": "^6.0.0", - "source-map": "0.5.6" - } - }, - "node_modules/vue-server-renderer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/vue-server-renderer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/vue-server-renderer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/vue-server-renderer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/vue-server-renderer/node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/vue-server-renderer/node_modules/hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, - "node_modules/vue-server-renderer/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/vue-server-renderer/node_modules/source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-server-renderer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-telescope-expo": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vue-telescope-expo/-/vue-telescope-expo-1.0.1.tgz", - "integrity": "sha512-p70ooNnAGHaEYysJH+Gh+Ig8dIF9nHcKRCzYc9eJ1nVCJPehUuMq6lOq3dyBawr3vMDsDNyVVxYxH5RK0waA7Q==", - "peerDependencies": { - "vue": "~2" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/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 - }, - "node_modules/vuepress": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-1.5.2.tgz", - "integrity": "sha512-buscwFfIqvCcUAaRdbBWENmCSBZzr510fch1BhQZwVaQy28mF8H6Mvb+UDdwHQ7jon0d9qauXs9M0k4XHIWviw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@vuepress/core": "1.5.2", - "@vuepress/theme-default": "1.5.2", - "cac": "^6.5.6", - "envinfo": "^7.2.0", - "opencollective-postinstall": "^2.0.2", - "update-notifier": "^4.0.0" - }, - "bin": { - "vuepress": "cli.js" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/vuepress-html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==", - "dev": true, - "dependencies": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/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, - "engines": { - "node": "*" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", - "dev": true, - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "node_modules/vuepress-html-webpack-plugin/node_modules/util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/vuepress-plugin-container": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz", - "integrity": "sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA==", - "dev": true, - "dependencies": { - "@vuepress/shared-utils": "^1.2.0", - "markdown-it-container": "^2.0.0" - } - }, - "node_modules/vuepress-plugin-demo-block": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/vuepress-plugin-demo-block/-/vuepress-plugin-demo-block-0.7.2.tgz", - "integrity": "sha512-0k7z7bTjXoXgdAMVFIVn3RFSQpKOM0yvD0hf/CA0gMCLBih77mCALtEpH9b+bEvijHmLLIq+BUtS2TQHXpkbNA==", - "dev": true - }, - "node_modules/vuepress-plugin-smooth-scroll": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz", - "integrity": "sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==", - "dev": true, - "dependencies": { - "smoothscroll-polyfill": "^0.4.3" - } - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "dev": true, - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-server/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/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 - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/webpack-dev-server/node_modules/sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/webpack-dev-server/node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpackbar": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-3.2.0.tgz", - "integrity": "sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.1.0", - "chalk": "^2.4.1", - "consola": "^2.6.0", - "figures": "^3.0.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^5.1.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/when": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", - "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/zepto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", - "integrity": "sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==", - "dev": true - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - } - }, - "@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", - "dev": true - }, - "@babel/core": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", - "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.7", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "requires": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", - "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - } - }, - "@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", - "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz", - "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", - "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", - "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", - "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.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 - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.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 - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", - "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - } - } - }, - "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@fortawesome/fontawesome-common-types": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", - "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", - "dev": true - }, - "@fortawesome/fontawesome-svg-core": { - "version": "1.2.28", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz", - "integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==", - "dev": true, - "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.28" - } - }, - "@fortawesome/free-solid-svg-icons": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz", - "integrity": "sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg==", - "dev": true, - "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.28" - } - }, - "@fortawesome/vue-fontawesome": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.9.tgz", - "integrity": "sha512-h/emhmZz+DfB2zOGLWawNwXq82UYhn9waTfUjLLmeaIqtnIyNt6kYlpQT/vzJjLZRDRvY2IEJAh1di5qKpKVpA==", - "dev": true, - "requires": {} - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", - "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", - "dev": true - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", - "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true - } - } - }, - "@vue/babel-preset-app": { - "version": "4.5.19", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz", - "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==", - "dev": true, - "requires": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.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 - } - } - }, - "@vue/babel-preset-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", - "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", - "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", - "@vue/babel-sugar-functional-vue": "^1.4.0", - "@vue/babel-sugar-inject-h": "^1.4.0", - "@vue/babel-sugar-v-model": "^1.4.0", - "@vue/babel-sugar-v-on": "^1.4.0" - } - }, - "@vue/babel-sugar-composition-api-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", - "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-composition-api-render-instance": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", - "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", - "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-inject-h": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", - "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-v-model": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", - "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true - } - } - }, - "@vue/babel-sugar-v-on": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", - "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", - "camelcase": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", - "dev": true, - "requires": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "requires": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "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.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", - "dev": true - }, - "@vuepress/core": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-1.5.2.tgz", - "integrity": "sha512-DaRLzShuT116mu6ObsgfFXk+BX2c0W1Zp+BcIg1W5HrRhMZFnMvncdx9iiIjJhXdhVcaBYrVa3Y2624V113TBA==", - "dev": true, - "requires": { - "@babel/core": "^7.8.4", - "@vue/babel-preset-app": "^4.1.2", - "@vuepress/markdown": "1.5.2", - "@vuepress/markdown-loader": "1.5.2", - "@vuepress/plugin-last-updated": "1.5.2", - "@vuepress/plugin-register-components": "1.5.2", - "@vuepress/shared-utils": "1.5.2", - "autoprefixer": "^9.5.1", - "babel-loader": "^8.0.4", - "cache-loader": "^3.0.0", - "chokidar": "^2.0.3", - "connect-history-api-fallback": "^1.5.0", - "copy-webpack-plugin": "^5.0.2", - "core-js": "^3.6.4", - "cross-spawn": "^6.0.5", - "css-loader": "^2.1.1", - "file-loader": "^3.0.1", - "js-yaml": "^3.13.1", - "lru-cache": "^5.1.1", - "mini-css-extract-plugin": "0.6.0", - "optimize-css-assets-webpack-plugin": "^5.0.1", - "portfinder": "^1.0.13", - "postcss-loader": "^3.0.0", - "postcss-safe-parser": "^4.0.1", - "toml": "^3.0.0", - "url-loader": "^1.0.1", - "vue": "^2.6.10", - "vue-loader": "^15.7.1", - "vue-router": "^3.1.3", - "vue-server-renderer": "^2.6.10", - "vue-template-compiler": "^2.6.10", - "vuepress-html-webpack-plugin": "^3.2.0", - "vuepress-plugin-container": "^2.0.2", - "webpack": "^4.8.1", - "webpack-chain": "^6.0.0", - "webpack-dev-server": "^3.5.1", - "webpack-merge": "^4.1.2", - "webpackbar": "3.2.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@vuepress/markdown": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.5.2.tgz", - "integrity": "sha512-736fVRZh4x3QOORWhhz2IzCdrOKOnGL7KpWQ59Y+lg7SYNETRvxGxGXTFGrfd+hR9GugThj952BaWWpUCrO7fw==", - "dev": true, - "requires": { - "@vuepress/shared-utils": "1.5.2", - "markdown-it": "^8.4.1", - "markdown-it-anchor": "^5.0.2", - "markdown-it-chain": "^1.3.0", - "markdown-it-emoji": "^1.4.0", - "markdown-it-table-of-contents": "^0.4.0", - "prismjs": "^1.13.0" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - } - } - }, - "@vuepress/markdown-loader": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/markdown-loader/-/markdown-loader-1.5.2.tgz", - "integrity": "sha512-ZRW/sQk5EK1yNKjWFNdfLmdlQXgT8GUBrnWQDV6FRwh5r+NmSJsgEYISmewGgGGzlUY+GUJKiUjGhe7itztB2Q==", - "dev": true, - "requires": { - "@vuepress/markdown": "1.5.2", - "loader-utils": "^1.1.0", - "lru-cache": "^5.1.1" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@vuepress/plugin-active-header-links": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.5.2.tgz", - "integrity": "sha512-bZP/0jpouVSvMypixx2/I7kxWFUV4HfwLNx7UxbtuDrykQzXnA2cz6yTra8Y1ZoXACbRp6TIqGlWpCUafBzyww==", - "dev": true, - "requires": { - "lodash.debounce": "^4.0.8" - } - }, - "@vuepress/plugin-google-analytics": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.5.2.tgz", - "integrity": "sha512-MrM/Zs0VbOclL0xKXS/Gi017Kl42oiWHUDr2Uz5VCQjqGB1FyAsQdGLtloE1Y6rtTuDXektsss9Bx9uX0f1amw==", - "dev": true - }, - "@vuepress/plugin-last-updated": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-last-updated/-/plugin-last-updated-1.5.2.tgz", - "integrity": "sha512-wTq1reNSpGTSPJcnUHFfg+qpZBg88yXv3fZNWnEGSdiuUnbF4bFMTUr9tSaWHzMgtajvzY2B8VnTmrhy2ABfsA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.5" - } - }, - "@vuepress/plugin-nprogress": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-1.5.2.tgz", - "integrity": "sha512-PtiV5u9hHZJNPmyKs7s++f4GCJTuvPP25aIASi06vKACr/+Ier5XC7PvOwUvS1LbG6HAGRbQpokmeP1aVbrI6w==", - "dev": true, - "requires": { - "nprogress": "^0.2.0" - } - }, - "@vuepress/plugin-register-components": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-register-components/-/plugin-register-components-1.5.2.tgz", - "integrity": "sha512-e0GYZG6KXa7axy8GO9sNtLaZNW+lXlidWCURg61/gfKISG5yzKr71n75j5V7pyEJ/idAV/sAakunp7+6nsShDg==", - "dev": true, - "requires": { - "@vuepress/shared-utils": "1.5.2" - } - }, - "@vuepress/plugin-search": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-1.5.2.tgz", - "integrity": "sha512-/n0W7lQhBCj7vrIhU6VL8ZlUnWBru83W4w0gGNxzXDzZ1AMRJRnQDamBjKAWNd+WMYz8LA2LbJy1rCCds1Mu2Q==", - "dev": true - }, - "@vuepress/shared-utils": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.5.2.tgz", - "integrity": "sha512-msDE6Mpof9JDVZQDHYUbsKmQm4aT/CUlUnItlORF+0J4xrIzv96dldJb8pvloDNUjyvB3DXeDJrV4V1XzpwsIA==", - "dev": true, - "requires": { - "chalk": "^2.3.2", - "diacritics": "^1.3.0", - "escape-html": "^1.0.3", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "gray-matter": "^4.0.1", - "hash-sum": "^1.0.2", - "semver": "^6.0.0", - "upath": "^1.1.0" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "@vuepress/theme-default": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-1.5.2.tgz", - "integrity": "sha512-sO44ExAoO+pNO5qJJvlFin1vaBjxYkTO5oiBu53sYoInAoN3liG1uraMpyaGmhdmzCSlGQpqH+ojtnISTmfAcg==", - "dev": true, - "requires": { - "@vuepress/plugin-active-header-links": "1.5.2", - "@vuepress/plugin-nprogress": "1.5.2", - "@vuepress/plugin-search": "1.5.2", - "docsearch.js": "^2.5.2", - "lodash": "^4.17.15", - "stylus": "^0.54.5", - "stylus-loader": "^3.0.2", - "vuepress-plugin-container": "^2.0.2", - "vuepress-plugin-smooth-scroll": "^0.0.3" - } - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "agentkeepalive": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", - "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "algoliasearch": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz", - "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==", - "dev": true, - "requires": { - "agentkeepalive": "^2.2.0", - "debug": "^2.6.9", - "envify": "^4.0.0", - "es6-promise": "^4.1.0", - "events": "^1.1.0", - "foreach": "^2.0.5", - "global": "^4.3.2", - "inherits": "^2.0.1", - "isarray": "^2.0.1", - "load-script": "^1.0.0", - "object-keys": "^1.0.11", - "querystring-es3": "^0.2.1", - "reduce": "^1.0.1", - "semver": "^5.1.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "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" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "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 - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true - }, - "array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", - "dev": true - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true - }, - "ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - } - } - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autocomplete.js": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.36.0.tgz", - "integrity": "sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==", - "dev": true, - "requires": { - "immediate": "^3.2.3" - } - }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "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 - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "dev": true, - "requires": { - "@babel/types": "^7.9.6" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "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": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "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 - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - } - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", - "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - }, - "cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-3.0.1.tgz", - "integrity": "sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==", - "dev": true, - "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001441", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", - "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", - "dev": true, - "requires": { - "is-regex": "^1.0.3" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - } - }, - "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concurrently": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", - "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "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" - } - }, - "constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dev": true, - "requires": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "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 - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true - }, - "copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dev": true, - "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true - } - } - }, - "core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", - "dev": true - }, - "core-js-compat": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", - "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", - "dev": true, - "requires": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==", - "dev": true, - "requires": { - "css": "^2.0.0" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - } - } - }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "diacritics": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "docsearch.js": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.6.3.tgz", - "integrity": "sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==", - "dev": true, - "requires": { - "algoliasearch": "^3.24.5", - "autocomplete.js": "0.36.0", - "hogan.js": "^3.0.2", - "request": "^2.87.0", - "stack-utils": "^1.0.1", - "to-factory": "^1.0.0", - "zepto": "^1.2.0" - } - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", - "dev": true - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - } - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - } - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, - "envify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", - "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", - "dev": true, - "requires": { - "esprima": "^4.0.0", - "through": "~2.3.4" - } - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", - "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "unbox-primitive": "^1.0.2" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "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 - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "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 - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "dev": true - }, - "eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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 - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "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" - } - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true - }, - "foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "requires": { - "ini": "1.3.7" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dev": true, - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "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 - } - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "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 - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hogan.js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", - "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==", - "dev": true, - "requires": { - "mkdirp": "0.3.0", - "nopt": "1.0.10" - }, - "dependencies": { - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", - "dev": true - } - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - } - }, - "html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - } - } - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "dev": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "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 - }, - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "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-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true - }, - "is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - }, - "dependencies": { - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - } - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", - "dev": true - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", - "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.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "json5": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", - "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", - "dev": true, - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==", - "dev": true - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "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" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "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.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "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 - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-it-anchor": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", - "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true, - "requires": {} - }, - "markdown-it-chain": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", - "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==", - "dev": true, - "requires": { - "webpack-chain": "^4.9.0" - }, - "dependencies": { - "javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==", - "dev": true - }, - "webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - } - } - } - }, - "markdown-it-container": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-2.0.0.tgz", - "integrity": "sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==", - "dev": true - }, - "markdown-it-emoji": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", - "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", - "dev": true - }, - "markdown-it-include": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-it-include/-/markdown-it-include-1.1.1.tgz", - "integrity": "sha512-jDWIHhOtiQkFIc6BqXqXK1r4LfCxKFOWtsdvwZjLw5zZaWk64n71lE5HWHtzyVvfDudYWxR+tH0hO10B2I1e3w==", - "dev": true, - "requires": {} - }, - "markdown-it-table-of-contents": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", - "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "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" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, - "mini-css-extract-plugin": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", - "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "^2.0.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - } - } - }, - "node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "dev": true - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "dev": true - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", - "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", - "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==", - "dev": true, - "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true - }, - "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-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.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 - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.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 - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "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" - } - }, - "portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "requires": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true - }, - "postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "requires": { - "postcss": "^7.0.26" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true - }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dev": true, - "requires": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "dev": true, - "requires": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dev": true, - "requires": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", - "dev": true - }, - "pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "dev": true, - "requires": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "dev": true, - "requires": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "dev": true, - "requires": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "dev": true, - "requires": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", - "dev": true - }, - "pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "dev": true, - "requires": { - "pug-error": "^2.0.0" - } - }, - "pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, - "requires": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "dependencies": { - "ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - } - } - }, - "reduce": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz", - "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==", - "dev": true, - "requires": { - "object-keys": "^1.1.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - } - }, - "registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "dev": true, - "requires": { - "rc": "1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.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 - } - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smoothscroll-polyfill": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", - "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stack-utils": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", - "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "std-env": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", - "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - }, - "dependencies": { - "ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", - "dev": true - } - } - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, - "stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "when": "~3.6.x" - } - }, - "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" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "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 - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "dev": true - }, - "to-factory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz", - "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", - "dev": true - }, - "toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", - "dev": true - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "ts-map": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", - "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - } - } - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "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 - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } - } - }, - "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - } - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", - "dev": true - }, - "vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "requires": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" - } - }, - "vue-docgen-api": { - "version": "4.56.2", - "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.56.2.tgz", - "integrity": "sha512-7V36UExnHwAKq0KmB7rtk5ONuHzsATkhDZwCZ+aEudsnaNmMUTc+9g5MZgUXTi8V76KNE4gMrWd3MuESbaUItw==", - "dev": true, - "requires": { - "@babel/parser": "^7.13.12", - "@babel/types": "^7.18.8", - "@vue/compiler-dom": "^3.2.0", - "@vue/compiler-sfc": "^3.2.0", - "ast-types": "0.14.2", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.5", - "pug": "^3.0.2", - "recast": "0.21.5", - "ts-map": "^1.0.3", - "vue-inbrowser-compiler-independent-utils": "^4.56.2" - }, - "dependencies": { - "@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - } - } - }, - "vue-docgen-cli": { - "version": "4.34.4", - "resolved": "https://registry.npmjs.org/vue-docgen-cli/-/vue-docgen-cli-4.34.4.tgz", - "integrity": "sha512-G3+vwUX0v6IwHlVmp2fpmWnXnVHRHM+wbgEnpTslZTdSJgaidofcPZ5PHo1gQuDmGb+inCUCNJsfbgfEkSnVKg==", - "dev": true, - "requires": { - "chokidar": "^3.4.3", - "globby": "^10.0.1", - "lodash.memoize": "4.1.2", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "prettier": "^1.18.2", - "vue-docgen-api": "^4.34.2" - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-inbrowser-compiler-independent-utils": { - "version": "4.56.2", - "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz", - "integrity": "sha512-szE2vZDSkZlItq+K4MevgvCGKt5IzM6OkIjyCuj/09ty2akixeQGNFRXyDELMdmVVzmN+9nJn02YKnoPkhXHwA==", - "dev": true, - "requires": {} - }, - "vue-loader": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", - "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - } - }, - "vue-router": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", - "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==", - "dev": true - }, - "vue-server-renderer": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.7.14.tgz", - "integrity": "sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw==", - "dev": true, - "requires": { - "chalk": "^4.1.2", - "hash-sum": "^2.0.0", - "he": "^1.2.0", - "lodash.template": "^4.5.0", - "lodash.uniq": "^4.5.0", - "resolve": "^1.22.0", - "serialize-javascript": "^6.0.0", - "source-map": "0.5.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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 - }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "vue-telescope-expo": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vue-telescope-expo/-/vue-telescope-expo-1.0.1.tgz", - "integrity": "sha512-p70ooNnAGHaEYysJH+Gh+Ig8dIF9nHcKRCzYc9eJ1nVCJPehUuMq6lOq3dyBawr3vMDsDNyVVxYxH5RK0waA7Q==", - "requires": {} - }, - "vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.2.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 - }, - "vuepress": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-1.5.2.tgz", - "integrity": "sha512-buscwFfIqvCcUAaRdbBWENmCSBZzr510fch1BhQZwVaQy28mF8H6Mvb+UDdwHQ7jon0d9qauXs9M0k4XHIWviw==", - "dev": true, - "requires": { - "@vuepress/core": "1.5.2", - "@vuepress/theme-default": "1.5.2", - "cac": "^6.5.6", - "envinfo": "^7.2.0", - "opencollective-postinstall": "^2.0.2", - "update-notifier": "^4.0.0" - } - }, - "vuepress-html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "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 - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "vuepress-plugin-container": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz", - "integrity": "sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA==", - "dev": true, - "requires": { - "@vuepress/shared-utils": "^1.2.0", - "markdown-it-container": "^2.0.0" - } - }, - "vuepress-plugin-demo-block": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/vuepress-plugin-demo-block/-/vuepress-plugin-demo-block-0.7.2.tgz", - "integrity": "sha512-0k7z7bTjXoXgdAMVFIVn3RFSQpKOM0yvD0hf/CA0gMCLBih77mCALtEpH9b+bEvijHmLLIq+BUtS2TQHXpkbNA==", - "dev": true - }, - "vuepress-plugin-smooth-scroll": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz", - "integrity": "sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==", - "dev": true, - "requires": { - "smoothscroll-polyfill": "^0.4.3" - } - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "optional": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "requires": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - } - } - }, - "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 - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "webpackbar": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-3.2.0.tgz", - "integrity": "sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==", - "dev": true, - "requires": { - "ansi-escapes": "^4.1.0", - "chalk": "^2.4.1", - "consola": "^2.6.0", - "figures": "^3.0.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "when": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", - "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - } - }, - "with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "dev": true, - "requires": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "zepto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", - "integrity": "sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==", - "dev": true - } - } -} diff --git a/packages/docs/package.json b/packages/docs/package.json deleted file mode 100644 index a0668ba13..000000000 --- a/packages/docs/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@oruga-ui/docs", - "version": "0.7.0", - "homepage": "https://oruga.io", - "description": "UI components for Vue.js and CSS framework agnostic", - "author": "Walter Tommasi <tommsi20@gmail.com>", - "license": "MIT", - "scripts": { - "docs:dev": "npm link @oruga-ui/oruga && concurrently \"vue-docgen --watch\" \"vuepress dev --host 0.0.0.0\"", - "docs:build": "vuepress build", - "docs:hacktoberfest": "wget -O ./.vuepress/public/hfrepos.json https://api.github.com/search/repositories?q=topic:hacktoberfest+org:oruga-ui > hfrepos.json" - }, - "devDependencies": { - "@fortawesome/fontawesome-svg-core": "1.2.28", - "@fortawesome/free-solid-svg-icons": "5.13.0", - "@fortawesome/vue-fontawesome": "0.1.9", - "@vuepress/plugin-google-analytics": "1.5.2", - "concurrently": "5.2.0", - "markdown-it-include": "1.1.1", - "sockjs-client": "1.4.0", - "vue-docgen-cli": "4.34.4", - "vuepress": "1.5.2", - "vuepress-plugin-demo-block": "0.7.2" - }, - "resolutions": { - "watchpack": "1.6.1" - }, - "dependencies": { - "vue-telescope-expo": "^1.0.0" - } -} \ No newline at end of file diff --git a/packages/oruga/.browserslistrc b/packages/oruga/.browserslistrc deleted file mode 100644 index 214388fe4..000000000 --- a/packages/oruga/.browserslistrc +++ /dev/null @@ -1,3 +0,0 @@ -> 1% -last 2 versions -not dead diff --git a/packages/oruga/.eslintrc.js b/packages/oruga/.eslintrc.js deleted file mode 100644 index 395a16aa4..000000000 --- a/packages/oruga/.eslintrc.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = { - root: true, - env: { - node: true, - jest: true - }, - extends: [ - 'plugin:vue/essential', - 'eslint:recommended' - ], - parserOptions: { - ecmaVersion: 2020 - }, - rules: { - 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - 'prefer-rest-params': 'off', - 'vue/no-v-for-template-key-on-child': 'off', - 'vue/valid-v-for': 'off', - 'vue/require-v-for-key': 'off', - 'vue/no-v-for-template-key': 'off', - 'vue/no-template-key': 'off', - 'vue/comment-directive': 'off', - 'vue/custom-event-name-casing': 'off', - 'vue/no-reserved-keys': 'warn', - }, - overrides: [ - { - files: ["*.spec.js"], - rules: { - 'require-atomic-updates': 'off' - } - }, - { - files: ["*.md"], - rules: { - 'semi': ['error', 'never'], - } - }, - ] -} diff --git a/packages/oruga/.gitignore b/packages/oruga/.gitignore deleted file mode 100644 index 7983440f1..000000000 --- a/packages/oruga/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -.DS_Store -node_modules -/dist -/coverage - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/packages/oruga/__mocks__/matchMediaMock.js b/packages/oruga/__mocks__/matchMediaMock.js deleted file mode 100644 index c1bf552c5..000000000 --- a/packages/oruga/__mocks__/matchMediaMock.js +++ /dev/null @@ -1,10 +0,0 @@ -window.matchMedia = jest.fn().mockImplementation((query) => ({ - matches: false, - media: query, - onchange: null, - addListener: jest.fn(), // deprecated - removeListener: jest.fn(), // deprecated - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - dispatchEvent: jest.fn(), -})) diff --git a/packages/oruga/babel.config.js b/packages/oruga/babel.config.js deleted file mode 100644 index c76a0d028..000000000 --- a/packages/oruga/babel.config.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - targets: { - node: 'current' - } - } - ] - ] -} diff --git a/packages/oruga/build/banner.js b/packages/oruga/build/banner.js deleted file mode 100644 index 5075fdc89..000000000 --- a/packages/oruga/build/banner.js +++ /dev/null @@ -1,7 +0,0 @@ -const pack = require('../package.json') -const bannerText = require('./bannertext') - -const bannerTxt = bannerText.generate(pack.version) - -process.stdout.write(bannerTxt) -process.stdin.pipe(process.stdout) diff --git a/packages/oruga/build/bannertext.js b/packages/oruga/build/bannertext.js deleted file mode 100644 index 6f2384bb5..000000000 --- a/packages/oruga/build/bannertext.js +++ /dev/null @@ -1,12 +0,0 @@ -const generate = function (version) { - - const preview_build = process.env.ORUGA_PREVIEW_BUILD - - if (preview_build) { - version = `${version} (build ${preview_build})` - } - - return `/*! Oruga v${version} | MIT License | github.com/oruga-ui/oruga */\n` -} - -module.exports.generate = generate diff --git a/packages/oruga/jest.config.js b/packages/oruga/jest.config.js deleted file mode 100644 index 6da87db4b..000000000 --- a/packages/oruga/jest.config.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel', - roots: [ - '<rootDir>/src' - ], - testMatch: [ - '<rootDir>/src/components/**/*.spec.[jt]s?(x)', - '<rootDir>/src/utils/*.spec.[jt]s?(x)' - ], - moduleFileExtensions: [ - 'js', - 'vue' - ], - transform: { - '^.+\\.js$': '<rootDir>/node_modules/babel-jest', - '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest' - }, - moduleNameMapper: { - '^@components/(.*)$': '<rootDir>/src/components/$1', - '^@utils/(.*)$': '<rootDir>/src/utils/$1' - }, - snapshotSerializers: [ - '<rootDir>/node_modules/jest-serializer-vue' - ], - setupFiles: [ - '<rootDir>/__mocks__/matchMediaMock.js' - ], - coverageDirectory: './coverage/', - collectCoverage: true, - testURL: 'http://localhost/' -} diff --git a/packages/oruga/nuxt/index.js b/packages/oruga/nuxt/index.js deleted file mode 100644 index d4f63c741..000000000 --- a/packages/oruga/nuxt/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const { resolve } = require('path') - -// --- Main Nuxt.js module --- -module.exports = function nuxtOruga(moduleOptions = {}) { - this.nuxt.hook('build:before', () => { - - const options = Object.assign({}, this.options.oruga, moduleOptions) - - // Add css - if (options.includeCss === 'vars') { - this.options.css.unshift('@oruga-ui/oruga/dist/oruga-full-vars.css'); - } - else if (options.includeCss === 'full') { - this.options.css.unshift('@oruga-ui/oruga/dist/oruga-full.css'); - } - else if (options.includeCss !== false) { - this.options.css.unshift('@oruga-ui/oruga/dist/oruga.css'); - } - - // Register plugin - this.addPlugin({ - src: resolve(__dirname, 'plugin.template.js'), - fileName: 'oruga.js', - options - }) - }) -} - -module.exports.meta = require(__dirname, '../package.json') diff --git a/packages/oruga/nuxt/plugin.template.js b/packages/oruga/nuxt/plugin.template.js deleted file mode 100644 index f3211088b..000000000 --- a/packages/oruga/nuxt/plugin.template.js +++ /dev/null @@ -1,4 +0,0 @@ -import Vue from 'vue' -import Oruga from '@oruga-ui/oruga' - -Vue.use(Oruga, <%= JSON.stringify(options, null, 2) %>) \ No newline at end of file diff --git a/packages/oruga/package-lock.json b/packages/oruga/package-lock.json deleted file mode 100644 index 5c835473d..000000000 --- a/packages/oruga/package-lock.json +++ /dev/null @@ -1,33813 +0,0 @@ -{ - "name": "@oruga-ui/oruga", - "version": "0.7.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@oruga-ui/oruga", - "version": "0.7.0", - "license": "MIT", - "devDependencies": { - "@babel/core": "7.10.2", - "@babel/preset-env": "7.10.2", - "@rollup/plugin-babel": "5.0.2", - "@rollup/plugin-commonjs": "12.0.0", - "@rollup/plugin-node-resolve": "8.0.0", - "@rollup/plugin-replace": "2.3.2", - "@types/jest": "24.0.19", - "@typescript-eslint/eslint-plugin": "2.26.0", - "@typescript-eslint/parser": "2.26.0", - "@vue/cli-plugin-babel": "4.3.0", - "@vue/cli-plugin-eslint": "4.3.0", - "@vue/cli-plugin-typescript": "4.3.0", - "@vue/cli-plugin-unit-jest": "4.3.0", - "@vue/cli-service": "4.3.0", - "@vue/eslint-config-typescript": "5.0.2", - "@vue/test-utils": "1.0.0-beta.31", - "clean-css-cli": "4.3.0", - "codecov": "3.7.2", - "concurrently": "5.2.0", - "core-js": "3.6.5", - "cross-env": "7.0.3", - "eslint": "6.7.2", - "eslint-plugin-vue": "6.2.2", - "full-icu": "1.3.1", - "jest-serializer-vue": "0.3.0", - "rollup": "2.12.0", - "rollup-copy-plugin": "0.1.0", - "rollup-plugin-terser": "6.1.0", - "rollup-plugin-vue": "5.1.9", - "sass": "1.27.0", - "sinon": "9.0.3", - "typescript": "3.8.3", - "vue": "2.6.11", - "vue-class-component": "7.2.3", - "vue-property-decorator": "8.4.1", - "vue-template-compiler": "2.6.11" - }, - "peerDependencies": { - "vue": "^2.6.11" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.10.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.2", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helpers": "^7.10.1", - "@babel/parser": "^7.10.2", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-decorators": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-transform": "^0.14.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.14.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.10.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.10.1", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-proposal-async-generator-functions": "^7.10.1", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.1", - "@babel/plugin-transform-computed-properties": "^7.10.1", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.1", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.1", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.1", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.2", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.15.4", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" - } - }, - "node_modules/@hapi/address": { - "version": "2.1.4", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hapi/bourne": { - "version": "1.3.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hapi/hoek": { - "version": "8.5.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hapi/joi": { - "version": "15.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "node_modules/@hapi/topo": { - "version": "3.1.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^8.3.0" - } - }, - "node_modules/@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/@jest/console": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/core": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/core/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/core/node_modules/ansi-escapes": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@jest/environment": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/environment/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/fake-timers": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/reporters/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/source-map": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/test-result": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/test-result/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/transform": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jest/transform/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/types": { - "version": "27.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.7.4", - "@rollup/pluginutils": "^3.0.8" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "12.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.0.8", - "commondir": "^1.0.1", - "estree-walker": "^1.0.1", - "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^2.3.4" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "deep-freeze": "^0.0.1", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.14.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.0.8", - "magic-string": "^0.25.5" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@sinonjs/formatio": { - "version": "5.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^5.0.2" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "5.3.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "dev": true, - "license": "(Unlicense OR Apache-2.0)" - }, - "node_modules/@soda/friendly-errors-webpack-plugin": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "error-stack-parser": "^2.0.2", - "string-width": "^2.0.0", - "strip-ansi": "^5" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@soda/get-current-script": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/babel__core": { - "version": "7.1.16", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "0.0.39", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/glob": { - "version": "7.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "24.0.19", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/jest-diff": "*" - } - }, - "node_modules/@types/jest-diff": { - "version": "24.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-diff": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "16.9.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/q": { - "version": "1.5.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/webpack-env": { - "version": "1.16.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "2.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "2.26.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^2.0.0", - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "2.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.26.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "2.26.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.26.0", - "@typescript-eslint/typescript-estree": "2.26.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "2.26.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-preset-app": { - "version": "4.5.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "peerDependencies": { - "@babel/core": "*", - "core-js": "^3", - "vue": "^2 || ^3.0.0-0" - }, - "peerDependenciesMeta": { - "core-js": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-preset-app/node_modules/@babel/core": { - "version": "7.15.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@vue/babel-preset-app/node_modules/@babel/preset-env": { - "version": "7.15.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.4", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-preset-app/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vue/babel-preset-jsx": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", - "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", - "@vue/babel-sugar-functional-vue": "^1.2.2", - "@vue/babel-sugar-inject-h": "^1.2.2", - "@vue/babel-sugar-v-model": "^1.2.3", - "@vue/babel-sugar-v-on": "^1.2.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-composition-api-inject-h": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-composition-api-render-instance": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-functional-vue": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-inject-h": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-sugar-v-on": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/cli-overlay": { - "version": "4.5.13", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/cli-plugin-babel": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.9.0", - "@vue/babel-preset-app": "^4.3.0", - "@vue/cli-shared-utils": "^4.3.0", - "babel-loader": "^8.1.0", - "cache-loader": "^4.1.0", - "thread-loader": "^2.1.3", - "webpack": "^4.0.0" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" - } - }, - "node_modules/@vue/cli-plugin-eslint": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/cli-shared-utils": "^4.3.0", - "eslint-loader": "^2.2.1", - "globby": "^9.2.0", - "inquirer": "^7.1.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0", - "eslint": ">= 1.6.0" - } - }, - "node_modules/@vue/cli-plugin-router": { - "version": "4.5.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/cli-shared-utils": "^4.5.13" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" - } - }, - "node_modules/@vue/cli-plugin-typescript": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/webpack-env": "^1.15.1", - "@vue/cli-shared-utils": "^4.3.0", - "cache-loader": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^3.1.1", - "globby": "^9.2.0", - "thread-loader": "^2.1.3", - "ts-loader": "^6.2.2", - "tslint": "^5.20.1", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0", - "typescript": ">=2" - } - }, - "node_modules/@vue/cli-plugin-unit-jest": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@types/jest": "^24.0.19", - "@vue/cli-shared-utils": "^4.3.0", - "babel-core": "^7.0.0-bridge.0", - "babel-jest": "^24.9.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "deepmerge": "^4.2.2", - "jest": "^24.9.0", - "jest-environment-jsdom-fifteen": "^1.0.2", - "jest-serializer-vue": "^2.0.2", - "jest-transform-stub": "^2.0.0", - "jest-watch-typeahead": "^0.4.2", - "ts-jest": "^24.2.0", - "vue-jest": "^3.0.5" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" - } - }, - "node_modules/@vue/cli-plugin-unit-jest/node_modules/jest-serializer-vue": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "pretty": "2.0.0" - } - }, - "node_modules/@vue/cli-plugin-vuex": { - "version": "4.5.13", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" - } - }, - "node_modules/@vue/cli-service": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@soda/get-current-script": "^1.0.0", - "@vue/cli-overlay": "^4.3.0", - "@vue/cli-plugin-router": "^4.3.0", - "@vue/cli-plugin-vuex": "^4.3.0", - "@vue/cli-shared-utils": "^4.3.0", - "@vue/component-compiler-utils": "^3.0.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.1.0", - "acorn-walk": "^7.1.1", - "address": "^1.1.2", - "autoprefixer": "^9.7.5", - "browserslist": "^4.11.1", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.3.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.4.2", - "cssnano": "^4.1.10", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.5", - "pnp-webpack-plugin": "^1.6.4", - "portfinder": "^1.0.25", - "postcss-loader": "^3.0.0", - "ssri": "^7.1.0", - "terser-webpack-plugin": "^2.3.5", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.9.1", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.6.1", - "webpack-chain": "^6.4.0", - "webpack-dev-server": "^3.10.3", - "webpack-merge": "^4.2.2" - }, - "bin": { - "vue-cli-service": "bin/vue-cli-service.js" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "vue-template-compiler": "^2.0.0" - }, - "peerDependenciesMeta": { - "less-loader": { - "optional": true - }, - "pug-plain-loader": { - "optional": true - }, - "raw-loader": { - "optional": true - }, - "sass-loader": { - "optional": true - }, - "stylus-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/@vue/cli-service/node_modules/acorn": { - "version": "7.4.1", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@vue/cli-service/node_modules/acorn-walk": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@vue/cli-service/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vue/cli-service/node_modules/cacache": { - "version": "13.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@vue/cli-service/node_modules/cliui": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@vue/cli-service/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@vue/cli-service/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/cli-service/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/jest-worker": { - "version": "25.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 8.3" - } - }, - "node_modules/@vue/cli-service/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/cli-service/node_modules/ssri": { - "version": "7.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@vue/cli-service/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/terser-webpack-plugin": { - "version": "2.3.8", - "dev": true, - "license": "MIT", - "dependencies": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@vue/cli-service/node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-shared-utils": { - "version": "4.5.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vue/component-compiler": { - "version": "4.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/component-compiler-utils": "^3.0.0", - "clean-css": "^4.1.11", - "hash-sum": "^1.0.2", - "postcss-modules-sync": "^1.0.0", - "source-map": "0.6.*" - }, - "optionalDependencies": { - "less": "^3.9.0", - "pug": "^3.0.1", - "sass": "^1.18.0", - "stylus": "^0.54.5" - }, - "peerDependencies": { - "postcss": ">=6.0", - "vue-template-compiler": "*" - } - }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "optionalDependencies": { - "prettier": "^1.18.2" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { - "version": "4.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/yallist": { - "version": "2.1.2", - "dev": true, - "license": "ISC" - }, - "node_modules/@vue/component-compiler/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/component-compiler/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/eslint-config-typescript": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "vue-eslint-parser": "^7.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^2.7.0", - "@typescript-eslint/parser": "^2.7.0", - "eslint": "^5.0.0 || ^6.0.0", - "eslint-plugin-vue": "^5.2.3 || ^6.0.0" - } - }, - "node_modules/@vue/preload-webpack-plugin": { - "version": "1.1.2", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "html-webpack-plugin": ">=2.26.0", - "webpack": ">=4.0.0" - } - }, - "node_modules/@vue/test-utils": { - "version": "1.0.0-beta.31", - "dev": true, - "license": "MIT", - "dependencies": { - "dom-event-types": "^1.0.0", - "lodash": "^4.17.15", - "pretty": "^2.0.0" - }, - "peerDependencies": { - "vue": "2.x", - "vue-template-compiler": "^2.x" - } - }, - "node_modules/@vue/web-component-wrapper": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.5", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/accepts": { - "version": "1.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html": { - "version": "0.0.7", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/arch": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/argv": { - "version": "0.0.2", - "dev": true, - "engines": { - "node": ">=0.6.10" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-equal": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/array-union": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/asn1": { - "version": "0.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/assert": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-never": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "2.6.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/atob": { - "version": "2.1.2", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "9.8.6", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-jest": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/babel-jest/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/babel-jest/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/babel-loader": { - "version": "8.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "5.2.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "node_modules/babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "node_modules/babel-preset-jest": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "dev": true, - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-template": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-types": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-walk": { - "version": "3.0.0-canary-5", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@babel/types": "^7.9.6" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "dev": true, - "license": "MIT", - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/base": { - "version": "0.11.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/batch": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bfj": { - "version": "6.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "dev": true, - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.19.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/bonjour/node_modules/array-flatten": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/browser-resolve": { - "version": "1.11.3", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "1.1.7" - } - }, - "node_modules/browser-resolve/node_modules/resolve": { - "version": "1.1.7", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.17.0", - "dev": true, - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "dev": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-json": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-loader": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001255", - "dev": true, - "license": "CC-BY-4.0", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/capture-exit": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/character-parser": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-regex": "^1.0.3" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "dev": true, - "license": "MIT" - }, - "node_modules/check-types": { - "version": "8.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "dev": true, - "license": "ISC" - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "1.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-css": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-css-cli": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-css": "^4.2.1", - "commander": "2.x", - "glob": "7.x" - }, - "bin": { - "cleancss": "bin/cleancss" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-highlight": { - "version": "2.1.11", - "dev": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "bin": { - "highlight": "bin/highlight" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cli-highlight/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cli-highlight/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cli-highlight/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cli-highlight/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-highlight/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight/node_modules/parse5": { - "version": "5.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-highlight/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/cli-highlight/node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/cli-highlight/node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cli-highlight/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10" - } - }, - "node_modules/clipboardy": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clipboardy/node_modules/is-wsl": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/codecov": { - "version": "3.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "argv": "0.0.2", - "ignore-walk": "3.0.3", - "js-yaml": "3.13.1", - "teeny-request": "6.0.1", - "urlgrey": "0.4.4" - }, - "bin": { - "codecov": "bin/codecov" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/codecov/node_modules/js-yaml": { - "version": "3.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "dev": true, - "license": "MIT" - }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - }, - "bin": { - "concurrently": "bin/concurrently.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/concurrently/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/read-pkg": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/condense-newlines": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/condense-newlines/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/condense-newlines/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "dev": true - }, - "node_modules/consolidate": { - "version": "0.15.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/constantinople": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-what": "^3.12.0" - } - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "3.3.10", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.6.5", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.17.3", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.17.0", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-env/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-env/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css": { - "version": "2.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "engines": { - "node": ">4" - } - }, - "node_modules/css-loader": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/css-parse": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "css": "^2.0.0" - } - }, - "node_modules/css-select": { - "version": "2.1.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/css-selector-tokenizer": { - "version": "0.7.3", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-what": { - "version": "3.4.2", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "4.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssom": { - "version": "0.3.8", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/cyclist": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/date-fns": { - "version": "2.23.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/de-indent": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/deasync": { - "version": "0.1.23", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - }, - "engines": { - "node": ">=0.11.0" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-freeze": { - "version": "0.0.1", - "dev": true, - "license": "public domain" - }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "5.0.5", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^3.3.0" - }, - "engines": { - "node": "^8.12.0 || >=9.7.0" - } - }, - "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "3.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": "^8.12.0 || >=9.7.0" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/p-finally": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/detect-newline": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/diff": { - "version": "4.0.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dir-glob": { - "version": "2.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/doctypes": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-event-types": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/domhandler": { - "version": "4.2.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domhandler/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domutils": { - "version": "1.7.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/duplexer": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/easy-stack": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "dev": true, - "license": "ISC" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ejs": { - "version": "2.7.4", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.833", - "dev": true, - "license": "ISC" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "dev": true, - "license": "MIT", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.1.1" - } - }, - "node_modules/es-abstract": { - "version": "1.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "6.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-loader": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" - }, - "peerDependencies": { - "eslint": ">=1.6.0 <7.0.0", - "webpack": ">=2.0.0 <5.0.0" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "natural-compare": "^1.4.0", - "semver": "^5.6.0", - "vue-eslint-parser": "^7.0.0" - }, - "engines": { - "node": ">=8.10" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "1.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/regexpp": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/eslint/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "6.2.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-pubsub": { - "version": "4.3.0", - "dev": true, - "license": "Unlicense", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/eventsource": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "original": "^1.0.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/exec-sh": { - "version": "0.3.6", - "dev": true, - "license": "MIT" - }, - "node_modules/execa": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/expect": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/expect/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/expect/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/expect/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/express": { - "version": "4.17.1", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-from-css": { - "version": "0.4.4", - "dev": true, - "license": "MIT", - "dependencies": { - "css": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">=2.0.0" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "2.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fastparse": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "dev": true, - "license": "ISC" - }, - "node_modules/figures": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/file-loader": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/filesize": { - "version": "3.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/find-babel-config": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-babel-config/node_modules/json5": { - "version": "0.5.1", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/find-babel-config/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/flatted": { - "version": "2.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.8", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "engines": { - "node": ">=6.11.5", - "yarn": ">=1.0.0" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/full-icu": { - "version": "1.3.1", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "node-full-icu-path": "node-icu-data.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/generic-names": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^0.2.16" - } - }, - "node_modules/generic-names/node_modules/big.js": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/generic-names/node_modules/emojis-list": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/generic-names/node_modules/json5": { - "version": "0.5.1", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/generic-names/node_modules/loader-utils": { - "version": "0.2.17", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "dev": true, - "license": "ISC", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "dev": true, - "license": "BSD" - }, - "node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "9.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "dev": true, - "license": "ISC" - }, - "node_modules/growly": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/gzip-size": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/har-schema": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/hash-sum": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/highlight.js": { - "version": "10.7.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hoopy": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/html-entities": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/html-minifier": { - "version": "3.5.21", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "bin": { - "html-minifier": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.17.1", - "dev": true, - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/html-webpack-plugin": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/html-webpack-plugin/node_modules/big.js": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/html-webpack-plugin/node_modules/emojis-list": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/html-webpack-plugin/node_modules/json5": { - "version": "0.5.1", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "0.2.17", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "node_modules/html-webpack-plugin/node_modules/util.promisify": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/htmlparser2/node_modules/dom-serializer": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/htmlparser2/node_modules/domutils": { - "version": "2.8.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "1.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/http-parser-js": { - "version": "0.5.3", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/https-proxy-agent": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "5", - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/https-proxy-agent/node_modules/agent-base": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/human-signals": { - "version": "1.1.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/icss-utils": { - "version": "4.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/iferr": { - "version": "0.1.5", - "dev": true, - "license": "MIT" - }, - "node_modules/ignore": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "3.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-cwd": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "import-from": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-fresh": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-from": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-ip/node_modules/default-gateway": { - "version": "4.2.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip": { - "version": "1.1.5", - "dev": true, - "license": "MIT" - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^1.5.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-expression": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/is-expression/node_modules/acorn": { - "version": "7.4.1", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/is-reference": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/is-stream": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/is-what": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/is-whitespace": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/istanbul-lib-coverage": { - "version": "2.0.5", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "3.3.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "2.0.8", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "3.0.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "2.2.7", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-changed-files": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-changed-files/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-config/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-config/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff": { - "version": "27.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-docblock": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^2.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-each": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-each/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-each/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-each/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom-fifteen": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^15.2.1" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/acorn": { - "version": "7.4.1", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/cssom": { - "version": "0.4.4", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/cssstyle": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/jsdom": { - "version": "15.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/parse5": { - "version": "5.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/tough-cookie": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/whatwg-url": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/jest-environment-jsdom-fifteen/node_modules/ws": { - "version": "7.5.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-node/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-get-type": { - "version": "27.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "engines": { - "node": ">= 6" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-haste-map/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/node_modules/anymatch": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/jest-haste-map/node_modules/fsevents": { - "version": "1.2.13", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/jest-haste-map/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-jasmine2": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-jasmine2/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-leak-detector": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-leak-detector/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-leak-detector/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-leak-detector/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-matcher-utils/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-matcher-utils/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-matcher-utils/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-matcher-utils/node_modules/diff-sequences": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-diff": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-message-util/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-mock": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-mock/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-resolve": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-resolve/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-runner/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-runtime/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-serializer": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-serializer-vue": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pretty": "2.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-snapshot/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/jest-transform-stub": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-util/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util/node_modules/is-ci": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/jest-util/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-validate": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-validate/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watch-typeahead": { - "version": "0.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.1", - "jest-regex-util": "^24.9.0", - "jest-watcher": "^24.3.0", - "slash": "^3.0.0", - "string-length": "^3.1.0", - "strip-ansi": "^5.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-watcher": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-watcher/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/ansi-escapes": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-worker": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest/node_modules/@jest/types": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "13.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest/node_modules/ci-info": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/jest/node_modules/is-ci": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/jest/node_modules/jest-cli": { - "version": "24.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/js-base64": { - "version": "2.6.4", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/js-beautify": { - "version": "1.14.0", - "dev": true, - "license": "MIT", - "dependencies": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-message": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/js-queue": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "easy-stack": "^1.0.1" - }, - "engines": { - "node": ">=1.0.0" - } - }, - "node_modules/js-stringify": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jsdom": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "5.7.4", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.2.3", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/json3": { - "version": "3.3.3", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/jstransformer": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "node_modules/just-extend": { - "version": "4.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/killable": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/launch-editor": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "node_modules/launch-editor-middleware": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "launch-editor": "^2.2.1" - } - }, - "node_modules/left-pad": { - "version": "1.3.0", - "dev": true, - "license": "WTFPL" - }, - "node_modules/less": { - "version": "3.13.1", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "copy-anything": "^2.0.1", - "tslib": "^1.10.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levenary": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "leven": "^3.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-fs-cache": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - } - }, - "node_modules/loader-fs-cache/node_modules/find-cache-dir": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-fs-cache/node_modules/find-up": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-fs-cache/node_modules/path-exists": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-fs-cache/node_modules/pkg-dir": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.defaultsdeep": { - "version": "4.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.transform": { - "version": "4.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loglevel": { - "version": "1.7.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "dev": true, - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.11", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/merge-source-map/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/microevent.ts": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/mime": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.49.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.32", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.49.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "0.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.4.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/normalize-url": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "dev": true, - "license": "MIT" - }, - "node_modules/minipass": { - "version": "3.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/mississippi": { - "version": "3.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "dev": true, - "license": "ISC" - }, - "node_modules/mz": { - "version": "2.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nan": { - "version": "2.15.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/native-request": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/nise": { - "version": "4.1.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/no-case": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/node-addon-api": { - "version": "1.7.2", - "dev": true, - "license": "MIT" - }, - "node_modules/node-cache": { - "version": "4.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "2.x", - "lodash": "^4.17.15" - }, - "engines": { - "node": ">= 0.4.6" - } - }, - "node_modules/node-cache/node_modules/clone": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/node-ipc": { - "version": "9.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-notifier": { - "version": "5.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node_modules/node-releases": { - "version": "1.1.75", - "dev": true, - "license": "MIT" - }, - "node_modules/nopt": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nth-check": { - "version": "1.0.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/open": { - "version": "6.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "3.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/original": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "url-parse": "^1.4.3" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-each-series": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-reduce": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-reduce": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-retry": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/param-case": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "dev": true, - "license": "ISC", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "dev": true, - "license": "(WTFPL OR MIT)" - }, - "node_modules/path-key": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pn": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/pnp-webpack-plugin": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ts-pnp": "^1.1.6" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.36", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-calc": { - "version": "7.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-load-config": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-loader": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", - "dev": true, - "license": "MIT", - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-sync": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - } - }, - "node_modules/postcss-modules-sync/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/ansi-styles": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/chalk": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/has-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss": { - "version": "5.2.18", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "6.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-local-by-default/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope": { - "version": "1.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "6.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/postcss-modules-scope/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-sync/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-sync/node_modules/supports-color": { - "version": "3.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-unique-selectors": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss/node_modules/supports-color": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettier": { - "version": "1.19.1", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/pretty-format": { - "version": "27.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.1.1", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise": { - "version": "7.3.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/prompts": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "dev": true, - "license": "ISC" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/psl": { - "version": "1.8.0", - "dev": true, - "license": "MIT" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/pug": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "node_modules/pug-attrs": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "node_modules/pug-code-gen": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "node_modules/pug-error": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/pug-filters": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "node_modules/pug-lexer": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-linker": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-load": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-parser": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "node_modules/pug-runtime": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/pug-strip-comments": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-walk": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/pump": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/realpath-native": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "util.promisify": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "4.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.6.9", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/renderkid": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.1.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "5.0.1", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "2.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "dev": true, - "license": "ISC", - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "dev": true, - "license": "ISC", - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rollup": { - "version": "2.12.0", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" - } - }, - "node_modules/rollup-copy-plugin": { - "version": "0.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/rollup-plugin-terser": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "jest-worker": "^26.0.0", - "serialize-javascript": "^3.0.0", - "terser": "^4.7.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "3.1.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-vue": { - "version": "5.1.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/component-compiler": "^4.2.3", - "@vue/component-compiler-utils": "^3.1.2", - "debug": "^4.1.1", - "hash-sum": "^1.0.2", - "magic-string": "^0.25.7", - "querystring": "^0.2.0", - "rollup-pluginutils": "^2.8.2", - "source-map": "0.7.3", - "vue-runtime-helpers": "^1.1.2" - }, - "peerDependencies": { - "vue-template-compiler": "*" - } - }, - "node_modules/rollup-plugin-vue/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/rollup-plugin-vue/node_modules/source-map": { - "version": "0.7.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/rsvp": { - "version": "4.8.5", - "dev": true, - "license": "MIT", - "engines": { - "node": "6.* || >= 7.*" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/sane": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/sane/node_modules/anymatch": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/sane/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sass": { - "version": "1.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": ">=2.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "dev": true, - "license": "ISC" - }, - "node_modules/saxes": { - "version": "3.1.11", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/selfsigned": { - "version": "1.10.11", - "dev": true, - "license": "MIT", - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.17.1", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-static": { - "version": "1.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/set-value": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "dev": true, - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "dev": true, - "license": "MIT" - }, - "node_modules/shellwords": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sigmund": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/sinon": { - "version": "9.0.3", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.2", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/formatio": "^5.0.1", - "@sinonjs/samsam": "^5.1.0", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "dev": true, - "license": "MIT", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/sockjs": { - "version": "0.3.21", - "dev": true, - "license": "MIT", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sockjs-client": { - "version": "1.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.3" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sort-keys": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.20", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "dev": true, - "license": "MIT" - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "dev": true, - "license": "MIT" - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/spdy": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.16.1", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "dev": true, - "license": "MIT" - }, - "node_modules/stack-utils": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/static-extend": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-events": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-hash": { - "version": "1.1.3", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/string-length": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width": { - "version": "4.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stubs": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/stylehacks": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylus": { - "version": "0.54.8", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - } - }, - "node_modules/stylus/node_modules/debug": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/stylus/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylus/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/stylus/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/stylus/node_modules/source-map": { - "version": "0.7.3", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/util.promisify": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/table": { - "version": "5.4.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/teeny-request": { - "version": "6.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.2.0", - "stream-events": "^1.0.5", - "uuid": "^3.3.2" - } - }, - "node_modules/terser": { - "version": "4.8.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/test-exclude": { - "version": "5.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/thenify": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/thread-loader": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - }, - "engines": { - "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" - }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/throat": { - "version": "4.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "dev": true, - "license": "MIT" - }, - "node_modules/through2": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.0.33", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/toposort": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tryer": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ts-jest": { - "version": "24.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "jest": ">=24 <25" - } - }, - "node_modules/ts-jest/node_modules/camelcase": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "10.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^4.1.0" - } - }, - "node_modules/ts-loader": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8.6" - }, - "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/ts-loader/node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/ts-loader/node_modules/micromatch": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/ts-loader/node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-pnp": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/tslint": { - "version": "5.20.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, - "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" - } - }, - "node_modules/tslint/node_modules/builtin-modules": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tslint/node_modules/tsutils": { - "version": "2.29.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" - } - }, - "node_modules/tsutils": { - "version": "3.21.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "dev": true, - "license": "Unlicense" - }, - "node_modules/type-check": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.6.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/typescript": { - "version": "3.8.3", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.4.10", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "dev": true, - "license": "MIT" - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/uniqs": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/unset-value": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/url": { - "version": "0.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-loader": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/urlgrey": { - "version": "0.4.4", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/use": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/util.promisify": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/utila": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/void-elements": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue": { - "version": "2.6.11", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-class-component": { - "version": "7.2.3", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vue": "^2.0.0" - } - }, - "node_modules/vue-eslint-parser": { - "version": "7.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8.10" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/vue-hot-reload-api": { - "version": "2.3.4", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-jest": { - "version": "3.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", - "chalk": "^2.1.0", - "deasync": "^0.1.15", - "extract-from-css": "^0.4.4", - "find-babel-config": "^1.1.0", - "js-beautify": "^1.6.14", - "node-cache": "^4.1.1", - "object-assign": "^4.1.1", - "source-map": "^0.5.6", - "tsconfig": "^7.0.0", - "vue-template-es2015-compiler": "^1.6.0" - }, - "peerDependencies": { - "babel-core": "^6.25.0 || ^7.0.0-0", - "vue": "^2.x", - "vue-template-compiler": "^2.x" - } - }, - "node_modules/vue-loader": { - "version": "15.9.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/vue-loader/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-property-decorator": { - "version": "8.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "vue-class-component": "^7.1.0" - }, - "peerDependencies": { - "vue": "*" - } - }, - "node_modules/vue-runtime-helpers": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-style-loader/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-template-compiler": { - "version": "2.6.11", - "dev": true, - "license": "MIT", - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "node_modules/vue-template-es2015-compiler": { - "version": "1.9.1", - "dev": true, - "license": "MIT" - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/walker": { - "version": "1.0.7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.x" - } - }, - "node_modules/watchpack": { - "version": "1.7.5", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "dev": true, - "license": "MIT", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/webpack": { - "version": "4.46.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "3.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 6.14.4" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "7.4.1", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/webpack-chain": { - "version": "6.5.1", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-chain/node_modules/deepmerge": { - "version": "1.5.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "dev": true, - "license": "MIT", - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/webpack-dev-server/node_modules/fsevents": { - "version": "1.2.13", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-absolute-url": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-server/node_modules/is-binary-path": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/whatwg-url": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/with": { - "version": "7.0.2", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/worker-farm": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/worker-rpc": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "microevent.ts": "~0.1.1" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/write": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/write-file-atomic": { - "version": "2.4.1", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/ws": { - "version": "5.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/xtend": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "13.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yorkie": { - "version": "2.0.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/yorkie/node_modules/cross-spawn": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/yorkie/node_modules/execa": { - "version": "0.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/yorkie/node_modules/get-stream": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/yorkie/node_modules/lru-cache": { - "version": "4.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/yorkie/node_modules/normalize-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yorkie/node_modules/yallist": { - "version": "2.1.2", - "dev": true, - "license": "ISC" - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - } - }, - "@babel/compat-data": { - "version": "7.15.0", - "dev": true - }, - "@babel/core": { - "version": "7.10.2", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.2", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helpers": "^7.10.1", - "@babel/parser": "^7.10.2", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "requires": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helpers": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-decorators": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.15.0", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.14.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/preset-env": { - "version": "7.10.2", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.1", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-proposal-async-generator-functions": "^7.10.1", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.1", - "@babel/plugin-transform-computed-properties": "^7.10.1", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.1", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.1", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.1", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.2", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.15.4", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@hapi/address": { - "version": "2.1.4", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@jest/console": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/core": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "@jest/environment": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "@jest/reporters": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "@jest/source-map": { - "version": "24.9.0", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "@jest/test-result": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "@jest/types": { - "version": "27.1.1", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "dev": true - }, - "@rollup/plugin-babel": { - "version": "5.0.2", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@rollup/pluginutils": "^3.0.8" - } - }, - "@rollup/plugin-commonjs": { - "version": "12.0.0", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.8", - "commondir": "^1.0.1", - "estree-walker": "^1.0.1", - "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" - } - }, - "@rollup/plugin-node-resolve": { - "version": "8.0.0", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "deep-freeze": "^0.0.1", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.14.2" - } - }, - "@rollup/plugin-replace": { - "version": "2.3.2", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.8", - "magic-string": "^0.25.5" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, - "@sinonjs/commons": { - "version": "1.8.3", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@sinonjs/formatio": { - "version": "5.0.1", - "dev": true, - "requires": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^5.0.2" - } - }, - "@sinonjs/samsam": { - "version": "5.3.1", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "@sinonjs/text-encoding": { - "version": "0.7.1", - "dev": true - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.8.0", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "error-stack-parser": "^2.0.2", - "string-width": "^2.0.0", - "strip-ansi": "^5" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - } - } - } - } - }, - "@soda/get-current-script": { - "version": "1.0.2", - "dev": true - }, - "@tootallnate/once": { - "version": "1.1.2", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.16", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.3", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.14.2", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "dev": true - }, - "@types/estree": { - "version": "0.0.39", - "dev": true - }, - "@types/glob": { - "version": "7.1.4", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "24.0.19", - "dev": true, - "requires": { - "@types/jest-diff": "*" - } - }, - "@types/jest-diff": { - "version": "24.3.0", - "dev": true, - "requires": { - "jest-diff": "*" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "dev": true - }, - "@types/node": { - "version": "16.9.1", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "dev": true - }, - "@types/resolve": { - "version": "0.0.8", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "1.0.1", - "dev": true - }, - "@types/strip-bom": { - "version": "3.0.0", - "dev": true - }, - "@types/strip-json-comments": { - "version": "0.0.30", - "dev": true - }, - "@types/webpack-env": { - "version": "1.16.2", - "dev": true - }, - "@types/yargs": { - "version": "16.0.4", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.1", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.26.0", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "2.26.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.26.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.26.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.26.0", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.26.0", - "@typescript-eslint/typescript-estree": "2.26.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.26.0", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.2.1", - "dev": true - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.0.7", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.2.1", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "html-tags": { - "version": "2.0.0", - "dev": true - } - } - }, - "@vue/babel-preset-app": { - "version": "4.5.13", - "dev": true, - "requires": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.15.5", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - } - }, - "@babel/preset-env": { - "version": "7.15.6", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.4", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@vue/babel-preset-jsx": { - "version": "1.2.4", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", - "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", - "@vue/babel-sugar-functional-vue": "^1.2.2", - "@vue/babel-sugar-inject-h": "^1.2.2", - "@vue/babel-sugar-v-model": "^1.2.3", - "@vue/babel-sugar-v-on": "^1.2.3" - } - }, - "@vue/babel-sugar-composition-api-inject-h": { - "version": "1.2.1", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-composition-api-render-instance": { - "version": "1.2.4", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.2.2", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-inject-h": { - "version": "1.2.2", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-v-model": { - "version": "1.2.3", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "html-tags": { - "version": "2.0.0", - "dev": true - } - } - }, - "@vue/babel-sugar-v-on": { - "version": "1.2.3", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - } - } - }, - "@vue/cli-overlay": { - "version": "4.5.13", - "dev": true - }, - "@vue/cli-plugin-babel": { - "version": "4.3.0", - "dev": true, - "requires": { - "@babel/core": "^7.9.0", - "@vue/babel-preset-app": "^4.3.0", - "@vue/cli-shared-utils": "^4.3.0", - "babel-loader": "^8.1.0", - "cache-loader": "^4.1.0", - "thread-loader": "^2.1.3", - "webpack": "^4.0.0" - } - }, - "@vue/cli-plugin-eslint": { - "version": "4.3.0", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.3.0", - "eslint-loader": "^2.2.1", - "globby": "^9.2.0", - "inquirer": "^7.1.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - } - }, - "@vue/cli-plugin-router": { - "version": "4.5.13", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.13" - } - }, - "@vue/cli-plugin-typescript": { - "version": "4.3.0", - "dev": true, - "requires": { - "@types/webpack-env": "^1.15.1", - "@vue/cli-shared-utils": "^4.3.0", - "cache-loader": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^3.1.1", - "globby": "^9.2.0", - "thread-loader": "^2.1.3", - "ts-loader": "^6.2.2", - "tslint": "^5.20.1", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - } - }, - "@vue/cli-plugin-unit-jest": { - "version": "4.3.0", - "dev": true, - "requires": { - "@babel/core": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@types/jest": "^24.0.19", - "@vue/cli-shared-utils": "^4.3.0", - "babel-core": "^7.0.0-bridge.0", - "babel-jest": "^24.9.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "deepmerge": "^4.2.2", - "jest": "^24.9.0", - "jest-environment-jsdom-fifteen": "^1.0.2", - "jest-serializer-vue": "^2.0.2", - "jest-transform-stub": "^2.0.0", - "jest-watch-typeahead": "^0.4.2", - "ts-jest": "^24.2.0", - "vue-jest": "^3.0.5" - }, - "dependencies": { - "jest-serializer-vue": { - "version": "2.0.2", - "dev": true, - "requires": { - "pretty": "2.0.0" - } - } - } - }, - "@vue/cli-plugin-vuex": { - "version": "4.5.13", - "dev": true, - "requires": {} - }, - "@vue/cli-service": { - "version": "4.3.0", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@soda/get-current-script": "^1.0.0", - "@vue/cli-overlay": "^4.3.0", - "@vue/cli-plugin-router": "^4.3.0", - "@vue/cli-plugin-vuex": "^4.3.0", - "@vue/cli-shared-utils": "^4.3.0", - "@vue/component-compiler-utils": "^3.0.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.1.0", - "acorn-walk": "^7.1.1", - "address": "^1.1.2", - "autoprefixer": "^9.7.5", - "browserslist": "^4.11.1", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.3.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.4.2", - "cssnano": "^4.1.10", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.5", - "pnp-webpack-plugin": "^1.6.4", - "portfinder": "^1.0.25", - "postcss-loader": "^3.0.0", - "ssri": "^7.1.0", - "terser-webpack-plugin": "^2.3.5", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.9.1", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.6.1", - "webpack-chain": "^6.4.0", - "webpack-dev-server": "^3.10.3", - "webpack-merge": "^4.2.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cacache": { - "version": "13.0.1", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } - }, - "cliui": { - "version": "6.0.0", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-worker": { - "version": "25.5.0", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "ssri": { - "version": "7.1.1", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "terser-webpack-plugin": { - "version": "2.3.8", - "dev": true, - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@vue/cli-shared-utils": { - "version": "4.5.13", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@vue/component-compiler": { - "version": "4.2.4", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.0.0", - "clean-css": "^4.1.11", - "hash-sum": "^1.0.2", - "less": "^3.9.0", - "postcss-modules-sync": "^1.0.0", - "pug": "^3.0.1", - "sass": "^1.18.0", - "source-map": "0.6.*", - "stylus": "^0.54.5" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "@vue/component-compiler-utils": { - "version": "3.2.2", - "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.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "dev": true - } - } - }, - "@vue/eslint-config-typescript": { - "version": "5.0.2", - "dev": true, - "requires": { - "vue-eslint-parser": "^7.0.0" - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.2", - "dev": true, - "requires": {} - }, - "@vue/test-utils": { - "version": "1.0.0-beta.31", - "dev": true, - "requires": { - "dom-event-types": "^1.0.0", - "lodash": "^4.17.15", - "pretty": "^2.0.0" - } - }, - "@vue/web-component-wrapper": { - "version": "1.3.0", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "dev": true - }, - "abab": { - "version": "2.0.5", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.4.2", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-jsx": { - "version": "5.3.2", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "6.2.0", - "dev": true - }, - "address": { - "version": "1.1.2", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "dev": true, - "requires": {} - }, - "ajv-keywords": { - "version": "3.5.2", - "dev": true, - "requires": {} - }, - "alphanum-sort": { - "version": "1.0.2", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "dev": true - } - } - }, - "ansi-html": { - "version": "0.0.7", - "dev": true - }, - "ansi-regex": { - "version": "5.0.0", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "dev": true - }, - "arch": { - "version": "2.2.0", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "argv": { - "version": "0.0.2", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "dev": true - }, - "asap": { - "version": "2.0.6", - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.4", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "dev": true - }, - "util": { - "version": "0.10.3", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-never": { - "version": "1.2.1", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "1.0.0", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "dev": true - }, - "async": { - "version": "2.6.4", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "dev": true - }, - "atob": { - "version": "2.1.2", - "dev": true - }, - "autoprefixer": { - "version": "9.8.6", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "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", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "dev": true - } - } - }, - "babel-core": { - "version": "7.0.0-bridge.0", - "dev": true, - "requires": {} - }, - "babel-jest": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "babel-loader": { - "version": "8.2.2", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-messages": { - "version": "6.23.0", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.4", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-jest": { - "version": "24.9.0", - "dev": true, - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "dev": true - } - } - }, - "babel-template": { - "version": "6.26.0", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "dev": true - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "dev": true - } - } - }, - "babel-walk": { - "version": "3.0.0-canary-5", - "dev": true, - "optional": true, - "requires": { - "@babel/types": "^7.9.6" - } - }, - "babylon": { - "version": "6.18.0", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "dev": true - }, - "base": { - "version": "0.11.2", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "dev": true - }, - "batch": { - "version": "0.6.1", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bfj": { - "version": "6.1.2", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "big.js": { - "version": "5.2.2", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "qs": { - "version": "6.7.0", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "dev": true - }, - "browser-process-hrtime": { - "version": "1.0.0", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "dev": true - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.17.0", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - } - }, - "bs-logger": { - "version": "0.2.6", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.2", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "dev": true - }, - "buffer-json": { - "version": "2.0.0", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "dev": true - }, - "builtin-modules": { - "version": "3.2.0", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "4.1.0", - "dev": true, - "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "6.2.0", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001255", - "dev": true - }, - "capture-exit": { - "version": "2.0.0", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "character-parser": { - "version": "2.2.0", - "dev": true, - "optional": true, - "requires": { - "is-regex": "^1.0.3" - } - }, - "chardet": { - "version": "0.7.0", - "dev": true - }, - "check-types": { - "version": "8.0.3", - "dev": true - }, - "chokidar": { - "version": "3.5.2", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "dev": true - }, - "ci-info": { - "version": "1.6.0", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "clean-css-cli": { - "version": "4.3.0", - "dev": true, - "requires": { - "clean-css": "^4.2.1", - "commander": "2.x", - "glob": "7.x" - } - }, - "clean-stack": { - "version": "2.2.0", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-highlight": { - "version": "2.1.11", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "7.0.4", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "parse5": { - "version": "5.1.1", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "dev": true - } - } - }, - "cli-spinners": { - "version": "2.6.0", - "dev": true - }, - "cli-width": { - "version": "3.0.0", - "dev": true - }, - "clipboardy": { - "version": "2.3.0", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "cliui": { - "version": "5.0.0", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "dev": true - }, - "co": { - "version": "4.6.0", - "dev": true - }, - "coa": { - "version": "2.0.2", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "codecov": { - "version": "3.7.2", - "dev": true, - "requires": { - "argv": "0.0.2", - "ignore-walk": "3.0.3", - "js-yaml": "3.13.1", - "teeny-request": "6.0.1", - "urlgrey": "0.4.4" - }, - "dependencies": { - "js-yaml": { - "version": "3.13.1", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "dev": true - }, - "color-string": { - "version": "1.6.0", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.4.0", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concurrently": { - "version": "5.2.0", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "dev": true - }, - "read-pkg": { - "version": "4.0.1", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "condense-newlines": { - "version": "0.2.1", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "config-chain": { - "version": "1.1.13", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "dev": true - }, - "consolidate": { - "version": "0.15.1", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constantinople": { - "version": "4.0.1", - "dev": true, - "optional": true, - "requires": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "dev": true - }, - "content-disposition": { - "version": "0.5.3", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.0", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "dev": true - }, - "copy-anything": { - "version": "2.0.3", - "dev": true, - "optional": true, - "requires": { - "is-what": "^3.12.0" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "dev": true - }, - "copy-webpack-plugin": { - "version": "5.1.2", - "dev": true, - "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "7.1.1", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "dev": true - } - } - }, - "ignore": { - "version": "3.3.10", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "slash": { - "version": "1.0.0", - "dev": true - } - } - }, - "core-js": { - "version": "3.6.5", - "dev": true - }, - "core-js-compat": { - "version": "3.17.3", - "dev": true, - "requires": { - "browserslist": "^4.17.0", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "create-ecdh": { - "version": "4.0.4", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-env": { - "version": "7.0.3", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css": { - "version": "2.2.4", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "css-color-names": { - "version": "0.0.4", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "3.6.0", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "css-parse": { - "version": "2.0.0", - "dev": true, - "optional": true, - "requires": { - "css": "^2.0.0" - } - }, - "css-select": { - "version": "2.1.0", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "css-what": { - "version": "3.4.2", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "dev": true - }, - "csso": { - "version": "4.2.0", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.8", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "cyclist": { - "version": "1.0.1", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "date-fns": { - "version": "2.23.0", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "dev": true - }, - "deasync": { - "version": "0.1.23", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - } - }, - "debug": { - "version": "4.3.2", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-freeze": { - "version": "0.0.1", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "dev": true - }, - "default-gateway": { - "version": "5.0.5", - "dev": true, - "requires": { - "execa": "^3.3.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-finally": { - "version": "2.0.1", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "defaults": { - "version": "1.0.3", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "4.1.1", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "dev": true - } - } - }, - "p-map": { - "version": "2.1.0", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "dev": true - }, - "depd": { - "version": "1.1.2", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "dev": true - }, - "diff": { - "version": "4.0.2", - "dev": true - }, - "diff-sequences": { - "version": "27.0.6", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "dir-glob": { - "version": "2.2.2", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "doctypes": { - "version": "1.1.0", - "dev": true, - "optional": true - }, - "dom-converter": { - "version": "0.2.0", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-event-types": { - "version": "1.0.0", - "dev": true - }, - "dom-serializer": { - "version": "0.2.2", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "4.2.2", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "dev": true - } - } - }, - "domutils": { - "version": "1.7.0", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.6.0", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "easy-stack": { - "version": "1.0.1", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "editorconfig": { - "version": "0.15.3", - "dev": true, - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "dev": true - } - } - }, - "ee-first": { - "version": "1.1.1", - "dev": true - }, - "ejs": { - "version": "2.7.4", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.833", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "entities": { - "version": "2.2.0", - "dev": true - }, - "errno": { - "version": "0.1.8", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.18.6", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true, - "optional": true - } - } - }, - "eslint": { - "version": "6.7.2", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "eslint-utils": { - "version": "1.4.3", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "globals": { - "version": "12.4.0", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.3.0", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "regexpp": { - "version": "2.0.1", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "dev": true - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "dev": true - } - } - }, - "eslint-loader": { - "version": "2.2.1", - "dev": true, - "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" - } - }, - "eslint-plugin-vue": { - "version": "6.2.2", - "dev": true, - "requires": { - "natural-compare": "^1.4.0", - "semver": "^5.6.0", - "vue-eslint-parser": "^7.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "dev": true - }, - "espree": { - "version": "6.2.1", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "dev": true - }, - "etag": { - "version": "1.8.1", - "dev": true - }, - "event-pubsub": { - "version": "4.3.0", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "dev": true - }, - "events": { - "version": "3.3.0", - "dev": true - }, - "eventsource": { - "version": "1.1.1", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-sh": { - "version": "0.3.6", - "dev": true - }, - "execa": { - "version": "1.0.0", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "expect": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - } - } - }, - "express": { - "version": "4.17.1", - "dev": true, - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "qs": { - "version": "6.7.0", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extract-from-css": { - "version": "0.4.4", - "dev": true, - "requires": { - "css": "^2.1.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "dev": true - }, - "faye-websocket": { - "version": "0.11.4", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "dev": true - }, - "figures": { - "version": "3.2.0", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "4.3.0", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "dev": true - }, - "filesize": { - "version": "3.6.1", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "find-babel-config": { - "version": "1.2.0", - "dev": true, - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.14.8", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "for-in": { - "version": "1.0.2", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.1", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - } - }, - "form-data": { - "version": "2.3.3", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "dev": true - }, - "from2": { - "version": "2.3.0", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "dev": true, - "optional": true - }, - "full-icu": { - "version": "1.3.1", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "dev": true - }, - "generic-names": { - "version": "1.0.3", - "dev": true, - "requires": { - "loader-utils": "^0.2.16" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "dev": true - }, - "json5": { - "version": "0.5.1", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "4.1.0", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.7", - "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-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "dev": true - }, - "globals": { - "version": "11.12.0", - "dev": true - }, - "globby": { - "version": "9.2.0", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.8", - "dev": true - }, - "growly": { - "version": "1.3.0", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - } - }, - "handle-thing": { - "version": "2.0.1", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "dev": true - } - } - }, - "hash-sum": { - "version": "2.0.0", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "dev": true - }, - "highlight.js": { - "version": "10.7.3", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoopy": { - "version": "0.1.4", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.4.0", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "dev": true - } - } - }, - "html-tags": { - "version": "3.1.0", - "dev": true - }, - "html-webpack-plugin": { - "version": "3.2.0", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "dev": true - }, - "json5": { - "version": "0.5.1", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "6.1.0", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.3.2", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.3", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "dev": true - }, - "https-proxy-agent": { - "version": "4.0.0", - "dev": true, - "requires": { - "agent-base": "5", - "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "5.1.1", - "dev": true - } - } - }, - "human-signals": { - "version": "1.1.1", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "dev": true - }, - "icss-utils": { - "version": "4.1.1", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "ieee754": { - "version": "1.2.1", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "dev": true - }, - "ignore-walk": { - "version": "3.0.3", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "image-size": { - "version": "0.5.5", - "dev": true, - "optional": true - }, - "import-cwd": { - "version": "2.1.0", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "dev": true - }, - "ini": { - "version": "1.3.8", - "dev": true - }, - "inquirer": { - "version": "7.3.3", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "default-gateway": { - "version": "4.2.0", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.3", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "invariant": { - "version": "2.2.4", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.1.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.6.0", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.5", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-descriptor": { - "version": "0.1.6", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "dev": true - }, - "is-docker": { - "version": "2.2.1", - "dev": true - }, - "is-expression": { - "version": "4.0.0", - "dev": true, - "optional": true, - "requires": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "dev": true, - "optional": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-module": { - "version": "1.0.0", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.1", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-number-object": { - "version": "1.0.6", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.2.2", - "dev": true, - "optional": true - }, - "is-reference": { - "version": "1.2.1", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-regex": { - "version": "1.1.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "dev": true - }, - "is-what": { - "version": "3.14.1", - "dev": true, - "optional": true - }, - "is-whitespace": { - "version": "0.3.0", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "supports-color": { - "version": "6.1.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "dev": true, - "requires": { - "html-escaper": "^2.0.0" - } - }, - "javascript-stringify": { - "version": "2.1.0", - "dev": true - }, - "jest": { - "version": "24.9.0", - "dev": true, - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ci-info": { - "version": "2.0.0", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "jest-cli": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } - } - }, - "jest-changed-files": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-config": { - "version": "24.9.0", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - } - } - }, - "jest-diff": { - "version": "27.1.1", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-docblock": { - "version": "24.9.0", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - } - } - }, - "jest-environment-jsdom": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-environment-jsdom-fifteen": { - "version": "1.0.2", - "dev": true, - "requires": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^15.2.1" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "acorn": { - "version": "7.4.1", - "dev": true - }, - "cssom": { - "version": "0.4.4", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "dev": true - } - } - }, - "jsdom": { - "version": "15.2.1", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "dev": true - }, - "tough-cookie": { - "version": "3.0.1", - "dev": true, - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "whatwg-url": { - "version": "7.1.0", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "7.5.5", - "dev": true, - "requires": {} - } - } - }, - "jest-environment-node": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-get-type": { - "version": "27.0.6", - "dev": true - }, - "jest-haste-map": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "anymatch": { - "version": "2.0.0", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - } - } - }, - "jest-leak-detector": { - "version": "24.9.0", - "dev": true, - "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - } - } - }, - "jest-matcher-utils": { - "version": "24.9.0", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "diff-sequences": { - "version": "24.9.0", - "dev": true - }, - "jest-diff": { - "version": "24.9.0", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - } - } - }, - "jest-message-util": { - "version": "24.9.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-mock": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "24.9.0", - "dev": true - }, - "jest-resolve": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-runner": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-runtime": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } - } - }, - "jest-serializer": { - "version": "24.9.0", - "dev": true - }, - "jest-serializer-vue": { - "version": "0.3.0", - "dev": true, - "requires": { - "pretty": "2.0.0" - } - }, - "jest-snapshot": { - "version": "24.9.0", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "diff-sequences": { - "version": "24.9.0", - "dev": true - }, - "jest-diff": { - "version": "24.9.0", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - }, - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "jest-transform-stub": { - "version": "2.0.0", - "dev": true - }, - "jest-util": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ci-info": { - "version": "2.0.0", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "jest-validate": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "jest-get-type": { - "version": "24.9.0", - "dev": true - }, - "pretty-format": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - }, - "react-is": { - "version": "16.13.1", - "dev": true - } - } - }, - "jest-watch-typeahead": { - "version": "0.4.2", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.1", - "jest-regex-util": "^24.9.0", - "jest-watcher": "^24.3.0", - "slash": "^3.0.0", - "string-length": "^3.1.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "slash": { - "version": "3.0.0", - "dev": true - }, - "string-length": { - "version": "3.1.0", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "jest-watcher": { - "version": "24.9.0", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "24.9.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "dev": true - } - } - }, - "jest-worker": { - "version": "24.9.0", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "js-base64": { - "version": "2.6.4", - "dev": true - }, - "js-beautify": { - "version": "1.14.0", - "dev": true, - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" - } - }, - "js-message": { - "version": "1.0.7", - "dev": true - }, - "js-queue": { - "version": "2.0.2", - "dev": true, - "requires": { - "easy-stack": "^1.0.1" - } - }, - "js-stringify": { - "version": "1.0.2", - "dev": true, - "optional": true - }, - "js-tokens": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "dev": true - }, - "jsdom": { - "version": "11.12.0", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "dev": true - } - } - }, - "jsesc": { - "version": "2.5.2", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "dev": true - }, - "json3": { - "version": "3.3.3", - "dev": true - }, - "json5": { - "version": "2.2.0", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jstransformer": { - "version": "1.0.0", - "dev": true, - "optional": true, - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "just-extend": { - "version": "4.2.1", - "dev": true - }, - "killable": { - "version": "1.0.1", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "dev": true - }, - "launch-editor": { - "version": "2.2.1", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.2.1", - "dev": true, - "requires": { - "launch-editor": "^2.2.1" - } - }, - "left-pad": { - "version": "1.3.0", - "dev": true - }, - "less": { - "version": "3.13.1", - "dev": true, - "optional": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "mime": { - "version": "1.6.0", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "dev": true, - "optional": true - } - } - }, - "leven": { - "version": "3.1.0", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "dev": true - } - } - }, - "loader-fs-cache": { - "version": "1.0.3", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "dev": true - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "dev": true - }, - "lodash.transform": { - "version": "4.6.0", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.7.1", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "magic-string": { - "version": "0.25.7", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "dev": true - }, - "methods": { - "version": "1.1.2", - "dev": true - }, - "microevent.ts": { - "version": "0.1.1", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "mime": { - "version": "2.5.2", - "dev": true - }, - "mime-db": { - "version": "1.49.0", - "dev": true - }, - "mime-types": { - "version": "2.1.32", - "dev": true, - "requires": { - "mime-db": "1.49.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "dev": true - }, - "minipass": { - "version": "3.1.3", - "dev": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, - "minipass-collect": { - "version": "1.0.2", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "move-concurrently": { - "version": "1.0.1", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.1.2", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "dev": true - }, - "mz": { - "version": "2.7.0", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.15.0", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "native-request": { - "version": "1.1.0", - "dev": true, - "optional": true - }, - "natural-compare": { - "version": "1.4.0", - "dev": true - }, - "negotiator": { - "version": "0.6.2", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "dev": true - }, - "nise": { - "version": "4.1.0", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "dev": true - }, - "path-to-regexp": { - "version": "1.8.0", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "no-case": { - "version": "2.3.2", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-addon-api": { - "version": "1.7.2", - "dev": true - }, - "node-cache": { - "version": "4.2.1", - "dev": true, - "requires": { - "clone": "2.x", - "lodash": "^4.17.15" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "dev": true - } - } - }, - "node-fetch": { - "version": "2.6.7", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-forge": { - "version": "0.10.0", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "dev": true - }, - "node-ipc": { - "version": "9.2.1", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" - } - }, - "node-libs-browser": { - "version": "2.2.1", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "dev": true - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "dev": true - }, - "node-notifier": { - "version": "5.4.5", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node-releases": { - "version": "1.1.75", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-hash": { - "version": "1.3.1", - "dev": true - }, - "object-inspect": { - "version": "1.11.0", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "object.pick": { - "version": "1.3.0", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - } - }, - "obuf": { - "version": "1.1.2", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "dev": true - }, - "once": { - "version": "1.4.0", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.4.0", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opener": { - "version": "1.5.2", - "dev": true - }, - "opn": { - "version": "5.5.0", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "3.4.0", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "original": { - "version": "1.0.2", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "dev": true - }, - "p-each-series": { - "version": "1.0.0", - "dev": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "pako": { - "version": "1.0.11", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "4.0.0", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.1.2", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "dev": true - }, - "pify": { - "version": "4.0.1", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.1", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "pn": { - "version": "1.1.0", - "dev": true - }, - "pnp-webpack-plugin": { - "version": "1.7.0", - "dev": true, - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "portfinder": { - "version": "1.0.28", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "dev": true - }, - "postcss": { - "version": "7.0.36", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.5", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-sync": { - "version": "1.0.0", - "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-regex": { - "version": "2.1.1", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "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", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.6", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "dev": true - }, - "prettier": { - "version": "1.19.1", - "dev": true, - "optional": true - }, - "pretty": { - "version": "2.0.0", - "dev": true, - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "pretty-error": { - "version": "2.1.2", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "pretty-format": { - "version": "27.1.1", - "dev": true, - "requires": { - "@jest/types": "^27.1.1", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } - } - }, - "process": { - "version": "0.11.10", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "dev": true - }, - "progress": { - "version": "2.0.3", - "dev": true - }, - "promise": { - "version": "7.3.1", - "dev": true, - "optional": true, - "requires": { - "asap": "~2.0.3" - } - }, - "promise-inflight": { - "version": "1.0.1", - "dev": true - }, - "prompts": { - "version": "2.4.1", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proto-list": { - "version": "1.2.4", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "dev": true - }, - "psl": { - "version": "1.8.0", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "pug": { - "version": "3.0.2", - "dev": true, - "optional": true, - "requires": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "pug-attrs": { - "version": "3.0.0", - "dev": true, - "optional": true, - "requires": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "pug-code-gen": { - "version": "3.0.2", - "dev": true, - "optional": true, - "requires": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "pug-error": { - "version": "2.0.0", - "dev": true, - "optional": true - }, - "pug-filters": { - "version": "4.0.0", - "dev": true, - "optional": true, - "requires": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "pug-lexer": { - "version": "5.0.1", - "dev": true, - "optional": true, - "requires": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "pug-linker": { - "version": "4.0.0", - "dev": true, - "optional": true, - "requires": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "pug-load": { - "version": "3.0.0", - "dev": true, - "optional": true, - "requires": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "pug-parser": { - "version": "6.0.0", - "dev": true, - "optional": true, - "requires": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "pug-runtime": { - "version": "3.0.1", - "dev": true, - "optional": true - }, - "pug-strip-comments": { - "version": "2.0.0", - "dev": true, - "optional": true, - "requires": { - "pug-error": "^2.0.0" - } - }, - "pug-walk": { - "version": "2.0.0", - "dev": true, - "optional": true - }, - "pump": { - "version": "3.0.0", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "dev": true - }, - "q": { - "version": "1.5.1", - "dev": true - }, - "qs": { - "version": "6.5.2", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react-is": { - "version": "17.0.2", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "realpath-native": { - "version": "1.1.0", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "regenerate": { - "version": "1.4.2", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "3.2.0", - "dev": true - }, - "regexpu-core": { - "version": "4.7.1", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "dev": true - }, - "regjsparser": { - "version": "0.6.9", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "dev": true - }, - "renderkid": { - "version": "2.0.7", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "css-select": { - "version": "4.1.3", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-what": { - "version": "5.0.1", - "dev": true - }, - "dom-serializer": { - "version": "1.3.2", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "nth-check": { - "version": "2.0.0", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.4", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "dev": true - }, - "request": { - "version": "2.88.2", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "dev": true - }, - "retry": { - "version": "0.12.0", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.12.0", - "dev": true, - "requires": { - "fsevents": "~2.1.2" - }, - "dependencies": { - "fsevents": { - "version": "2.1.3", - "dev": true, - "optional": true - } - } - }, - "rollup-copy-plugin": { - "version": "0.1.0", - "dev": true - }, - "rollup-plugin-terser": { - "version": "6.1.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "jest-worker": "^26.0.0", - "serialize-javascript": "^3.0.0", - "terser": "^4.7.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-worker": { - "version": "26.6.2", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "serialize-javascript": { - "version": "3.1.0", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "rollup-plugin-vue": { - "version": "5.1.9", - "dev": true, - "requires": { - "@vue/component-compiler": "^4.2.3", - "@vue/component-compiler-utils": "^3.1.2", - "debug": "^4.1.1", - "hash-sum": "^1.0.2", - "magic-string": "^0.25.7", - "querystring": "^0.2.0", - "rollup-pluginutils": "^2.8.2", - "source-map": "0.7.3", - "vue-runtime-helpers": "^1.1.2" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "dev": true - } - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "dev": true - } - } - }, - "rsvp": { - "version": "4.8.5", - "dev": true - }, - "run-async": { - "version": "2.4.1", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "dev": true - }, - "sane": { - "version": "4.1.0", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "sass": { - "version": "1.27.0", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sax": { - "version": "1.2.4", - "dev": true - }, - "saxes": { - "version": "3.1.11", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "dev": true - }, - "selfsigned": { - "version": "1.10.11", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "5.7.1", - "dev": true - }, - "send": { - "version": "0.17.1", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "dev": true - }, - "ms": { - "version": "2.1.1", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "4.0.0", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "dev": true - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "sigmund": { - "version": "1.0.1", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "dev": true - } - } - }, - "sinon": { - "version": "9.0.3", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.2", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/formatio": "^5.0.1", - "@sinonjs/samsam": "^5.1.0", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "sisteransi": { - "version": "1.0.5", - "dev": true - }, - "slash": { - "version": "2.0.0", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.21", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "sockjs-client": { - "version": "1.5.2", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.3" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "sort-keys": { - "version": "1.1.2", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.20", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.1", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "dev": true - }, - "spawn-command": { - "version": "0.0.2-1", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.10", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.2", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stable": { - "version": "0.1.8", - "dev": true - }, - "stack-utils": { - "version": "1.0.5", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "dev": true - } - } - }, - "stackframe": { - "version": "1.2.0", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-events": { - "version": "1.0.5", - "dev": true, - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-hash": { - "version": "1.1.3", - "dev": true - }, - "string-length": { - "version": "2.0.0", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "4.2.2", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.0", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "dev": true - }, - "stubs": { - "version": "3.0.0", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "stylus": { - "version": "0.54.8", - "dev": true, - "optional": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "dev": true, - "optional": true - }, - "ms": { - "version": "2.0.0", - "dev": true, - "optional": true - }, - "semver": { - "version": "6.3.0", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.7.3", - "dev": true, - "optional": true - } - } - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svg-tags": { - "version": "1.0.0", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "util.promisify": { - "version": "1.0.1", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - } - } - }, - "symbol-tree": { - "version": "3.2.4", - "dev": true - }, - "table": { - "version": "5.4.6", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "dev": true - }, - "teeny-request": { - "version": "6.0.1", - "dev": true, - "requires": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.2.0", - "stream-events": "^1.0.5", - "uuid": "^3.3.2" - } - }, - "terser": { - "version": "4.8.1", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "test-exclude": { - "version": "5.2.3", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.3", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "throat": { - "version": "4.1.0", - "dev": true - }, - "through": { - "version": "2.3.8", - "dev": true - }, - "through2": { - "version": "2.0.5", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.1.0", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "dev": true - }, - "token-stream": { - "version": "1.0.0", - "dev": true, - "optional": true - }, - "toposort": { - "version": "1.0.7", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tree-kill": { - "version": "1.2.2", - "dev": true - }, - "tryer": { - "version": "1.0.1", - "dev": true - }, - "ts-jest": { - "version": "24.3.0", - "dev": true, - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "ts-loader": { - "version": "6.2.2", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "ts-pnp": { - "version": "1.2.0", - "dev": true - }, - "tsconfig": { - "version": "7.0.0", - "dev": true, - "requires": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "dev": true - }, - "tslint": { - "version": "5.20.1", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "dev": true - }, - "tsutils": { - "version": "2.29.0", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "tsutils": { - "version": "3.21.0", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "dev": true - }, - "typescript": { - "version": "3.8.3", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "unbox-primitive": { - "version": "1.0.1", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "dev": true - }, - "url": { - "version": "0.11.0", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "dev": true - } - } - }, - "url-loader": { - "version": "2.3.0", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.5.10", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "urlgrey": { - "version": "0.4.4", - "dev": true - }, - "use": { - "version": "3.1.1", - "dev": true - }, - "util": { - "version": "0.11.1", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "dev": true - }, - "util.promisify": { - "version": "1.1.1", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" - } - }, - "utila": { - "version": "0.4.0", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "dev": true - }, - "verror": { - "version": "1.10.0", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "dev": true - }, - "void-elements": { - "version": "3.1.0", - "dev": true, - "optional": true - }, - "vue": { - "version": "2.6.11", - "dev": true - }, - "vue-class-component": { - "version": "7.2.3", - "dev": true, - "requires": {} - }, - "vue-eslint-parser": { - "version": "7.11.0", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "dev": true - }, - "vue-jest": { - "version": "3.0.7", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", - "chalk": "^2.1.0", - "deasync": "^0.1.15", - "extract-from-css": "^0.4.4", - "find-babel-config": "^1.1.0", - "js-beautify": "^1.6.14", - "node-cache": "^4.1.1", - "object-assign": "^4.1.1", - "source-map": "^0.5.6", - "tsconfig": "^7.0.0", - "vue-template-es2015-compiler": "^1.6.0" - } - }, - "vue-loader": { - "version": "15.9.8", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "dev": true - } - } - }, - "vue-property-decorator": { - "version": "8.4.1", - "dev": true, - "requires": { - "vue-class-component": "^7.1.0" - } - }, - "vue-runtime-helpers": { - "version": "1.1.2", - "dev": true - }, - "vue-style-loader": { - "version": "4.1.3", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "dev": true - } - } - }, - "vue-template-compiler": { - "version": "2.6.11", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.7", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "watchpack": { - "version": "1.7.5", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "dev": true, - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "version": "2.2.1", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "dev": true - }, - "webpack": { - "version": "4.46.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "eslint-scope": { - "version": "4.0.3", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "3.9.0", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "dev": true - }, - "ws": { - "version": "6.2.2", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "webpack-chain": { - "version": "6.5.1", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "dependencies": { - "deepmerge": { - "version": "1.5.2", - "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.11.2", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "version": "2.2.1", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "ws": { - "version": "6.2.2", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "dev": true - }, - "with": { - "version": "7.0.2", - "dev": true, - "optional": true, - "requires": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - } - }, - "word-wrap": { - "version": "1.2.3", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "worker-rpc": { - "version": "0.1.1", - "dev": true, - "requires": { - "microevent.ts": "~0.1.1" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "dev": true - }, - "write": { - "version": "1.0.3", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.4.1", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.3", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - } - } - }, - "yorkie": { - "version": "2.0.0", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "normalize-path": { - "version": "1.0.0", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "dev": true - } - } - } - } -} diff --git a/packages/oruga/package.json b/packages/oruga/package.json deleted file mode 100644 index 21acfa7a4..000000000 --- a/packages/oruga/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "name": "@oruga-ui/oruga", - "version": "0.7.0", - "homepage": "https://oruga.io", - "description": "UI components for Vue.js and CSS framework agnostic", - "author": "Walter Tommasi <tommsi20@gmail.com>", - "license": "MIT", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.mjs", - "unpkg": "dist/oruga.min.js", - "typings": "types/index.d.ts", - "files": [ - "dist", - "src", - "nuxt", - "types/*.d.ts" - ], - "sideEffects": [ - "*.css", - "*.scss" - ], - "repository": { - "type": "git", - "url": "https://github.com/oruga-ui/oruga.git" - }, - "bugs": { - "url": "https://github.com/oruga-ui/oruga/issues" - }, - "scripts": { - "ci": "npm run lint && cross-env NODE_ICU_DATA=node_modules/full-icu node --expose-gc ./node_modules/.bin/jest --logHeapUsage -u", - "lint": "eslint --ext .js,.vue src", - "lint:fix": "eslint --ext .js,.vue src --fix", - "lint:staged": "lint-staged", - "unit": "cross-env NODE_ICU_DATA=node_modules/full-icu jest --u", - "test": "npm run lint && npm run unit", - "test:watch": "npm run unit -- --watchAll", - "build:vue": "rollup -c && rollup -c --environment MINIFY", - "build:vue:watch": "rollup -c --watch", - "build:style": "npm run build:scss && npm run build:scss-vars && npm run build:scss-full", - "build:scss-vars": "sass --no-charset src/scss/oruga-full-vars.scss | node ./build/banner.js > dist/oruga-full-vars.css && cleancss -o dist/oruga-full-vars.min.css dist/oruga-full-vars.css", - "build:scss-full": "sass --no-charset src/scss/oruga-full.scss | node ./build/banner.js > dist/oruga-full.css && cleancss -o dist/oruga-full.min.css dist/oruga-full.css", - "build:scss": "sass --no-charset src/scss/oruga.scss | node ./build/banner.js > dist/oruga.css && cleancss -o dist/oruga.min.css dist/oruga.css", - "build:style:watch": "concurrently \"sass src/scss/oruga-full-vars.scss dist/oruga-full-vars.css --watch\" \"sass src/scss/oruga.scss dist/oruga.css --watch\"", - "build:lib": "rimraf dist && npm run build:vue && npm run build:style", - "build:lib:watch": "npm link && concurrently \"npm run build:vue:watch\" \"npm run build:style:watch\"", - "publish:lib": "cp ../../README.md . && npm run build:lib && npm publish" - }, - "keywords": [ - "oruga", - "vue", - "vuejs", - "components", - "ux", - "ui", - "css", - "agnostic", - "framework" - ], - "peerDependencies": { - "vue": "^2.6.11" - }, - "devDependencies": { - "@babel/core": "7.10.2", - "@babel/preset-env": "7.10.2", - "@rollup/plugin-babel": "5.0.2", - "@rollup/plugin-commonjs": "12.0.0", - "@rollup/plugin-node-resolve": "8.0.0", - "@rollup/plugin-replace": "2.3.2", - "@types/jest": "24.0.19", - "@typescript-eslint/eslint-plugin": "2.26.0", - "@typescript-eslint/parser": "2.26.0", - "@vue/cli-plugin-babel": "4.3.0", - "@vue/cli-plugin-eslint": "4.3.0", - "@vue/cli-plugin-typescript": "4.3.0", - "@vue/cli-plugin-unit-jest": "4.3.0", - "@vue/cli-service": "4.3.0", - "@vue/eslint-config-typescript": "5.0.2", - "@vue/test-utils": "1.0.0-beta.31", - "clean-css-cli": "4.3.0", - "codecov": "3.7.2", - "concurrently": "5.2.0", - "core-js": "3.6.5", - "cross-env": "7.0.3", - "eslint": "6.7.2", - "eslint-plugin-vue": "6.2.2", - "full-icu": "1.3.1", - "jest-serializer-vue": "0.3.0", - "rollup": "2.12.0", - "rollup-copy-plugin": "0.1.0", - "rollup-plugin-terser": "6.1.0", - "rollup-plugin-vue": "5.1.9", - "sass": "1.27.0", - "sinon": "9.0.3", - "typescript": "3.8.3", - "vue": "2.6.11", - "vue-class-component": "7.2.3", - "vue-property-decorator": "8.4.1", - "vue-template-compiler": "2.6.11" - }, - "dependencies": {} -} diff --git a/packages/oruga/rollup.config.js b/packages/oruga/rollup.config.js deleted file mode 100644 index 73dd94543..000000000 --- a/packages/oruga/rollup.config.js +++ /dev/null @@ -1,142 +0,0 @@ -import vue from 'rollup-plugin-vue' -import node from '@rollup/plugin-node-resolve' -import cjs from '@rollup/plugin-commonjs' -import babel from '@rollup/plugin-babel' -import { terser } from 'rollup-plugin-terser' - -import fs from 'fs' -import path from 'path' - -import pack from './package.json' - -const bannerText = require('./build/bannertext') - -const bannerTxt = bannerText.generate(pack.version) - -const baseFolder = './src/components/' - -const components = fs - .readdirSync(baseFolder) - .filter((f) => - fs.statSync(path.join(baseFolder, f)).isDirectory() - ) - -const entries = { - 'index': './src/index.js', - 'helpers': './src/utils/helpers.js', - 'config': './src/utils/config.js', - ...components.reduce((obj, name) => { - obj[name] = (baseFolder + name) - return obj - }, {}) -} - -const babelOptions = { - babelHelpers: 'bundled' -} - -const vuePluginConfig = { - template: { - isProduction: true, - compilerOptions: { - whitespace: 'condense' - } - } -} - -const capitalize = (s) => { - if (typeof s !== 'string') return '' - return s.charAt(0).toUpperCase() + s.slice(1) -} - -export default () => { - let config = [ - { - input: entries, - external: ['vue'], - output: { - format: 'esm', - dir: `dist/esm`, - entryFileNames: '[name].mjs', - chunkFileNames: '[name]-[hash].mjs', - }, - plugins: [ - node({ - extensions: ['.vue', '.js'] - }), - vue(vuePluginConfig), - babel(babelOptions), - cjs() - ] - }, - { - input: entries, - external: ['vue'], - output: { - format: 'cjs', - dir: 'dist/cjs', - exports: 'named' - }, - plugins: [ - node({ - extensions: ['.vue', '.js'] - }), - vue(vuePluginConfig), - babel(babelOptions), - cjs() - ] - }, - { - input: 'src/index.js', - external: ['vue'], - output: { - format: 'umd', - name: capitalize('oruga'), - file: 'dist/oruga.js', - exports: 'named', - banner: bannerTxt, - globals: { - vue: 'Vue' - } - }, - plugins: [ - node({ - extensions: ['.vue', '.js'] - }), - vue(vuePluginConfig), - babel(babelOptions), - cjs() - ] - }, - { - input: 'src/index.js', - external: ['vue'], - output: { - format: 'esm', - file: 'dist/oruga.mjs', - banner: bannerTxt - }, - plugins: [ - node({ - extensions: ['.vue', '.js'] - }), - vue(vuePluginConfig), - babel(babelOptions), - cjs() - ] - } - ] - - if (process.env.MINIFY === 'true') { - config = config.filter((c) => !!c.output.file) - config.forEach((c) => { - c.output.file = c.output.file.replace(/\.m?js/g, r => `.min${r}`) - c.plugins.push(terser({ - output: { - comments: '/^!/' - } - })) - }) - } - return config -} diff --git a/packages/oruga/src/components/autocomplete/Autocomplete.spec.js b/packages/oruga/src/components/autocomplete/Autocomplete.spec.js deleted file mode 100644 index e4779cf16..000000000 --- a/packages/oruga/src/components/autocomplete/Autocomplete.spec.js +++ /dev/null @@ -1,292 +0,0 @@ -import { mount } from '@vue/test-utils' -import OAutocomplete from '@components/autocomplete/Autocomplete' - -const findStringsStartingWith = (array, value) => - array.filter((x) => x.startsWith(value)) - -const DATA_LIST = [ - 'Angular', - 'Angular 2', - 'Aurelia', - 'Backbone', - 'Ember', - 'jQuery', - 'Meteor', - 'Node.js', - 'Polymer', - 'React', - 'RxJS', - 'Vue.js' -] -const dropdownMenu = '.o-acp__menu' -let wrapper, $input, $dropdown, stubs - -describe('OAutocomplete', () => { - beforeEach(() => { - stubs = {'o-icon': true} - wrapper = mount(OAutocomplete, {stubs}) - - $input = wrapper.find('input') - $dropdown = wrapper.find(dropdownMenu) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('has a dropdown menu hidden by default', () => { - expect(wrapper.contains(dropdownMenu)).toBeTruthy() - expect($dropdown.isVisible()).toBeFalsy() - }) - - it('can emit input, focus and blur events', async () => { - const VALUE_TYPED = 'test' - wrapper.setProps({ data: DATA_LIST }) - - $input.trigger('focus') - expect(wrapper.emitted()['focus']).toBeTruthy() - $input.setValue(VALUE_TYPED) - - await wrapper.vm.$nextTick() - - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(VALUE_TYPED) - - $input.trigger('blur') - expect(wrapper.emitted()['blur']).toBeTruthy() - }) - - it('can autocomplete with keydown', async () => { - const VALUE_TYPED = 'Ang' - wrapper.setProps({ data: DATA_LIST }) - - $input.trigger('focus') - $input.setValue(VALUE_TYPED) - await wrapper.vm.$nextTick() - - expect(wrapper.vm.isActive).toBeTruthy() - - const itemsInDropdown = findStringsStartingWith(DATA_LIST, VALUE_TYPED) - - $input.trigger('keydown', {'key': 'Down'}) - $input.trigger('keydown', {'key': 'Enter'}) - await wrapper.vm.$nextTick() - - expect($input.element.value).toBe(itemsInDropdown[0]) - expect(wrapper.vm.isActive).toBeFalsy() - }) - - it('close dropdown on esc', async () => { - jest.useFakeTimers() - wrapper.setProps({ data: DATA_LIST }) - - wrapper.vm.isActive = true - await wrapper.vm.$nextTick() - expect(wrapper.vm.isActive).toBeTruthy() - - $input.trigger('keydown', {'key': 'Escape'}) - await wrapper.vm.$nextTick() - - expect(wrapper.vm.isActive).toBeFalsy() - - wrapper.vm.calcDropdownInViewportVertical = jest.fn( - () => wrapper.vm.calcDropdownInViewportVertical - ) - jest.runAllTimers() - expect(wrapper.vm.calcDropdownInViewportVertical).toHaveBeenCalled() - jest.useRealTimers() - }) - - it('close dropdown on click outside', async () => { - wrapper.setProps({ data: DATA_LIST }) - - wrapper.vm.isActive = true - await wrapper.vm.$nextTick() - expect(wrapper.vm.isActive).toBeTruthy() - - window.document.body.click() - await wrapper.vm.$nextTick() - - expect(wrapper.vm.isActive).toBeFalsy() - }) - - it('open dropdown on down key click', async () => { - wrapper.setProps({ data: DATA_LIST }) - - expect(wrapper.vm.isActive).toBeFalsy() - - $input.trigger('focus') - $input.trigger('keydown', {'key': 'Down'}) - await wrapper.vm.$nextTick() - - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('manages tab pressed as expected', async () => { - // hovered is null - $input.trigger('keydown', {'key': 'Tab'}) - await wrapper.vm.$nextTick() - expect($dropdown.isVisible()).toBeFalsy() - - // The first element will be hovered - wrapper.setProps({ - openOnFocus: true, - keepFirst: true - }) - wrapper.setProps({ - data: DATA_LIST - }) - // Set props in 2 steps to trigger Watch with keepFirst true so the 1st element is hovered - - $input.trigger('focus') - await wrapper.vm.$nextTick() - - $input.trigger('keydown', {'key': 'Tab'}) - await wrapper.vm.$nextTick() - expect($input.element.value).toBe(DATA_LIST[0]) - }) - - it('can openOnFocus and keepFirst', async () => { - wrapper.setProps({ - openOnFocus: true, - keepFirst: true - }) - wrapper.setProps({ - data: DATA_LIST - }) // Set props in 2 steps to trigger the Watch for data having keepFirst true - - expect($dropdown.isVisible()).toBeFalsy() - - $input.trigger('focus') - await wrapper.vm.$nextTick() - - expect($dropdown.isVisible()).toBeTruthy() - - expect(wrapper.vm.hovered).toBe(DATA_LIST[0]) - }) - - it('reset events before destroy', () => { - document.removeEventListener = jest.fn() - window.removeEventListener = jest.fn() - - wrapper.destroy() - - expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function)) - expect(window.removeEventListener).toBeCalledWith('resize', expect.any(Function)) - }) - - it('clear button does not exist when the search input is empty', async () => { - wrapper.setData({newValue: ''}) - wrapper.setProps({ clearable: true }) - await wrapper.vm.$nextTick() - - const subject = wrapper.find('o-icon-stub').exists() - expect(subject).toBeFalsy() - }) - - it('clear button exists when the search input is not empty and clearable property is true', async () => { - wrapper.setData({ newValue: 'Jquery' }) - wrapper.setProps({ clearable: true }) - await wrapper.vm.$nextTick() - - const subject = wrapper.find('o-icon-stub').exists() - expect(subject).toBeTruthy() - }) - - it('clears search input text when clear button gets clicked', async () => { - wrapper.setData({newValue: 'Jquery'}) - wrapper.setProps({ clearable: true }) - await wrapper.vm.$nextTick() - - wrapper.find('o-icon-stub').trigger('click') - const subject = wrapper.vm.newValue - expect(subject).toEqual('') - }) - - it('clear button does not appear when clearable property is not set to true', () => { - wrapper.setData({newValue: 'Jquery'}) - const subject = wrapper.find('o-icon-stub').exists() - - expect(subject).toBeFalsy() - }) - - it('can emit select-header by keyboard and click', async () => { - const VALUE_TYPED = 'test' - const wrapper = mount(OAutocomplete, { - propsData: { - checkInfiniteScroll: true, - selectableHeader: true, - selectableFooter: true - }, - slots: { - header: '<h1>SLOT HEADER</h1>', - footer: '<h1>SLOT FOOTER</h1>' - }, - stubs - }) - const $input = wrapper.find('input') - - $input.trigger('focus') - $input.setValue(VALUE_TYPED) - await wrapper.vm.$nextTick() - - $input.trigger('keydown', {'key': 'Down'}) - $input.trigger('keydown', {'key': 'Enter'}) - await wrapper.vm.$nextTick() - - const $header = wrapper.find('.o-acp__item-header') - $header.trigger('click') - await wrapper.vm.$nextTick() - - const emitted = wrapper.emitted() - - expect(emitted['select-header']).toBeTruthy() - expect(emitted['select-header']).toHaveLength(2) - }) - - it('can emit select-footer by keyboard and click', async () => { - const VALUE_TYPED = 'test' - const wrapper = mount(OAutocomplete, { - propsData: { - checkInfiniteScroll: true, - selectableHeader: true, - selectableFooter: true - }, - slots: { - header: '<h1>SLOT HEADER</h1>', - footer: '<h1>SLOT FOOTER</h1>' - }, - stubs - }) - const $input = wrapper.find('input') - - $input.trigger('focus') - $input.setValue(VALUE_TYPED) - await wrapper.vm.$nextTick() - - $input.trigger('keydown', {'key': 'Down'}) - $input.trigger('keydown', {'key': 'Down'}) - $input.trigger('keydown', {'key': 'Enter'}) - $input.trigger('blur') - await wrapper.vm.$nextTick() - - const $footer = wrapper.find('.o-acp__item-footer') - $footer.trigger('click') - await wrapper.vm.$nextTick() - - const emitted = wrapper.emitted() - - expect(emitted['select-footer']).toBeTruthy() - expect(emitted['select-footer']).toHaveLength(2) - }), - - it('has configurable menu and item tags', () => { - wrapper.setProps({menuTag: 'ul', itemTag: 'li'}) - wrapper.find('ul.o-acp__menu').exists() - wrapper.find('li.o-acp__item').exists() - }) -}) diff --git a/packages/oruga/src/components/autocomplete/Autocomplete.vue b/packages/oruga/src/components/autocomplete/Autocomplete.vue deleted file mode 100644 index cf403df88..000000000 --- a/packages/oruga/src/components/autocomplete/Autocomplete.vue +++ /dev/null @@ -1,835 +0,0 @@ -<template> - <div :class="rootClasses"> - <o-input - v-model="newValue" - ref="input" - :type="type" - v-bind="inputBind" - :size="size" - :rounded="rounded" - :icon="icon" - :icon-right="newIconRight" - :icon-right-clickable="newIconRightClickable" - :icon-pack="iconPack" - :maxlength="maxlength" - :autocomplete="newAutocomplete" - :use-html5-validation="false" - :aria-autocomplete="ariaAutocomplete" - :expanded="expanded" - @input="onInput" - @focus="focused" - @blur="onBlur" - @invalid="onInvalid" - @keydown.native="keydown" - @keydown.native.up.prevent="keyArrows('up')" - @keydown.native.down.prevent="keyArrows('down')" - @icon-right-click="rightIconClick" - @icon-click="(event) => $emit('icon-click', event)" - /> - - <transition :name="animation"> - <div - :is="menuTag" - :class="menuClasses" - v-show="isActive && (!isEmpty || $slots.empty || $slots.header || $slots.footer)" - :style="menuStyle" - ref="dropdown"> - <div - v-if="$slots.header" - :is="itemTag" - ref="header" - role="button" - tabindex="0" - @click="selectHeaderOrFoterByClick($event, 'header')" - :class="itemHeaderClasses"> - <slot name="header"/> - </div> - <template v-for="(element, groupindex) in computedData"> - <div - v-if="element.group" - :key="groupindex + 'group'" - :is="itemTag" - :class="itemGroupClasses"> - <slot - v-if="$scopedSlots.group" - name="group" - :group="element.group" - :index="groupindex" /> - <span v-else> - {{ element.group }} - </span> - </div> - <div - v-for="(option, index) in element.items" - :is="itemTag" - :key="groupindex + ':' + index" - :class="itemOptionClasses(option)" - @click.stop="setSelected(option, !keepOpen, $event)" - ref="items" - > - <slot - v-if="$scopedSlots.default" - :option="option" - :index="index" /> - <span v-else> - {{ getValue(option) }} - </span> - </div> - </template> - <div - v-if="isEmpty && $slots.empty" - :is="itemTag" - :class="itemEmptyClasses"> - <slot name="empty" /> - </div> - <div - v-if="$slots.footer" - :is="itemTag" - ref="footer" - role="button" - tabindex="0" - @click="selectHeaderOrFoterByClick($event, 'footer')" - :class="itemFooterClasses"> - <slot name="footer"/> - </div> - </div> - </transition> - </div> -</template> - -<script> -import Input from '../input/Input' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import FormElementMixin from '../../utils/FormElementMixin' -import { getValueByPath, removeElement, createAbsoluteElement, toCssDimension, debounce } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -/** - * Extended input that provide suggestions while the user types - * @displayName Autocomplete - * @example ./examples/Autocomplete.md - * @style _autocomplete.scss - */ -export default { - name: 'OAutocomplete', - configField: 'autocomplete', - components: { - [Input.name]: Input - }, - mixins: [BaseComponentMixin, FormElementMixin], - inheritAttrs: false, - props: { - /** @model */ - value: [Number, String], - /** Options / suggestions */ - data: { - type: Array, - default: () => [] - }, - /** - * Vertical size of input, optional - * @values small, medium, large - */ - size: String, - /** Property of the object (if data is array of objects) to use as display text, and to keep track of selected option */ - field: { - type: String, - default: 'value' - }, - /** The first option will always be pre-selected (easier to just hit enter or tab) */ - keepFirst: Boolean, - /** Clear input text on select */ - clearOnSelect: Boolean, - /** Open dropdown list on focus */ - openOnFocus: Boolean, - /** Function to format an option to a string for display in the input as alternative to field prop) */ - customFormatter: Function, - /** Makes the component check if list reached scroll end and emit infinite-scroll event. */ - checkInfiniteScroll: Boolean, - /** Keep open dropdown list after select */ - keepOpen: Boolean, - /** Add a button/icon to clear the inputed text */ - clearable: Boolean, - /** - * Icon name to be added on the clear button - */ - clearIcon: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'autocomplete.clearIcon', 'close-circle') - } - }, - /** Max height of dropdown content */ - maxHeight: [String, Number], - /** - * Position of dropdown - * @values auto, top, bottom - */ - menuPosition: { - type: String, - default: 'auto' - }, - /** Transition name to apply on dropdown list */ - animation: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'autocomplete.animation', 'fade') - } - }, - /** Property of the object (if <code>data</code> is array of objects) to use as display text of group */ - groupField: String, - /** Property of the object (if <code>data</code> is array of objects) to use as key to get items array of each group, optional */ - groupOptions: String, - /** Number of milliseconds to delay before to emit typing event */ - debounceTyping: Number, - /** Icon name to be added on the right side */ - iconRight: String, - /** Clickable icon right if exists */ - iconRightClickable: Boolean, - /** Append autocomplete content to body */ - appendToBody: Boolean, - /** Array of keys (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) which will add a tag when typing (default tab and enter) */ - confirmKeys: { - type: Array, - default: () => ['Tab', 'Enter'] - }, - /** Input type */ - type: { - type: String, - default: 'text' - }, - /** - * Menu tag name - */ - menuTag: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'autocomplete.menuTag', 'div') - } - }, - /** - * Menu item tag name - */ - itemTag: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'autocomplete.itemTag', 'div') - } - }, - /** Trigger the select event for the first pre-selected option when clicking outside and <code>keep-first</code> is enabled */ - selectOnClickOutside: Boolean, - /** Allows the header in the autocomplete to be selectable */ - selectableHeader: Boolean, - /** Allows the footer in the autocomplete to be selectable */ - selectableFooter: Boolean, - rootClass: [String, Function, Array], - menuClass: [String, Function, Array], - expandedClass: [String, Function, Array], - menuPositionClass: [String, Function, Array], - itemClass: [String, Function, Array], - itemHoverClass: [String, Function, Array], - itemGroupTitleClass: [String, Function, Array], - itemEmptyClass: [String, Function, Array], - itemHeaderClass: [String, Function, Array], - itemFooterClass: [String, Function, Array], - inputClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'autocomplete.inputClasses', {}) - } - } - }, - data() { - return { - selected: null, - hovered: null, - headerHovered: null, - footerHovered: null, - isActive: false, - newValue: this.value, - ariaAutocomplete: this.keepFirst ? 'both' : 'list', - newAutocomplete: this.autocomplete || 'off', - isListInViewportVertically: true, - hasFocus: false, - width: undefined, - bodyEl: undefined, // Used to append to body - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-acp'), - { [this.computedClass('expandedClass', 'o-acp--expanded')]: this.expanded } - ] - }, - menuClasses() { - return [ - this.computedClass('menuClass', 'o-acp__menu'), - { [this.computedClass('menuPositionClass', 'o-acp__menu--', this.newDropdownPosition)]: !this.appendToBody }, - ] - }, - itemClasses() { - return [ - this.computedClass('itemClass', 'o-acp__item') - ] - }, - itemEmptyClasses() { - return [ - ...this.itemClasses, - this.computedClass('itemEmptyClass', 'o-acp__item--empty') - ] - }, - itemGroupClasses() { - return [ - ...this.itemClasses, - this.computedClass('itemGroupTitleClass', 'o-acp__item-group-title') - ] - }, - itemHeaderClasses() { - return [ - ...this.itemClasses, - this.computedClass('itemHeaderClass', 'o-acp__item-header'), - { [this.computedClass('itemHoverClass', 'o-acp__item--hover')]: this.headerHovered } - ] - }, - itemFooterClasses() { - return [ - ...this.itemClasses, - this.computedClass('itemFooterClass', 'o-acp__item-footer'), - { [this.computedClass('itemHoverClass', 'o-acp__item--hover')]: this.footerHovered } - ] - }, - inputBind() { - return { - ...this.$attrs, - ...this.inputClasses - } - }, - computedData() { - if (this.groupField) { - if (this.groupOptions) { - const newData = [] - this.data.forEach((option) => { - const group = getValueByPath(option, this.groupField) - const items = getValueByPath(option, this.groupOptions) - newData.push({ group, items }) - }) - return newData - } else { - const tmp = {} - this.data.forEach((option) => { - const group = getValueByPath(option, this.groupField) - if (!tmp[group]) tmp[group] = [] - tmp[group].push(option) - }) - const newData = [] - Object.keys(this.data).forEach((group) => { - newData.push({ group, items: this.data[group] }) - }) - return newData - } - } - return [{ items: this.data }] - }, - isEmpty() { - if (!this.computedData) return true - return !this.computedData.some((element) => element.items && element.items.length) - }, - /** - * White-listed items to not close when clicked. - * Add input, dropdown and all children. - */ - whiteList() { - const whiteList = [] - whiteList.push(this.$refs.input.$el.querySelector('input')) - whiteList.push(this.$refs.dropdown) - // Add all children from dropdown - if (this.$refs.dropdown !== undefined) { - const children = this.$refs.dropdown.querySelectorAll('*') - for (const child of children) { - whiteList.push(child) - } - } - return whiteList - }, - - newDropdownPosition() { - if (this.menuPosition === 'top' || (this.menuPosition === 'auto' && !this.isListInViewportVertically)) { - return 'top' - } - return 'bottom' - }, - - newIconRight() { - if (this.clearable && this.newValue && this.clearIcon) { - return this.clearIcon - } - return this.iconRight - }, - - newIconRightClickable() { - if (this.clearable) { - return true - } - return this.iconRightClickable - }, - - menuStyle() { - return { - maxHeight: toCssDimension(this.maxHeight), - width: toCssDimension(this.width), - } - }, - - $elementRef() { - return 'input' - } - }, - watch: { - /** - * When v-model is changed: - * 1. Update internal value. - * 2. If it's invalid, validate again. - */ - value(value) { - this.newValue = value - }, - - /** - * When dropdown is toggled, check the visibility to know when - * to open upwards. - */ - isActive(active) { - if (this.menuPosition === 'auto') { - if (active) { - this.calcDropdownInViewportVertical() - } else { - // Timeout to wait for the animation to finish before recalculating - setTimeout(() => { - this.calcDropdownInViewportVertical() - }, 100) - } - } - }, - - /** - * When updating input's value - * 1. Emit changes - * 2. If value isn't the same as selected, set null - * 3. Close dropdown if value is clear or else open it - */ - newValue(value) { - this.$emit('input', value) - // Check if selected is invalid - const currentValue = this.getValue(this.selected) - if (currentValue && currentValue !== value) { - this.setSelected(null, false) - } - // Close dropdown if input is clear or else open it - if (this.hasFocus && (!this.openOnFocus || value)) { - this.isActive = !!value - } - }, - - /** - * Select first option if "keep-first - */ - data() { - // Keep first option always pre-selected - if (this.keepFirst) { - this.$nextTick(() => { - if (this.isActive) { - this.selectFirstOption(this.computedData) - } else { - this.setHovered(null) - } - }) - } else { - if (this.hovered) { - // reset hovered if list doesn't contain it - const hoveredValue = this.getValue(this.hovered) - const data = this.computedData.map((d) => d.items).reduce((a, b) => ([...a, ...b]), []) - if (!data.some(d => this.getValue(d) === hoveredValue)) { - this.setHovered(null) - } - } - } - }, - - debounceTyping: { - handler(value) { - this.debouncedEmitTyping = debounce(this.emitTyping, value) - }, - immediate: true - } - }, - methods: { - itemOptionClasses(option) { - return [ - ...this.itemClasses, - { [this.computedClass('itemHoverClass', 'o-acp__item--hover')]: option === this.hovered } - ] - }, - - /** - * Set which option is currently hovered. - */ - setHovered(option) { - if (option === undefined) return - - this.hovered = option - }, - - /** - * Set which option is currently selected, update v-model, - * update input value and close dropdown. - */ - setSelected(option, closeDropdown = true, event = undefined) { - if (option === undefined) return - this.selected = option - /** - * @property {Object} selected selected option - * @property {Event} event native event - */ - this.$emit('select', this.selected, event) - if (this.selected !== null) { - if (this.clearOnSelect) { - const input = this.$refs.input - input.newValue = '' - input.$refs.input.value = '' - } else { - this.newValue = this.getValue(this.selected) - } - this.setHovered(null) - } - closeDropdown && this.$nextTick(() => { this.isActive = false }) - this.checkValidity() - }, - - /** - * Select first option - */ - selectFirstOption(computedData) { - this.$nextTick(() => { - const nonEmptyElements = computedData.filter( - (element) => element.items && element.items.length - ) - if (nonEmptyElements.length) { - const option = nonEmptyElements[0].items[0] - this.setHovered(option) - } else { - this.setHovered(null) - } - }) - }, - - /** - * Key listener. - * Select the hovered option. - */ - keydown(event) { - const { key } = event // cannot destructure preventDefault (https://stackoverflow.com/a/49616808/2774496) - // prevent emit submit event - if (key === 'Enter') event.preventDefault() - // Close dropdown on Tab & no hovered - if (key === 'Escape' || key === 'Tab') { - this.isActive = false - } - if (this.confirmKeys.indexOf(key) >= 0) { - // If adding by comma, don't add the comma to the input - if (key === ',') event.preventDefault() - // Close dropdown on select by Tab - const closeDropdown = !this.keepOpen || key === 'Tab' - if (this.hovered === null) { - // header and footer uses headerHovered && footerHovered. If header or footer - // was selected then fire event otherwise just return so a value isn't selected - this.checkIfHeaderOrFooterSelected(event, null, closeDropdown) - return - } - this.setSelected(this.hovered, closeDropdown, event) - } - }, - - selectHeaderOrFoterByClick(event, origin) { - this.checkIfHeaderOrFooterSelected(event, {origin: origin}) - }, - - /** - * Check if header or footer was selected. - */ - checkIfHeaderOrFooterSelected(event, triggerClick, closeDropdown = true) { - if (this.selectableHeader && (this.headerHovered || (triggerClick && triggerClick.origin === 'header'))) { - this.$emit('select-header', event) - this.headerHovered = false - if (triggerClick) this.setHovered(null) - if (closeDropdown) this.isActive = false - } - if (this.selectableFooter && (this.footerHovered || (triggerClick && triggerClick.origin === 'footer'))) { - this.$emit('select-footer', event) - this.footerHovered = false - if (triggerClick) this.setHovered(null) - if (closeDropdown) this.isActive = false - } - }, - - /** - * Close dropdown if clicked outside. - */ - clickedOutside(event) { - if (!this.hasFocus && this.whiteList.indexOf(event.target) < 0) { - if (this.keepFirst && this.hovered && this.selectOnClickOutside) { - this.setSelected(this.hovered, true) - } else { - this.isActive = false - } - } - }, - - /** - * Return display text for the input. - * If object, get value from path, or else just the value. - */ - getValue(option) { - if (option === null) return - - if (typeof this.customFormatter !== 'undefined') { - return this.customFormatter(option) - } - return typeof option === 'object' - ? getValueByPath(option, this.field) - : option - }, - - /** - * Check if the scroll list inside the dropdown - * reached it's end. - */ - checkIfReachedTheEndOfScroll() { - const list = this.$refs.dropdown - const footerHeight = this.$slots.footer ? this.$refs.footer.clientHeight : 0 - if (list.clientHeight !== list.scrollHeight && - list.scrollTop + list.clientHeight + footerHeight >= list.scrollHeight - ) { - this.$emit('infinite-scroll') - } - }, - - /** - * Calculate if the dropdown is vertically visible when activated, - * otherwise it is openened upwards. - */ - calcDropdownInViewportVertical() { - this.$nextTick(() => { - /** - * this.$refs.dropdown may be undefined - * when Autocomplete is conditional rendered - */ - if (this.$refs.dropdown === undefined) return - - const rect = this.$refs.dropdown.getBoundingClientRect() - - this.isListInViewportVertically = ( - rect.top >= 0 && - rect.bottom <= (window.innerHeight || - document.documentElement.clientHeight) - ) - if (this.appendToBody) { - this.updateAppendToBody() - } - }) - }, - - /** - * Arrows keys listener. - * If dropdown is active, set hovered option, or else just open. - */ - keyArrows(direction) { - const sum = direction === 'down' ? 1 : -1 - if (this.isActive) { - const data = this.computedData.map( - (d) => d.items).reduce((a, b) => ([...a, ...b]), []) - - if (this.$slots.header && this.selectableHeader) { - data.unshift(undefined) - } - if (this.$slots.footer && this.selectableFooter) { - data.push(undefined) - } - let index - if (this.headerHovered) { - index = 0 + sum - } else if (this.footerHovered) { - index = (data.length - 1) + sum - } else { - index = data.indexOf(this.hovered) + sum - } - - index = index > data.length - 1 ? data.length - 1 : index - index = index < 0 ? 0 : index - - this.footerHovered = false - this.headerHovered = false - this.setHovered(data[index] !== undefined ? data[index] : null) - if (this.$slots.footer && this.selectableFooter && index === data.length - 1) { - this.footerHovered = true - } - if (this.$slots.header && this.selectableHeader && index === 0) { - this.headerHovered = true - } - - const list = this.$refs.dropdown - let items = this.$refs.items || [] - - if (this.$slots.header && this.selectableHeader) { - items = [this.$refs.header, ...items] - } - if (this.$slots.footer && this.selectableFooter) { - items = [...items, this.$refs.footer] - } - const element = items[index] - - if (!element) return - - const visMin = list.scrollTop - const visMax = list.scrollTop + list.clientHeight - element.clientHeight - - if (element.offsetTop < visMin) { - list.scrollTop = element.offsetTop - } else if (element.offsetTop >= visMax) { - list.scrollTop = ( - element.offsetTop - - list.clientHeight + - element.clientHeight - ) - } - } else { - this.isActive = true - } - }, - - /** - * Focus listener. - * If value is the same as selected, select all text. - */ - focused(event) { - if (this.getValue(this.selected) === this.newValue) { - this.$el.querySelector('input').select() - } - if (this.openOnFocus) { - this.isActive = true - if (this.keepFirst) { - // If open on focus, update the hovered - this.selectFirstOption(this.computedData) - } - } - this.hasFocus = true - this.$emit('focus', event) - }, - - /** - * Blur listener. - */ - onBlur(event) { - this.hasFocus = false - this.$emit('blur', event) - }, - onInput() { - const currentValue = this.getValue(this.selected) - if (currentValue && currentValue === this.newValue) return - if (this.debounceTyping) { - this.debouncedEmitTyping() - } else { - this.emitTyping() - } - }, - emitTyping() { - this.$emit('typing', this.newValue) - this.checkValidity() - }, - rightIconClick(event) { - if (this.clearable) { - this.newValue = '' - this.setSelected(null, false) - if (this.openOnFocus) { - this.$refs.input.$el.focus() - } - } else { - this.$emit('icon-right-click', event) - } - }, - checkValidity() { - if (this.useHtml5Validation) { - this.$nextTick(() => { - this.checkHtml5Validity() - }) - } - }, - updateAppendToBody() { - const dropdownMenu = this.$refs.dropdown - const trigger = this.$refs.input.$el - if (dropdownMenu && trigger) { - // update wrapper dropdown - const root = this.$data.bodyEl - root.classList.forEach((item) => root.classList.remove(...item.split(' '))) - this.rootClasses.forEach((item) => { - if (item) { - if (typeof item === 'object') { - Object.keys(item).filter(key => key && item[key]).forEach( - key => root.classList.add(key)) - } else { - root.classList.add(...item.split(' ')) - } - } - }) - const rect = trigger.getBoundingClientRect() - let top = rect.top + window.scrollY - const left = rect.left + window.scrollX - if (this.newDropdownPosition !== 'top') { - top += trigger.clientHeight - } else { - top -= dropdownMenu.clientHeight - } - dropdownMenu.style.position = 'absolute' - dropdownMenu.style.top = `${top}px` - dropdownMenu.style.left = `${left}px` - dropdownMenu.style.width = `${trigger.clientWidth}px` - dropdownMenu.style.maxWidth = `${trigger.clientWidth}px` - dropdownMenu.style.zIndex = '9999' - } - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('click', this.clickedOutside) - if (this.menuPosition === 'auto') window.addEventListener('resize', this.calcDropdownInViewportVertical) - } - }, - mounted() { - const list = this.$refs.dropdown - if (this.checkInfiniteScroll && list) { - list.addEventListener('scroll', this.checkIfReachedTheEndOfScroll) - } - if (this.appendToBody) { - this.$data.bodyEl = createAbsoluteElement(list) - this.updateAppendToBody() - } - }, - beforeUpdate() { - this.width = this.$refs.input ? this.$refs.input.$el.clientWidth : undefined - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('click', this.clickedOutside) - if (this.menuPosition === 'auto') window.removeEventListener('resize', this.calcDropdownInViewportVertical) - } - if (this.checkInfiniteScroll && this.$refs.dropdown) { - const list = this.$refs.dropdown - list.removeEventListener('scroll', this.checkIfReachedTheEndOfScroll) - } - if (this.appendToBody) { - removeElement(this.$data.bodyEl) - } - } -} -</script> diff --git a/packages/oruga/src/components/autocomplete/Inspector.vue b/packages/oruga/src/components/autocomplete/Inspector.vue deleted file mode 100644 index eceed4b48..000000000 --- a/packages/oruga/src/components/autocomplete/Inspector.vue +++ /dev/null @@ -1,127 +0,0 @@ -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-autocomplete v-bind="s" group-field="type" group-options="items" placeholder="e.g. Vue.js" :data="filtered" icon="search" clearable @select="option => selected = option"> - <template slot="empty">No results found</template> - <template slot="header">Header slot (optional)</template> - <template slot="footer">Footer slot (optional)</template> - </o-autocomplete> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - filtered: [ - { - type: 'Frameworks', - items: ['Vue.js'] - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "menuClass", - description: "Class of the autocomplete menu", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "expandedClass", - description: "Class of the autocomplete menu expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - }, - }, - { - class: "menuPositionClass", - description: "Class of the autocomplete menu position", - properties: ["menu-position"], - suffixes: ["auto", "top", "bottom"], - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemClass", - description: "Class of the menu items.", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemHoverClass", - description: "Class of the menu items on hover.", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40, charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false})); - setTimeout(() => { - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40, charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false})); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, keyCode : 40, charCode : 40, ctrlKey : false, altKey: false, shiftKey: false, metaKey: false})); - }, 500); - }, - }, - { - class: "itemGroupTitleClass", - description: "Class of the menu items group title.", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemEmptyClass", - description: "Class of the menu empty placeholder item", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "|", char : "|", shiftKey : true})); - }, - }, - { - class: "itemHeaderClass", - description: "Class of the menu header item", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "itemFooterClass", - description: "Class of the menu footer item", - action: (cmp) => { - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - el.dispatchEvent(new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true})); - }, - }, - { - class: "inputClasses", - realClass: "inputClasses.rootClass", - description: "Classes to apply on internal input.", - componentRef: "Input" - }, - ], - }; - } -} -</script> diff --git a/packages/oruga/src/components/autocomplete/__snapshots__/Autocomplete.spec.js.snap b/packages/oruga/src/components/autocomplete/__snapshots__/Autocomplete.spec.js.snap deleted file mode 100644 index a540ffe2f..000000000 --- a/packages/oruga/src/components/autocomplete/__snapshots__/Autocomplete.spec.js.snap +++ /dev/null @@ -1,17 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OAutocomplete render correctly 1`] = ` -<div class="o-acp"> - <div class="o-ctrl-input"><input type="text" autocomplete="off" aria-autocomplete="list" class="o-input"> - <!----> - <!----> - <!----> - </div> - <div class="o-acp__menu o-acp__menu--bottom" style="display: none;"> - <!----> - <!----> - <!----> - <!----> - </div> -</div> -`; diff --git a/packages/oruga/src/components/autocomplete/examples/Autocomplete.md b/packages/oruga/src/components/autocomplete/examples/Autocomplete.md deleted file mode 100644 index a9720bdd7..000000000 --- a/packages/oruga/src/components/autocomplete/examples/Autocomplete.md +++ /dev/null @@ -1,331 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a JS framework"> - <o-autocomplete - rounded - expanded - v-model="name" - :data="filteredDataArray" - placeholder="e.g. jQuery" - icon="search" - clearable - @select="option => selected = option"> - <template slot="empty">No results found</template> - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - 'Angular', - 'Angular 2', - 'Aurelia', - 'Backbone', - 'Ember', - 'jQuery', - 'Meteor', - 'Node.js', - 'Polymer', - 'React', - 'RxJS', - 'Vue.js' - ], - name: '', - selected: null - } - }, - computed: { - filteredDataArray() { - return this.data.filter((option) => { - return option - .toString() - .toLowerCase() - .indexOf(this.name.toLowerCase()) >= 0 - }) - } - } - } -</script> -``` -::: - -### Object array - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <o-switch v-model="openOnFocus">Open dropdown on focus</o-switch> - <o-switch v-model="keepFirst">Keep-first</o-switch> - </o-field> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a name"> - <o-autocomplete - v-model="name" - placeholder="e.g. Anne" - :keep-first="keepFirst" - :open-on-focus="openOnFocus" - :data="filteredDataObj" - field="user.first_name" - @select="option => selected = option"> - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - const data = [{"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"}, - {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"}, - {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"}, - {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"}, - {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"}, - {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"}, - {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"}, - {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"}, - {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"}, - {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"}, - {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"}, - {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"}, - {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"}, - {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"}, - {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"}, - {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"}, - {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"}, - {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"}, - {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"}, - {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"}, - {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"}, - {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"}, - {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"}, - {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"}, - {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"}, - {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"}, - {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"}, - {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"}, - {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"}, - {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"}, - {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"}, - {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"}, - {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"}, - {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"}, - {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"}, - {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"}, - {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"}, - {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"}, - {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"}, - {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"}, - {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"}, - {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"}, - {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"}, - {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"}, - {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"}, - {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"}, - {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"}, - {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"}, - {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"}, - {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"}, - {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"}, - {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"}, - {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"}, - {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"}, - {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"}, - {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"}, - {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"}, - {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"}, - {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"}, - {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"}] - - export default { - data() { - return { - data, - keepFirst: false, - openOnFocus: false, - name: '', - selected: null - } - }, - computed: { - filteredDataObj() { - return this.data.filter((option) => { - return option.user.first_name - .toString() - .toLowerCase() - .indexOf(this.name.toLowerCase()) >= 0 - }) - } - } - } -</script> -``` -::: - -### Groups - -::: demo -```html -<template> - <section> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a food"> - <o-autocomplete - v-model="name" - group-field="type" - group-options="items" - open-on-focus - :data="filteredDataObj" - field="user.first_name" - @select="option => (selected = option)" - > - </o-autocomplete> - </o-field> - </section> -</template> - -<script> -export default { - data() { - return { - data: [ - { - type: 'Fruit', - items: ['Apple', 'Banana', 'Watermelon'] - }, - { - type: 'Vegetables', - items: ['Carrot', 'Broccoli', 'Cucumber', 'Onion'] - } - ], - name: '', - selected: null - } - }, - computed: { - filteredDataObj() { - const newData = [] - this.data.forEach(element => { - const items = element.items.filter(item => - item.toLowerCase().indexOf(this.name.toLowerCase()) >= 0) - if (items.length) { - newData.push({ type: element.type, items}) - } - }) - return newData - } - } -} -</script> - 98 -``` -::: - -### Infinite Scroll - -::: demo -```html -<template> - <section> - <p class="content"><b>Selected:</b> {{ selected }}</p> - <o-field label="Find a movie"> - <o-autocomplete - :data="data" - placeholder="e.g. Fight Club" - field="title" - :loading="isFetching" - check-infinite-scroll - :debounce-typing="500" - @typing="getAsyncData" - @select="option => selected = option" - @infinite-scroll="getMoreAsyncData"> - - <template slot-scope="props"> - <div class="media"> - <div class="media-left"> - <img width="32" :src="`https://image.tmdb.org/t/p/w500/${props.option.poster_path}`"> - </div> - <div class="media-content"> - {{ props.option.title }} - <br> - <small> - Released at {{ props.option.release_date }}, - rated <b>{{ props.option.vote_average }}</b> - </small> - </div> - </div> - </template> - <template slot="footer"> - <span v-show="page > totalPages" class="has-text-grey"> Thats it! No more movies found. </span> - </template> - </o-autocomplete> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - data: [], - selected: null, - isFetching: false, - name: '', - page: 1, - totalPages: 1 - } - }, - methods: { - getAsyncData(name) { - // String update - if (this.name !== name) { - this.name = name - this.data = [] - this.page = 1 - this.totalPages = 1 - } - // String cleared - if (!name.length) { - this.data = [] - this.page = 1 - this.totalPages = 1 - return - } - // Reached last page - if (this.page > this.totalPages) { - return - } - this.isFetching = true - fetch(`https://api.themoviedb.org/3/search/movie?api_key=bb6f51bef07465653c3e553d6ab161a8&query=${name}&page=${this.page}`) - .then(response => response.json()) - .then((data) => { - data.results.forEach((item) => this.data.push(item)) - - this.page++ - this.totalPages = data.total_pages - }) - .catch((error) => { - throw error - }) - .finally(() => { - this.isFetching = false - }) - }, - getMoreAsyncData() { - this.getAsyncData(this.name) - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/autocomplete/index.js b/packages/oruga/src/components/autocomplete/index.js deleted file mode 100644 index 210b1efc9..000000000 --- a/packages/oruga/src/components/autocomplete/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Autocomplete from './Autocomplete' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Autocomplete) - } -} - -use(Plugin) - -export default Plugin - -export { - Autocomplete as OAutocomplete -} diff --git a/packages/oruga/src/components/button/Button.spec.js b/packages/oruga/src/components/button/Button.spec.js deleted file mode 100644 index 053be8339..000000000 --- a/packages/oruga/src/components/button/Button.spec.js +++ /dev/null @@ -1,101 +0,0 @@ -import { shallowMount, mount } from '@vue/test-utils' -import OButton from '@components/button/Button' - -let wrapper - -describe('OButton', () => { - beforeEach(() => { - wrapper = shallowMount(OButton) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('emit a click event', () => { - const click = jest.fn() - wrapper = shallowMount(OButton, { - listeners: { - 'click': click - } - }) - wrapper.find('.o-btn').trigger('click') - expect(click).toHaveBeenCalledTimes(1) - }) - - it('should show icon', () => { - wrapper = mount(OButton, { - propsData: { - iconLeft: 'plus' - } - }) - expect(wrapper.contains('.o-icon')).toBeTruthy() - }) - - it('should show icon on the right and on the left', () => { - wrapper = mount(OButton, { - propsData: { - iconLeft: 'plus', - iconRight: 'plus' - } - }) - expect(wrapper.contains('.o-btn__icon-left')).toBeTruthy() - expect(wrapper.contains('.o-btn__icon-right')).toBeTruthy() - }) - - it('should be medium', async () => { - wrapper.setProps({ - size: 'medium' - }) - await wrapper.vm.$nextTick() - expect(wrapper.classes()).toContain('o-btn--medium') - }) - - it('should be small + icon', () => { - wrapper = mount(OButton, { - propsData: { - size: 'small', - iconLeft: 'plus' - } - }) - expect(wrapper.classes()).toContain('o-btn--small') - expect(wrapper.contains('.o-btn__icon')).toBeTruthy() - }) - - it('should be large + icon', () => { - wrapper = mount(OButton, { - propsData: { - size: 'large', - iconLeft: 'plus' - } - }) - expect(wrapper.classes()).toContain('o-btn--large') - expect(wrapper.contains('.o-btn__icon')).toBeTruthy() - }) - - it('should be rounded when prop is set to true', async () => { - wrapper.setProps({ - rounded: true - }) - await wrapper.vm.$nextTick() - expect(wrapper.classes()).toContain('o-btn--rounded') - }) - - it('should set tag to "button" if disabled', () => { - wrapper.setProps({ - tag: 'a' - }) - expect(wrapper.vm.computedTag).toBe('a') - - wrapper = shallowMount(OButton, { - attrs: { - 'disabled': true - } - }) - expect(wrapper.vm.computedTag).toBe('button') - }) -}) diff --git a/packages/oruga/src/components/button/Button.vue b/packages/oruga/src/components/button/Button.vue deleted file mode 100644 index e1d993c08..000000000 --- a/packages/oruga/src/components/button/Button.vue +++ /dev/null @@ -1,205 +0,0 @@ -<template> - <component - :is="computedTag" - v-bind="$attrs" - :type="computedNativeType" - :class="rootClasses" - :disabled="disabled" - v-on="$listeners" - > - <span :class="elementsWrapperClasses"> - <o-icon - v-if="iconLeft" - :pack="iconPack" - :icon="iconLeft" - :size="size" - :both="iconBoth" - :class="iconLeftClasses" - /> - <span - :class="labelClasses" - v-if="label || $slots.default"> - <slot>{{ label }}</slot> - </span> - <o-icon - v-if="iconRight" - :pack="iconPack" - :icon="iconRight" - :size="size" - :both="iconBoth" - :class="iconRightClasses" - /> - </span> - </component> -</template> - -<script> -import Icon from '../icon/Icon' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { getValueByPath } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -/** - * The classic button, in different colors, sizes, and states - * @displayName Button - * @example ./examples/Button.md - * @style _button.scss - */ -export default { - name: 'OButton', - components: { - [Icon.name]: Icon - }, - configField: 'button', - mixins: [BaseComponentMixin], - inheritAttrs: false, - props: { - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** - * Size of button, optional - * @values small, medium, large - */ - size: String, - /** - * Button label, optional when default slot - */ - label: String, - /** - * Icon pack to use - * @values mdi, fa, fas and any other custom icon pack - */ - iconPack: String, - /** - * Icon name to show on the left - */ - iconLeft: String, - /** - * Icon name to show on the right - */ - iconRight: String, - /** - * Rounded style - */ - rounded: { - type: Boolean, - default: () => { return getValueByPath(getOptions(), 'button.rounded', false) } - }, - /** - * Loading style - */ - loading: Boolean, - /** - * Outlined style - */ - outlined: Boolean, - /** - * Button will be expanded (full-width) - */ - expanded: Boolean, - inverted: Boolean, - /** - * Button type, like native - */ - nativeType: { - type: String, - default: 'button', - validator: (value) => { - return [ - 'button', - 'submit', - 'reset' - ].indexOf(value) >= 0 - } - }, - /** - * Button tag name - * @values button, a, input, router-link, nuxt-link (or other nuxt alias) - */ - tag: { - type: String, - default: 'button' - }, - /** - * Button will be disabled - */ - disabled: Boolean, - /** @ignore */ - iconBoth: Boolean, // This is used internally - elementsWrapperClass: [String, Function, Array], - rootClass: [String, Function, Array], - outlinedClass: [String, Function, Array], - loadingClass: [String, Function, Array], - invertedClass: [String, Function, Array], - expandedClass: [String, Function, Array], - roundedClass: [String, Function, Array], - disabledClass: [String, Function, Array], - iconClass: [String, Function, Array], - iconLeftClass: [String, Function, Array], - iconRightClass: [String, Function, Array], - labelClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array] - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-btn'), - { [this.computedClass('sizeClass', 'o-btn--', this.size)]: this.size }, - { [this.computedClass('variantClass', 'o-btn--', this.variant)]: this.variant }, - { [this.computedClass('outlinedClass', 'o-btn--outlined')]: this.outlined && !this.variant }, - { [this.computedClass('invertedClass', 'o-btn--inverted')]: this.inverted && !this.variant }, - { [this.computedClass('outlinedClass', 'o-btn--outlined-', this.variant)]: this.outlined && this.variant }, - { [this.computedClass('invertedClass', 'o-btn--inverted-', this.variant)]: this.inverted && this.variant }, - { [this.computedClass('expandedClass', 'o-btn--expanded')]: this.expanded }, - { [this.computedClass('roundedClass', 'o-btn--rounded')]: this.rounded }, - { [this.computedClass('disabledClass', 'o-btn--disabled')]: this.disabled }, - { [this.computedClass('loadingClass', 'o-btn--loading')]: this.loading }, - ] - }, - labelClasses() { - return [ - this.computedClass('labelClass', 'o-btn__label'), - ] - }, - iconClasses() { - return [ - this.computedClass('iconClass', 'o-btn__icon'), - ] - }, - iconLeftClasses() { - return [ - ...this.iconClasses, - this.computedClass('iconLeftClass', 'o-btn__icon-left') - ] - }, - iconRightClasses() { - return [ - ...this.iconClasses, - this.computedClass('iconRightClass', 'o-btn__icon-right') - ] - }, - elementsWrapperClasses() { - return [ - this.computedClass('elementsWrapperClass', 'o-btn__wrapper'), - ] - }, - computedTag() { - if (this.disabled !== undefined && this.disabled !== false) { - return 'button' - } - return this.tag - }, - computedNativeType() { - if (this.tag === 'button' || this.tag === 'input') { - return this.nativeType - } - return null - } - } -} -</script> diff --git a/packages/oruga/src/components/button/Inspector.vue b/packages/oruga/src/components/button/Inspector.vue deleted file mode 100644 index ad59faea1..000000000 --- a/packages/oruga/src/components/button/Inspector.vue +++ /dev/null @@ -1,130 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-button v-bind="s">Button</o-button> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "outlinedClass", - description: "Class of the button outlined", - properties: ["outlined"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'primary'; - cmp.data.outlined = true; - }, - }, - { - class: "loadingClass", - description: "Class of the button loading", - properties: ["loading"], - action: (cmp) => { - cmp.data.loading = true; - }, - }, - { - class: "invertedClass", - description: "Class of the button when inverted", - properties: ["inverted"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'primary'; - cmp.data.inverted = true; - }, - }, - { - class: "expandedClass", - description: "Class of the button when expanded", - properties: ["expanded"], - action: (cmp) => { - cmp.data.expanded = true; - }, - }, - { - class: "elementsWrapperClass", - description: "Class of the button elements wrapper", - action: (cmp) => { - cmp.data.expanded = true; - }, - }, - { - class: "roundedClass", - description: "Class of the button when rounded", - properties: ["rounded"], - action: (cmp) => { - cmp.data.rounded = true; - }, - }, - { - class: "disabledClass", - description: "Class of the button when disabled", - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - }, - }, - { - class: "labelClass", - description: "Class of the button label" - }, - { - class: "iconClass", - description: "Class of the button icon", - properties: ["iconLeft", "iconRight"], - action: (cmp) => { - cmp.data['icon-left'] = "plus" - }, - }, - { - class: "iconLeftClass", - description: "Class of the button icon on the left", - properties: ["iconLeft"], - action: (cmp) => { - cmp.data['icon-left'] = "plus" - }, - }, - { - class: "iconRightClass", - description: "Class of the button icon on the right", - properties: ["iconRight"], - action: (cmp) => { - cmp.data['icon-right'] = "plus" - }, - }, - { - class: "sizeClass", - description: "Class of the button size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - }, - }, - { - class: "variantClass", - description: "Class of the button variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - }, - }, - ], - }; - } -} -</script> diff --git a/packages/oruga/src/components/button/__snapshots__/Button.spec.js.snap b/packages/oruga/src/components/button/__snapshots__/Button.spec.js.snap deleted file mode 100644 index 72e062ff4..000000000 --- a/packages/oruga/src/components/button/__snapshots__/Button.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OButton render correctly 1`] = `<button type="button" class="o-btn"><span class="o-btn__wrapper"><!----> <!----> <!----></span></button>`; diff --git a/packages/oruga/src/components/button/examples/Button.md b/packages/oruga/src/components/button/examples/Button.md deleted file mode 100644 index 82a425af8..000000000 --- a/packages/oruga/src/components/button/examples/Button.md +++ /dev/null @@ -1,150 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-button @click="clickMe">Click Me</o-button> - </section> -</template> - -<script> - export default { - methods: { - clickMe() { - alert('Clicked!') - } - } - } -</script> -``` -::: - -### States and Styles - -::: demo -```html -<template> - <section> - - <div class="buttons"> - <o-button variant="primary">Primary</o-button> - <o-button variant="success">Success</o-button> - <o-button variant="danger">Danger</o-button> - <o-button variant="warning">Warning</o-button> - <o-button variant="info">Info</o-button> - </div> - - <div class="buttons"> - <o-button>Normal</o-button> - <o-button disabled>Disabled</o-button> - <o-button rounded>Rounded</o-button> - </div> - - <div class="buttons"> - <o-button variant="primary" outlined>Outlined</o-button> - <o-button variant="primary" inverted>Inverted</o-button> - </div> - - </section> -</template> - -<script> - export default {} -</script> -``` -::: - -### Icons - -::: demo -```html -<template> - <section> - <div class="buttons"> - <o-button size="small" - icon-left="plus"> - Add - </o-button> - - <o-button icon-left="plus"> - Add - </o-button> - - <o-button size="medium" - icon-left="plus"> - Add - </o-button> - - <o-button size="large" - icon-left="plus"> - Add - </o-button> - </div> - - <br> - - <div class="buttons"> - <o-button variant="danger" - icon-left="trash"> - Delete - </o-button> - - <o-button variant="danger" - icon-right="trash"> - Delete - </o-button> - - <o-button variant="danger" - icon-right="trash" /> - </div> - - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Tags - -::: demo -```html -<template> - <section> - <div class="buttons"> - <o-button>Button</o-button> - - <o-button tag="a" - href="https://oruga.io" - target="_blank"> - Anchor - </o-button> - - <o-button tag="input" - native-type="submit" - value="Submit input" /> - - <!-- Need vue-router --> - <!-- - <o-button tag="router-link" - to="/home" - variant="info"> - Docs - </o-button> - --> - </div> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: diff --git a/packages/oruga/src/components/button/index.js b/packages/oruga/src/components/button/index.js deleted file mode 100644 index b81e151a0..000000000 --- a/packages/oruga/src/components/button/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Button from './Button' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Button) - } -} - -use(Plugin) - -export default Plugin - -export { - Button as OButton -} diff --git a/packages/oruga/src/components/carousel/Carousel.spec.js b/packages/oruga/src/components/carousel/Carousel.spec.js deleted file mode 100644 index 0fd953ba2..000000000 --- a/packages/oruga/src/components/carousel/Carousel.spec.js +++ /dev/null @@ -1,248 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OCarousel from '@components/carousel/Carousel' -import BIcon from '@components/icon/Icon' -import {default as InjectedChildMixin, Sorted} from '../../utils/InjectedChildMixin' - -let wrapper - -const mockCarouselItems = { - mixins: [InjectedChildMixin('carousel', Sorted)], - name: 'OCarouselItem', - template: '<div></div>', - computed: { - isActive() { - return this.parent.activeIndex === this.index - } - } -} - -describe('OCarousel', () => { - beforeEach(() => { - wrapper = shallowMount(OCarousel, { - sync: false, - Component: BIcon, - propsData: { - autoplay: false, - repeat: false - }, - stubs: {'o-carousel-item': mockCarouselItems}, - slots: { - default: [ - '<o-carousel-item/>', - '<o-carousel-item/>' - ] - } - }) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('OCarousel') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('reacts when value changes', async () => { - let value = 1 - wrapper.setProps({ value }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeIndex).toBe(value) - - value = 3 - wrapper.setProps({ value }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeIndex).toBe(1) - - value = 0 - wrapper.setProps({ value }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeIndex).toBe(value) - }) - - it('reacts when autoplay changes', async () => { - wrapper.vm.startTimer = jest.fn(wrapper.vm.startTimer) - wrapper.vm.pauseTimer = jest.fn(wrapper.vm.pauseTimer) - wrapper.vm.next = jest.fn(wrapper.vm.next) - - let autoplay = true - wrapper.setProps({ autoplay }) - await wrapper.vm.$nextTick() - - expect(wrapper.vm.autoplay).toBe(autoplay) - expect(wrapper.vm.startTimer).toHaveBeenCalled() - - autoplay = false - wrapper.setProps({ autoplay }) - - await wrapper.vm.$nextTick() - - expect(wrapper.vm.autoplay).toBe(autoplay) - expect(wrapper.vm.pauseTimer).toHaveBeenCalled() - }) - - it('manage next and previous accordingly', async () => { - wrapper.vm.startTimer = jest.fn(() => wrapper.vm.startTimer) - wrapper.vm.pauseTimer = jest.fn(() => wrapper.vm.pauseTimer) - - const first = 0 - const last = 1 - let repeat = false - wrapper.setProps({ value: last, repeat }) - - wrapper.vm.prev() - expect(wrapper.vm.activeIndex).toBe(first) - wrapper.vm.prev() - expect(wrapper.vm.activeIndex).toBe(first) // Wont go below 0 without repeat prop - repeat = true - wrapper.setProps({ repeat }) - wrapper.vm.prev() - expect(wrapper.vm.activeIndex).toBe(last) // Will be set to the last value using repeat - await wrapper.vm.$nextTick() - expect(wrapper.vm.startTimer).toHaveBeenCalled() - - wrapper.vm.next() - expect(wrapper.vm.activeIndex).toBe(first) // Navigate to the first value with repeat - wrapper.vm.next() - expect(wrapper.vm.activeIndex).toBe(last) - repeat = false - wrapper.setProps({ repeat }) - wrapper.vm.next() - expect(wrapper.vm.activeIndex).toBe(last) // Wont go above last when not using repeat - }) - - it('manage interaction with indicators', async () => { - let indicator = wrapper.find('.o-car__indicator__item') - - const first = 0 - const last = 1 - wrapper.setProps({ value: last }) - await wrapper.vm.$nextTick() - - indicator.trigger('mouseover') // no change since indicatorMode is 'click' - expect(wrapper.vm.activeIndex).toBe(last) - - indicator.trigger('click') - expect(wrapper.vm.activeIndex).toBe(first) - }) - - it('autoplays', async () => { - jest.useFakeTimers() - wrapper.setProps({ autoplay: true, 'pause-hover': false, repeat: false }) - - expect(wrapper.vm.activeIndex).toBe(0) - - await wrapper.vm.$nextTick() - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeIndex).toBe(1) - - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeIndex).toBe(1) - - wrapper.setProps({ repeat: true }) - - await wrapper.vm.$nextTick() - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeIndex).toBe(0) - }) - - it('pauses on hover', async () => { - jest.useFakeTimers() - wrapper.setProps({ autoplay: true, 'pause-hover': true, repeat: true }) - - await wrapper.vm.$nextTick() - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - - expect(wrapper.vm.activeIndex).toBe(1) - - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - - expect(wrapper.vm.activeIndex).toBe(0) - - wrapper.find('.o-car').trigger('mouseenter') - - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - - expect(wrapper.vm.activeIndex).toBe(1) - - wrapper.find('.o-car').trigger('mouseleave') - expect(wrapper.vm.activeIndex).toBe(1) - - jest.runOnlyPendingTimers() - await wrapper.vm.$nextTick() - - expect(wrapper.vm.activeIndex).toBe(0) - }) - - /* - it('drags correctly', async () => { - wrapper = shallowMount(OCarousel, { - sync: false, - Component: BIcon, - propsData: { - autoplay: false, - repeat: false, - itemsToShow: 4, - }, - stubs: {'o-carousel-item': mockCarouselItems}, - slots: { - default: [ - '<o-carousel-item/>', - '<o-carousel-item/>', - '<o-carousel-item/>', - '<o-carousel-item/>', - '<o-carousel-item/>', - '<o-carousel-item/>', - '<o-carousel-item/>' - ] - } - }) - - wrapper.setData({delta: 0}) - wrapper.vm._computedWatchers['itemWidth'].value = 100 - - await wrapper.vm.$nextTick() - expect(wrapper.vm.translation).toBe(-0) - - wrapper.setData({delta: -600}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.translation).toBe(-0) - - wrapper.setData({delta: 2000}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.translation).toBe(-400) - - wrapper.setProps({ - value: 4 - }) - expect(wrapper.vm.translation).toBe(-400) - await wrapper.vm.$nextTick() - wrapper.setData({delta: -300}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.translation).toBe(-100) - }) - */ - - it('destroys correctly', async () => { - wrapper.setProps({autoplay: true}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.timer).toBeTruthy() - wrapper.destroy() - expect(wrapper.vm.timer).toBeFalsy() - }) - - it('reset timer before destroy', () => { - wrapper.vm.pauseTimer = jest.fn(() => wrapper.vm.pauseTimer) - - wrapper.destroy() - - expect(wrapper.vm.pauseTimer).toHaveBeenCalled() - }) -}) diff --git a/packages/oruga/src/components/carousel/Carousel.vue b/packages/oruga/src/components/carousel/Carousel.vue deleted file mode 100644 index ff60287ea..000000000 --- a/packages/oruga/src/components/carousel/Carousel.vue +++ /dev/null @@ -1,475 +0,0 @@ -<template> - <div - :class="rootClasses" - @mouseenter="onMouseEnter" - @mouseleave="onMouseLeave"> - <div :class="sceneClasses"> - <div - @mousedown="dragStart" - @touchstart="dragStart" - :class="itemsClasses" - :style="'transform:translateX('+translation+'px)'"> - <slot /> - </div> - <slot - name="arrow" - :hasPrev="hasPrev" - :prev="prev" - :hasNext="hasNext" - :next="next" - > - <template v-if="arrow"> - <o-icon - v-show="hasPrev" - :class="arrowIconPrevClasses" - @click.native="prev" - :pack="iconPack" - :icon="iconPrev" - :size="iconSize" - both /> - <o-icon - v-show="hasNext" - :class="arrowIconNextClasses" - @click.native="next" - :pack="iconPack" - :icon="iconNext" - :size="iconSize" - both /> - </template> - </slot> - </div> - <slot - :active="activeIndex" - :switchTo="switchTo" - :indicatorIndex="indicatorIndex" - name="indicators"> - <template v-if="childItems.length"> - <div - v-if="indicator && !asIndicator" - :class="indicatorsClasses"> - <a - v-for="(_, index) in indicatorCount" - :class="indicatorClasses" - @mouseover="modeChange('hover', index)" - @click="modeChange('click', index)" - :key="index"> - <slot - :i="index" - name="indicator"> - <span :class="indicatorItemClasses(index)"/> - </slot> - </a> - </div> - </template> - </slot> - <template v-if="overlay"> - <slot name="overlay"/> - </template> - </div> -</template> - -<script> -import {sign, mod, bound, getValueByPath} from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -import Icon from '../icon/Icon' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import {default as ProviderParentMixin, Sorted} from '../../utils/ProviderParentMixin' - -/** - * A Slideshow for cycling images in confined spaces - * @displayName Carousel - * @example ./examples/Carousel.md - * @style _carousel.scss - */ -export default { - name: 'OCarousel', - components: { - [Icon.name]: Icon - }, - configField: 'carousel', - mixins: [ProviderParentMixin('carousel', Sorted), BaseComponentMixin], - props: { - value: { - type: Number, - default: 0 - }, - interval: { - type: Number, - default: () => { return getValueByPath(getOptions(), 'carousel.interval', 3500) } - }, - hasDrag: { - type: Boolean, - default: true - }, - autoplay: { - type: Boolean, - default: false - }, - pauseHover: { - type: Boolean, - default: false - }, - repeat: { - type: Boolean, - default: false - }, - indicator: { - type: Boolean, - default: true - }, - indicatorInside: { - type: Boolean, - default: false - }, - indicatorMode: { - type: String, - default: 'click' - }, - indicatorPosition: { - type: String, - default: 'bottom' - }, - indicatorStyle: { - type: String, - default: 'dots' - }, - overlay: Boolean, - itemsToShow: { - type: Number, - default: 1 - }, - itemsToList: { - type: Number, - default: 1 - }, - asIndicator: Boolean, - arrow: { - type: Boolean, - default: true - }, - arrowHover: { - type: Boolean, - default: true - }, - iconPack: String, - iconSize: String, - iconPrev: { - type: String, - default: () => { return getValueByPath(getOptions(), 'carousel.iconPrev', 'chevron-left') } - }, - iconNext: { - type: String, - default: () => { return getValueByPath(getOptions(), 'carousel.iconNext', 'chevron-right') } - }, - breakpoints: { - type: Object, - default: () => ({}) - }, - rootClass: [String, Function, Array], - overlayClass: [String, Function, Array], - sceneClass: [String, Function, Array], - itemsClass: [String, Function, Array], - itemsDraggingClass: [String, Function, Array], - arrowIconClass: [String, Function, Array], - arrowIconPrevClass: [String, Function, Array], - arrowIconNextClass: [String, Function, Array], - indicatorsClass: [String, Function, Array], - indicatorsInsideClass: [String, Function, Array], - indicatorsInsidePositionClass: [String, Function, Array], - indicatorItemClass: [String, Function, Array], - indicatorItemActiveClass: [String, Function, Array], - indicatorItemStyleClass: [String, Function, Array] - }, - data() { - return { - activeIndex: this.value, - scrollIndex: this.value, - delta: 0, - dragX: false, - hold: 0, - windowWidth: 0, - touch: false, - observer: null, - refresh_: 0, - itemsHovered: false, - isPause: false, - timer: null - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-car'), - { [this.computedClass('overlayClass', 'o-car__overlay')]: this.overlay } - ] - }, - sceneClasses() { - return [ - this.computedClass('sceneClass', 'o-car__scene') - ] - }, - itemsClasses() { - return [ - this.computedClass('itemsClass', 'o-car__items'), - { [this.computedClass('itemsDraggingClass', 'o-car__items--dragging')]: this.dragging }, - ] - }, - arrowIconClasses() { - return [ - this.computedClass('arrowIconClass', 'o-car__arrow__icon'), - ] - }, - arrowIconPrevClasses() { - return [ - ...this.arrowIconClasses, - this.computedClass('arrowIconPrevClass', 'o-car__arrow__icon-prev') - ] - }, - arrowIconNextClasses() { - return [ - ...this.arrowIconClasses, - this.computedClass('arrowIconNextClass', 'o-car__arrow__icon-next') - ] - }, - indicatorsClasses() { - return [ - this.computedClass('indicatorsClass', 'o-car__indicators'), - { [this.computedClass('indicatorsInsideClass', 'o-car__indicators--inside')]: this.indicatorInside }, - { [this.computedClass('indicatorsInsidePositionClass', 'o-car__indicators--inside--', this.indicatorPosition)]: this.indicatorInside && this.indicatorPosition } - ] - }, - indicatorClasses() { - return [ - this.computedClass('indicatorClass', 'o-car__indicator') - ] - }, - dragging() { - return this.dragX !== false - }, - itemStyle() { - return `width: ${this.itemWidth}px;` - }, - translation() { - return -bound( - this.delta + (this.scrollIndex * this.itemWidth), 0, - (this.childItems.length - this.settings.itemsToShow) * this.itemWidth - ) - }, - total() { - return this.childItems.length - this.settings.itemsToShow - }, - indicatorCount() { - return Math.ceil(this.total / this.settings.itemsToList) + 1 - }, - indicatorIndex() { - return Math.ceil(this.scrollIndex / this.settings.itemsToList) - }, - hasArrows() { - return (this.settings.arrowHover && this.itemsHovered) || !this.settings.arrowHover - }, - hasPrev() { - return (this.settings.repeat || this.scrollIndex > 0) && this.hasArrows - }, - hasNext() { - return (this.settings.repeat || this.scrollIndex < this.total) && this.hasArrows - }, - breakpointKeys() { - return Object.keys(this.breakpoints).sort((a, b) => b - a) - }, - settings() { - let breakpoint = this.breakpointKeys.filter((breakpoint) => { - if (this.windowWidth >= breakpoint) { - return true - } - })[0] - if (breakpoint) { - return {...this.$props, ...this.breakpoints[breakpoint]} - } - return this.$props - }, - itemWidth() { - if (this.windowWidth) { // Ensure component is mounted - /* eslint-disable-next-line */ - this.refresh_; // We force the computed property to refresh if this prop is changed - - const rect = this.$el.getBoundingClientRect() - return rect.width / this.settings.itemsToShow - } - return 0 - } - }, - watch: { - /** - * When v-model is changed set the new active item. - */ - value(value) { - if (value <= this.childItems.length - 1) { - this.activeIndex = value - this.switchTo(value * this.settings.itemsToList, true) - } - }, - /** - * When autoplay is changed, start or pause timer accordingly - */ - autoplay(status) { - if (status) { - this.startTimer() - } else { - this.pauseTimer() - } - }, - /** - * Since the timer can get paused at the end, if repeat is changed we need to restart it - */ - repeat(status) { - if (status) { - this.startTimer() - } - } - }, - methods: { - indicatorItemClasses(index) { - return [ - this.computedClass('indicatorItemClass', 'o-car__indicator__item'), - { [this.computedClass('indicatorItemActiveClass', 'o-car__indicator__item--active')]: this.indicatorIndex === index }, - { [this.computedClass('indicatorItemStyleClass', 'o-car__indicator__item--', this.indicatorStyle)]: this.indicatorStyle }, - ] - }, - onMouseEnter() { - this.itemsHovered = true - this.checkPause() - }, - onMouseLeave() { - this.itemsHovered = false - this.startTimer() - }, - startTimer() { - if (!this.autoplay || this.timer) return - this.isPause = false - this.timer = setInterval(() => { - if (!this.repeat && this.activeIndex >= this.childItems.length - 1) { - this.pauseTimer() - } else { - this.next() - } - }, this.interval) - }, - pauseTimer() { - this.isPause = true - if (this.timer) { - clearInterval(this.timer) - this.timer = null - } - }, - restartTimer() { - this.pauseTimer() - this.startTimer() - }, - checkPause() { - if (this.pauseHover && this.autoplay) { - this.pauseTimer() - } - }, - modeChange(trigger, value) { - if (this.indicatorMode === trigger) { - return this.switchTo(value * this.settings.itemsToList) - } - }, - resized() { - this.windowWidth = window.innerWidth - }, - switchTo(newIndex, onlyMove = this.asIndicator) { - if (this.settings.repeat) { - newIndex = mod(newIndex, this.total + 1) - } - newIndex = bound(newIndex, 0, this.total) - this.scrollIndex = newIndex - this.$emit('scroll', this.indicatorIndex) - if (!onlyMove) { - this.activeIndex = Math.ceil(newIndex / this.settings.itemsToList) - if (this.value !== this.activeIndex) { - this.$emit('input', this.activeIndex) - } - } - }, - next() { - this.switchTo(this.scrollIndex + this.settings.itemsToList) - }, - prev() { - this.switchTo(this.scrollIndex - this.settings.itemsToList) - }, - // handle drag event - dragStart(event) { - if (this.dragging || !this.settings.hasDrag || (event.button !== 0 && event.type !== 'touchstart')) return - this.hold = Date.now() - this.touch = !!event.touches - this.dragX = this.touch ? event.touches[0].clientX : event.clientX - if (this.touch) { - this.pauseTimer() - } - window.addEventListener(this.touch ? 'touchmove' : 'mousemove', this.dragMove) - window.addEventListener(this.touch ? 'touchend' : 'mouseup', this.dragEnd) - }, - dragMove(event) { - if (!this.dragging) return - const dragEndX = event.touches - ? (event.changedTouches[0] || event.touches[0]).clientX : event.clientX - this.delta = this.dragX - dragEndX - if (!event.touches) { - event.preventDefault() - } - }, - dragEnd(event) { - if (!this.dragging && !this.hold) return - if (this.hold) { - const signCheck = sign(this.delta) - const results = Math.round(Math.abs(this.delta / this.itemWidth) + 0.15)// Hack - this.switchTo(this.scrollIndex + signCheck * results) - } - this.delta = 0 - this.dragX = false - if (event && event.touches) { - this.startTimer() - } - window.removeEventListener(this.touch ? 'touchmove' : 'mousemove', this.dragMove) - window.removeEventListener(this.touch ? 'touchend' : 'mouseup', this.dragEnd) - }, - refresh() { - this.$nextTick(() => { - this.refresh_++ - }) - } - }, - mounted() { - if (typeof window !== 'undefined') { - if (window.ResizeObserver) { - this.observer = new ResizeObserver(this.refresh) - this.observer.observe(this.$el) - } - window.addEventListener('resize', this.resized) - document.addEventListener('animationend', this.refresh) - document.addEventListener('transitionend', this.refresh) - document.addEventListener('transitionstart', this.refresh) - this.resized() - this.startTimer() - } - if (this.$attrs.config) { - throw new Error('The config prop was removed, you need to use v-bind instead') - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - if (window.ResizeObserver) { - this.observer.disconnect() - } - window.removeEventListener('resize', this.resized) - document.removeEventListener('animationend', this.refresh) - document.removeEventListener('transitionend', this.refresh) - document.removeEventListener('transitionstart', this.refresh) - this.dragEnd() - this.pauseTimer() - } - } -} -</script> diff --git a/packages/oruga/src/components/carousel/CarouselItem.spec.js b/packages/oruga/src/components/carousel/CarouselItem.spec.js deleted file mode 100644 index be2e47f3f..000000000 --- a/packages/oruga/src/components/carousel/CarouselItem.spec.js +++ /dev/null @@ -1,41 +0,0 @@ -import { mount } from '@vue/test-utils' -import OCarousel from '@components/carousel/Carousel' -import OCarouselItem from '@components/carousel/CarouselItem' - -let wrapper -let wrapperParent - -const WrapperComp = { - data() { - return {} - }, - template: ` - <OCarousel ref="carousel"> - <OCarouselItem value="item1"/> - <OCarouselItem ref="testItem" value="item2"/> - <OCarouselItem value="item3"/> - </OCarousel>`, - components: { - OCarousel, OCarouselItem - } -} - -describe('OCarouselItem', () => { - beforeEach(() => { - wrapperParent = mount(WrapperComp, { sync: false }) - wrapper = wrapperParent.find({ ref: 'testItem' }) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('OCarouselItem') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('computes its position correctly', () => { - expect(wrapper.vm.index).toBe(1) - }) -}) diff --git a/packages/oruga/src/components/carousel/CarouselItem.vue b/packages/oruga/src/components/carousel/CarouselItem.vue deleted file mode 100644 index 8542bf2dd..000000000 --- a/packages/oruga/src/components/carousel/CarouselItem.vue +++ /dev/null @@ -1,51 +0,0 @@ -<template> - <div - :class="itemClasses" - @click="onClick" - :style="itemStyle"> - <slot /> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import {default as InjectedChildMixin, Sorted} from '../../utils/InjectedChildMixin' - -/** - * @displayName Carousel Item - */ -export default { - name: 'OCarouselItem', - configField: 'carousel', - mixins: [InjectedChildMixin('carousel', Sorted), BaseComponentMixin], - props: { - itemClass: [String, Function, Array], - itemActiveClass: [String, Function, Array] - }, - computed: { - itemClasses() { - return [ - this.computedClass('itemClass', 'o-car__item'), - {[this.computedClass('itemActiveClass', 'o-car__item--active')]: this.isActive} - ] - }, - itemStyle() { - return `width: ${this.parent.itemWidth}px;` - }, - isActive() { - return this.parent.activeIndex === this.index - } - }, - methods: { - onClick(event) { - if (this.isActive) { - this.parent.$emit('click', event) - } - if (this.parent.asIndicator) { - this.parent.activeIndex = this.index - this.parent.$emit('input', this.index) - } - } - } -} -</script> diff --git a/packages/oruga/src/components/carousel/Inspector.vue b/packages/oruga/src/components/carousel/Inspector.vue deleted file mode 100644 index a73cb91a1..000000000 --- a/packages/oruga/src/components/carousel/Inspector.vue +++ /dev/null @@ -1,116 +0,0 @@ -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-carousel v-bind="s"> - <o-carousel-item v-for="(carousel, i) in carousels" :key="i"> - <section class="ex-slide" :style="{'background-color': carousel.color }"> - <h1>{{carousel.text}}</h1> - </section> - </o-carousel-item> - </o-carousel> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - carousels: [ - { text: 'Slide 1', color: '#445e00' }, - { text: 'Slide 2', color: '#006724' }, - { text: 'Slide 3', color: '#b60000' }, - { text: 'Slide 4', color: '#f4c300' }, - { text: 'Slide 5', color: '#005c98' } - ], - subitem: 'carousel-item', - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "overlayClass", - properties: ['overlay'], - description: "Class of the root element in overlay", - action: (cmp) => { - cmp.data.overlay = true; - }, - }, - { - class: "sceneClass", - description: "Class of the wrapper element of carousel items", - }, - { - class: "itemsClass", - description: "Class of slider element", - }, - { - class: "itemsDraggingClass", - description: "Class of slider element on drag", - }, - { - class: "arrowIconClass", - description: "Class of arrow elements", - }, - { - class: "arrowIconPrevClass", - description: "Class of prev arrow element", - }, - { - class: "arrowIconNextClass", - description: "Class of next arrow element", - }, - { - class: "indicatorsClass", - description: "Class of indicators element", - }, - { - class: "indicatorsInsideClass", - properties: ['indicatorInside'], - description: "Class of indicators element when inside", - action: (cmp) => { - cmp.data.indicatorInside = true; - } - }, - { - class: "indicatorsInsidePositionClass", - properties: ['indicatorInside', 'indicatorPosition'], - description: "Class of indicators element when inside and position", - action: (cmp) => { - cmp.data.indicatorInside = true; - cmp.data.indicatorPosition = 'top'; - } - }, - { - class: "indicatorItemClass", - description: "Class of indicator item element", - }, - { - class: "indicatorItemActiveClass", - description: "Class of indicator element when is active", - }, - { - class: "indicatorItemStyleClass", - properties: ['indicatorStyle'], - description: "Class of indicator element to separate different styles", - action: (cmp) => { - cmp.data.indicatorStyle = 'lines'; - } - }, - { - class: "itemClass", - description: "Class of carousel item", - }, - { - class: "itemActiveClass", - description: "Class of carousel item when is active", - }, - ], - }; - } -} -</script> diff --git a/packages/oruga/src/components/carousel/__snapshots__/Carousel.spec.js.snap b/packages/oruga/src/components/carousel/__snapshots__/Carousel.spec.js.snap deleted file mode 100644 index ca5c3afd9..000000000 --- a/packages/oruga/src/components/carousel/__snapshots__/Carousel.spec.js.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OCarousel render correctly 1`] = ` -<div class="o-car"> - <div class="o-car__scene"> - <div class="o-car__items" style="transform: translateX(0px);"> - <div></div> - <div></div> - </div> - <o-icon-stub icon="chevron-left" both="true" class="o-car__arrow__icon o-car__arrow__icon-prev" style="display: none;"></o-icon-stub> - <o-icon-stub icon="chevron-right" both="true" class="o-car__arrow__icon o-car__arrow__icon-next" style="display: none;"></o-icon-stub> - </div> - <div class="o-car__indicators"><a class="o-car__indicator"><span class="o-car__indicator__item o-car__indicator__item--active o-car__indicator__item--dots"></span></a><a class="o-car__indicator"><span class="o-car__indicator__item o-car__indicator__item--dots"></span></a></div> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/carousel/__snapshots__/CarouselItem.spec.js.snap b/packages/oruga/src/components/carousel/__snapshots__/CarouselItem.spec.js.snap deleted file mode 100644 index 00dd3489b..000000000 --- a/packages/oruga/src/components/carousel/__snapshots__/CarouselItem.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OCarouselItem render correctly 1`] = `<div class="o-car__item" style="width: 0px;" value="item2"></div>`; diff --git a/packages/oruga/src/components/carousel/examples/Carousel.md b/packages/oruga/src/components/carousel/examples/Carousel.md deleted file mode 100644 index 0aed9f28b..000000000 --- a/packages/oruga/src/components/carousel/examples/Carousel.md +++ /dev/null @@ -1,339 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <o-carousel> - <o-carousel-item v-for="(carousel, i) in carousels" :key="i"> - <section class="ex-slide" :style="{'background-color': carousel.color }"> - <h1>{{carousel.text}}</h1> - </section> - </o-carousel-item> - </o-carousel> -</template> - -<script> - export default { - data(){ - return { - carousels: [ - { text: 'Slide 1', color: '#445e00' }, - { text: 'Slide 2', color: '#006724' }, - { text: 'Slide 3', color: '#b60000' }, - { text: 'Slide 4', color: '#f4c300' }, - { text: 'Slide 5', color: '#005c98' } - ] - } - } - } -</script> -``` -::: - -<style> -.ex-slide { - padding: 9rem 4.5rem; - color: #ffffff; - text-align: center; -} -</style> - -### Carousel List - -::: demo -```html -<template> - <section> - <div class="example-component"> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="arrow">Arrow</o-switch> - </div> - <div class="control"> - <o-switch v-model="arrowHover" :disabled="!arrow">Arrow on hover</o-switch> - </div> - <div class="control"> - <o-switch v-model="drag">Drag event</o-switch> - </div> - <div class="control"> - <o-switch v-model="repeat">Repeat</o-switch> - </div> - </o-field> - <o-field grouped group-multiline> - <o-field label="Items to Show"> - <o-input type="number" v-model.number="perList" min="1" :max="items.length" /> - </o-field> - <o-field label="Items to List"> - <o-input type="number" v-model.number="increment" min="1" :max="items.length - 1" /> - </o-field> - </o-field> - </div> - <o-carousel - v-model="values" - :arrow="arrow" - :arrow-hover="arrowHover" - :items-to-show="perList" - :items-to-list="increment" - :repeat="repeat" - :has-drag="drag"> - <o-carousel-item v-for="(item, i) in items" :key="i"> - <img :src="item.image"> - </o-carousel-item> - </o-carousel> - </section> -</template> - -<script> - export default { - data() { - return { - arrow: true, - arrowHover: true, - drag: true, - values: 1, - perList: 4, - increment: 1, - repeat: false, - items: [ - { - title: 'Slide 1', - image: 'https://picsum.photos/id/1/1230/500' - }, - { - title: 'Slide 2', - image: 'https://picsum.photos/id/2/1230/500' - }, - { - title: 'Slide 3', - image: 'https://picsum.photos/id/3/1230/500' - }, - { - title: 'Slide 4', - image: 'https://picsum.photos/id/4/1230/500' - }, - { - title: 'Slide 5', - image: 'https://picsum.photos/id/5/1230/500' - }, - { - title: 'Slide 6', - image: 'https://picsum.photos/id/6/1230/500' - }, - { - title: 'Slide 7', - image: 'https://picsum.photos/id/7/1230/500' - } - ] - } - } - } -</script> -``` -::: - -### Custom As indicators - -::: demo -```html -<template> - <o-carousel - :autoplay="false" - :overlay="gallery" - @click="switchGallery(true)"> - <o-carousel-item v-for="(item, i) in items" :key="i"> - <a class="image"> - <img :src="item.image"> - </a> - </o-carousel-item> - - <template #indicators="{ active, switchTo }"> - <o-carousel - :value="active" - @input="switchTo($event)" - v-bind="al" - as-indicator> - <o-carousel-item - v-for="(item, i) in items" - :key="i" - item-class="img-indicator" - item-active-class="img-indicator-active"> - <img :src="item.image"> - </o-carousel-item> - </o-carousel> - </template> - <template #overlay> - <o-icon - v-if="gallery" - icon="times" - root-class="ex-close-icon" - clickable - @click.native="switchGallery(false)" - /> - <div style="color: #ffffff; text-align: center"> - Hello, I'm an overlay! - </div> - </template> - </o-carousel> -</template> - -<script> - export default { - data() { - return { - gallery: false, - al: { - itemsToShow: 2, - breakpoints: { - 768: { - itemsToShow: 4 - }, - 960: { - itemsToShow: 6 - } - } - }, - items: [ - { - title: 'Slide 1', - image: 'https://picsum.photos/id/1/1230/500' - }, - { - title: 'Slide 2', - image: 'https://picsum.photos/id/2/1230/500' - }, - { - title: 'Slide 3', - image: 'https://picsum.photos/id/3/1230/500' - }, - { - title: 'Slide 4', - image: 'https://picsum.photos/id/4/1230/500' - }, - { - title: 'Slide 5', - image: 'https://picsum.photos/id/5/1230/500' - }, - { - title: 'Slide 6', - image: 'https://picsum.photos/id/6/1230/500' - }, - { - title: 'Slide 7', - image: 'https://picsum.photos/id/7/1230/500' - } - ] - } - }, - methods: { - switchGallery(value) { - this.gallery = value - if (value) { - document.documentElement.classList.add('o-clipped') - } else { - document.documentElement.classList.remove('o-clipped') - } - } - } - } -</script> - -<style> -.image img { - display: block; - height: auto; - width: 100%; -} -.img-indicator { - filter: grayscale(100%); -} -.img-indicator-active { - filter: grayscale(0%); -} -.ex-close-icon { - position: absolute; - top: 10px; - right: 10px; - color: #ffffff; - z-index: 99; -} -</style> -``` -::: - -### Custom - -::: demo -```html -<template> - <section> - - <div class="example-component"> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="autoPlay">Autoplay</o-switch> - </div> - <div class="control"> - <o-switch v-model="pauseHover" :disabled="!autoPlay">Pause on hover</o-switch> - </div> - <div class="control"> - <o-switch v-model="drag">Drag event</o-switch> - </div> - <div class="control"> - <o-switch v-model="repeat" :disabled="!autoPlay">Repeat</o-switch> - </div> - </o-field> - <o-field grouped group-multiline> - <o-field label="Value"> - <o-input type="number" v-model.number="carousel" min="0" :max="carousels.length - 1" /> - </o-field> - <o-field label="Interval"> - <o-input type="number" v-model.number="interval" min="0" step="1000" :disabled="!autoPlay"/> - </o-field> - </o-field> - </div> - - <o-carousel - v-model="carousel" - :has-drag="drag" - :autoplay="autoPlay" - :pause-hover="pauseHover" - :interval="interval" - :repeat="repeat"> - <o-carousel-item v-for="(carousel, i) in carousels" :key="i"> - <section class="ex-slide" :style="{'background-color': carousel.color }"> - <h1>{{carousel.title}}</h1> - <o-input :placeholder="carousel.title"></o-input> - <p>A link that <a href="#arrow">goes to arrow</a></p> - </section> - </o-carousel-item> - </o-carousel> - </section> -</template> - -<script> - export default { - data() { - return { - carousel: 0, - animated: 'slide', - drag: false, - autoPlay: false, - pauseHover: false, - pauseInfo: false, - repeat: false, - interval: 3000, - carousels: [ - { text: 'Slide 1', color: '#445e00' }, - { text: 'Slide 2', color: '#006724' }, - { text: 'Slide 3', color: '#b60000' }, - { text: 'Slide 4', color: '#f4c300' }, - { text: 'Slide 5', color: '#005c98' } - ] - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/carousel/index.js b/packages/oruga/src/components/carousel/index.js deleted file mode 100644 index 95c7818ca..000000000 --- a/packages/oruga/src/components/carousel/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import Carousel from './Carousel' -import CarouselItem from './CarouselItem' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Carousel) - registerComponent(Vue, CarouselItem) - } -} - -use(Plugin) - -export default Plugin - -export { - Carousel as OCarousel, - CarouselItem as OCarouselItem -} diff --git a/packages/oruga/src/components/checkbox/Checkbox.spec.js b/packages/oruga/src/components/checkbox/Checkbox.spec.js deleted file mode 100644 index 7d5812a6a..000000000 --- a/packages/oruga/src/components/checkbox/Checkbox.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OCheckbox from '@components/checkbox/Checkbox' - -let wrapper - -describe('OCheckbox', () => { - beforeEach(() => { - wrapper = shallowMount(OCheckbox) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('has an input checkbox', () => { - expect(wrapper.contains('label input[type=checkbox]')).toBeTruthy() - }) - - it('emit input event with value when value change', async () => { - wrapper.setProps({ value: true }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedValue).toBeTruthy() - - wrapper.vm.computedValue = false - await wrapper.vm.$nextTick() - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(false) - }) - - it('method focus() gives focus to the input element', (done) => { - wrapper.vm.$refs.input.focus = jest.fn() - wrapper.vm.focus() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.$refs.input.focus).toHaveBeenCalled() - done() - }) - }) -}) diff --git a/packages/oruga/src/components/checkbox/Checkbox.vue b/packages/oruga/src/components/checkbox/Checkbox.vue deleted file mode 100644 index eb4696680..000000000 --- a/packages/oruga/src/components/checkbox/Checkbox.vue +++ /dev/null @@ -1,118 +0,0 @@ -<template> - <label - :class="rootClasses" - ref="label" - :disabled="disabled" - @click.stop="focus" - @keydown.prevent.enter="$refs.label.click()"> - <input - v-model="computedValue" - :indeterminate.prop="indeterminate" - type="checkbox" - ref="input" - @click.stop - :class="checkClasses" - :disabled="disabled" - :required="required" - :name="name" - :autocomplete="autocomplete" - v-bind="$attrs" - :value="nativeValue" - :true-value="trueValue" - :false-value="falseValue" - :aria-labelledby="ariaLabelledby"> - <span - :id="ariaLabelledby" - :class="labelClasses"> - <slot/> - </span> - </label> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import CheckRadioMixin from '../../utils/CheckRadioMixin' - -/** - * Select a single or grouped options - * @displayName Checkbox - * @example ./examples/Checkbox.md - * @style _checkbox.scss - */ -export default { - name: 'OCheckbox', - mixins: [BaseComponentMixin, CheckRadioMixin], - configField: 'checkbox', - props: { - /** - * Same as native indeterminate - */ - indeterminate: { - type: Boolean, - default: false - }, - /** - * Overrides the returned value when it's checked - */ - trueValue: { - type: [String, Number, Boolean], - default: true - }, - /** - * Overrides the returned value when it's not checked - */ - falseValue: { - type: [String, Number, Boolean], - default: false - }, - /** Accessibility label to establish relationship between the checkbox and control label */ - ariaLabelledby: String, - /* Same as native autocomplete */ - autocomplete: String, - rootClass: [String, Function, Array], - disabledClass: [String, Function, Array], - checkClass: [String, Function, Array], - checkedClass: [String, Function, Array], - checkCheckedClass: [String, Function, Array], - checkIndeterminateClass: [String, Function, Array], - labelClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array] - }, - watch: { - indeterminate: { - handler(val) { - this.isIndeterminate = val; - }, - immediate: true, - }, - }, - computed: { - isChecked() { - return this.computedValue === this.trueValue - || Array.isArray(this.computedValue) && this.computedValue.indexOf(this.nativeValue) !== -1 - }, - rootClasses() { - return [ - this.computedClass('rootClass', 'o-chk'), - { [this.computedClass('checkedClass', 'o-chk--checked')] : this.isChecked }, - { [this.computedClass('sizeClass', 'o-chk--', this.size)]: this.size }, - { [this.computedClass('disabledClass', 'o-chk--disabled')]: this.disabled }, - { [this.computedClass('variantClass', 'o-chk--', this.variant)]: this.variant } - ] - }, - checkClasses() { - return [ - this.computedClass('checkClass', 'o-chk__check'), - { [this.computedClass('checkCheckedClass', 'o-chk__check--checked')] : this.isChecked }, - { [this.computedClass('checkIndeterminateClass', 'o-chk__check--indeterminate')] : this.isIndeterminate }, - ] - }, - labelClasses() { - return [ - this.computedClass('labelClass', 'o-chk__label') - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/checkbox/Inspector.vue b/packages/oruga/src/components/checkbox/Inspector.vue deleted file mode 100644 index fcea80bb8..000000000 --- a/packages/oruga/src/components/checkbox/Inspector.vue +++ /dev/null @@ -1,82 +0,0 @@ -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-checkbox v-model="s.checkbox" v-bind="s">Checkbox</o-checkbox> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - -export default { - data() { - return { - inspectData: [ - { - class: 'rootClass', - description : 'Class of the root element' - }, - { - class: 'labelClass', - description : 'Class of the checkbox label' - }, - { - class: 'checkClass', - description : 'Class of the checkbox' - }, - { - class: 'checkedClass', - description : 'Class of the root element when checked', - action: (cmp) => { - cmp.data.checkbox = true; - } - }, - { - class: 'checkCheckedClass', - description : 'Class of the checkbox when checked', - action: (cmp) => { - cmp.data.checkbox = true; - } - }, - { - class: 'checkIndeterminateClass', - description : 'Class when checkbox is indeterminate', - properties: ["indeterminate"], - action: (cmp) => { - cmp.data.indeterminate = true; - } - }, - { - class: 'sizeClass', - description : 'Class of the checkbox size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: 'disabledClass', - description : 'Class when checkbox is disabled', - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: 'variantClass', - description : 'Class of the checkbox variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - } - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/checkbox/__snapshots__/Checkbox.spec.js.snap b/packages/oruga/src/components/checkbox/__snapshots__/Checkbox.spec.js.snap deleted file mode 100644 index 1bbd65caf..000000000 --- a/packages/oruga/src/components/checkbox/__snapshots__/Checkbox.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OCheckbox render correctly 1`] = `<label class="o-chk"><input type="checkbox" true-value="true" class="o-chk__check" value="false"> <span class="o-chk__label"></span></label>`; diff --git a/packages/oruga/src/components/checkbox/examples/Checkbox.md b/packages/oruga/src/components/checkbox/examples/Checkbox.md deleted file mode 100644 index 2a6025ac9..000000000 --- a/packages/oruga/src/components/checkbox/examples/Checkbox.md +++ /dev/null @@ -1,140 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <div class="field"> - <o-checkbox>Basic</o-checkbox> - </div> - <div class="field"> - <o-checkbox v-model="checkbox"> - {{ checkbox }} - </o-checkbox> - </div> - <div class="field"> - <o-checkbox v-model="checkboxCustom" - true-value="Yes" - false-value="No"> - {{ checkboxCustom }} - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :indeterminate="true"> - Indeterminate - </o-checkbox> - </div> - <div class="field"> - <o-checkbox disabled>Disabled</o-checkbox> - </div> - </section> -</template> - -<script> - export default { - data() { - return { - checkbox: false, - checkboxCustom: 'Yes' - } - } - } -</script> -``` -::: - -### Variants - -::: demo -```html -<template> - <section> - <div class="field"> - <o-checkbox :value="true"> - Default - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" - variant="primary"> - Primary - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" - variant="info"> - Info - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" - variant="success"> - Success - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" - variant="danger"> - Danger - </o-checkbox> - </div> - <div class="field"> - <o-checkbox :value="true" - variant="warning"> - Warning - </o-checkbox> - </div> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Array - -::: demo -```html -<template> - <section> - <div class="block"> - <o-checkbox v-model="checkboxGroup" - native-value="Silver"> - Silver - </o-checkbox> - <o-checkbox v-model="checkboxGroup" - native-value="Flint"> - Flint - </o-checkbox> - <o-checkbox v-model="checkboxGroup" - native-value="Vane"> - Vane - </o-checkbox> - <o-checkbox v-model="checkboxGroup" - native-value="Billy" disabled> - Billy - </o-checkbox> - </div> - <p class="content"> - <b>Selection:</b> - {{ checkboxGroup }} - </p> - </section> -</template> - -<script> - export default { - data() { - return { - checkboxGroup: ['Flint'] - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/checkbox/index.js b/packages/oruga/src/components/checkbox/index.js deleted file mode 100644 index 142c128dd..000000000 --- a/packages/oruga/src/components/checkbox/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Checkbox from './Checkbox' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Checkbox) - } -} - -use(Plugin) - -export default Plugin - -export { - Checkbox as OCheckbox -} diff --git a/packages/oruga/src/components/collapse/Collapse.spec.js b/packages/oruga/src/components/collapse/Collapse.spec.js deleted file mode 100644 index 3d0f5b5f4..000000000 --- a/packages/oruga/src/components/collapse/Collapse.spec.js +++ /dev/null @@ -1,118 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OCollapse from '@components/collapse/Collapse' - -let wrapper - -describe('OCollapse', () => { - describe('default', () => { - beforeEach(() => { - wrapper = shallowMount(OCollapse) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('default props and vm', () => { - expect(wrapper.props().open).toBe(true) - expect(wrapper.props().animation).toBe('fade') - expect(wrapper.vm.isOpen).toBe(true) - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - }) - describe('open prop is false', () => { - beforeEach(() => { - wrapper = shallowMount(OCollapse, { - propsData: { - open: false, - position: 'bottom' - } - }) - }) - - it('set default open prop', () => { - expect(wrapper.props().open).toBe(false) - expect(wrapper.vm.isOpen).toBe(false) - }) - - it('call toggle method', async () => { - expect(wrapper.find('.o-clps__content').isVisible()).toBe(false) - wrapper.vm.toggle() - await wrapper.vm.$nextTick() - expect(wrapper.vm.isOpen).toBe(true) - expect(wrapper.find('.o-clps__content').isVisible()).toBe(true) - }) - - it('emit a click event', async () => { - expect(wrapper.find('.o-clps__content').isVisible()).toBe(false) - const updateOpen = jest.fn() - wrapper.vm.$on('update:open', updateOpen) - wrapper.find('.o-clps__trigger').trigger('click') - await wrapper.vm.$nextTick() - expect(updateOpen).toHaveBeenCalledTimes(1) - expect(updateOpen).toHaveBeenCalledWith(true) - expect(wrapper.vm.isOpen).toBe(true) - expect(wrapper.find('.o-clps__content').isVisible()).toBe(true) - }) - - it('should emit open event', () => { - const open = jest.fn() - wrapper.vm.$on('open', open) - wrapper.find('.o-clps__trigger').trigger('click') - expect(open).toHaveBeenCalledTimes(1) - }) - - it('update open prop', async () => { - expect(wrapper.find('.o-clps__content').isVisible()).toBe(false) - wrapper.setProps({ open: true }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.isOpen).toBe(true) - expect(wrapper.find('.o-clps__content').isVisible()).toBe(true) - }) - }) - - it('should have trigger slot', () => { - const triggerSlot = '<strong> Header </strong>' - const wrapper = shallowMount(OCollapse, { - slots: { - trigger: triggerSlot - } - }) - expect(wrapper.find('.o-clps__trigger :first-child').html()).toBe(triggerSlot) - }) - - it('should have scoped trigger slot', () => { - const triggerSlot = '<strong> Header </strong>' - const wrapper = shallowMount(OCollapse, { - scopedSlots: { - trigger: triggerSlot - } - }) - expect(wrapper.find('.o-clps__trigger :first-child').html()).toBe(triggerSlot) - }) - - it('should have default slot', () => { - const slotDefault = '<div> Content </div>' - wrapper = shallowMount(OCollapse, { - slots: { - default: slotDefault - } - }) - expect(wrapper.find('.o-clps__content :first-child').html()).toBe(slotDefault) - }) - - it('should emit close event', () => { - wrapper = shallowMount(OCollapse, { - propsData: { - open: true - } - }) - const close = jest.fn() - wrapper.vm.$on('close', close) - wrapper.find('.o-clps__trigger').trigger('click') - expect(close).toHaveBeenCalledTimes(1) - }) -}) diff --git a/packages/oruga/src/components/collapse/Collapse.vue b/packages/oruga/src/components/collapse/Collapse.vue deleted file mode 100644 index 3a8fcda48..000000000 --- a/packages/oruga/src/components/collapse/Collapse.vue +++ /dev/null @@ -1,95 +0,0 @@ -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -/** - * An easy way to toggle what you want - * @displayName Collapse - * @example ./examples/Collapse.md - * @style _collapse.scss - */ -export default { - name: 'OCollapse', - mixins: [BaseComponentMixin], - configField: 'collapse', - props: { - /** - * Whether collapse is open or not, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding - */ - open: { - type: Boolean, - default: true - }, - /** - * Custom animation (transition name) - */ - animation: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'collapse.animation', 'fade') - } - }, - ariaId: { - type: String, - default: '' - }, - /** - * Trigger position - * @values top, bottom - */ - position: { - type: String, - default: 'top', - validator(value) { - return [ - 'top', - 'bottom' - ].indexOf(value) > -1 - } - }, - rootClass: [String, Function, Array], - triggerClass: [String, Function, Array], - contentClass: [String, Function, Array] - }, - data() { - return { - isOpen: this.open - } - }, - watch: { - open(value) { - this.isOpen = value - } - }, - methods: { - /** - * Toggle and emit events - */ - toggle() { - this.isOpen = !this.isOpen - this.$emit('update:open', this.isOpen) - this.$emit(this.isOpen ? 'open' : 'close') - } - }, - render(h) { - const trigger = h('div', { - staticClass: this.computedClass('triggerClass', 'o-clps__trigger'), - on: { click: this.toggle } - }, this.$scopedSlots.trigger ? this.$scopedSlots.trigger({ open: this.isOpen }) : this.$slots.trigger ) - const content = h('transition', { props: { name: this.animation } }, [ - h('div', { - staticClass: this.computedClass('contentClass', 'o-clps__content'), - attrs: { 'id': this.ariaId }, - directives: [{ - name: 'show', - value: this.isOpen - }] - }, this.$slots.default) - ]) - return h('div', - { staticClass: this.computedClass('rootClass', 'o-clps') }, - this.position === 'top' ? [trigger, content] : [content, trigger]) - } -} -</script> diff --git a/packages/oruga/src/components/collapse/Inspector.vue b/packages/oruga/src/components/collapse/Inspector.vue deleted file mode 100644 index ec28dcc48..000000000 --- a/packages/oruga/src/components/collapse/Inspector.vue +++ /dev/null @@ -1,57 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-collapse - animation="slide" - v-bind="s" - :open="true" - style="border: 1px solid #dfe2e5" - > - <div - slot="trigger" - slot-scope="props" - class="card-header" - role="button" - > - <p class="card-header-title"> - Collapse Title - </p> - <a class="card-header-icon"> - <o-icon :icon="props.open ? 'caret-up' : 'caret-down'"> </o-icon> - </a> - </div> - <div class="card-content"> - <div class="content"> - Collapse Content - </div> - </div> - </o-collapse> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "triggerClass", - description: "Class of the trigger element" - }, - { - class: "contentClass", - description: "Class of the content" - } - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/collapse/__snapshots__/Collapse.spec.js.snap b/packages/oruga/src/components/collapse/__snapshots__/Collapse.spec.js.snap deleted file mode 100644 index 414d86a19..000000000 --- a/packages/oruga/src/components/collapse/__snapshots__/Collapse.spec.js.snap +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OCollapse default render correctly 1`] = ` -<div class="o-clps"> - <div class="o-clps__trigger"></div> - <transition-stub name="fade"> - <div id="" class="o-clps__content"></div> - </transition-stub> -</div> -`; diff --git a/packages/oruga/src/components/collapse/examples/Collapse.md b/packages/oruga/src/components/collapse/examples/Collapse.md deleted file mode 100644 index 0eba893af..000000000 --- a/packages/oruga/src/components/collapse/examples/Collapse.md +++ /dev/null @@ -1,137 +0,0 @@ -## Examples - -::: demo -```html -<template> - <section> - - <o-collapse :open="false" aria-id="contentIdForA11y1"> - <template #trigger="props"> - <o-button - variant="primary" - aria-controls="contentIdForA11y1" - :aria-expanded="props.open">Click me!</o-button> - </template> - <div class="notification"> - <h3> - Subtitle - </h3> - <p> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br/> - Nulla accumsan, metus ultrices eleifend gravida, nulla nunc varius lectus, nec rutrum justo nibh eu lectus. <br/> - Ut vulputate semper dui. Fusce erat odio, sollicitudin vel erat vel, interdum mattis neque. - </p> - </div> - </o-collapse> - - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Accordion - -::: demo -```html -<template> - <section> - - <o-collapse - class="card" - animation="slide" - v-for="(collapse, index) of collapses" - :key="index" - :open="isOpen == index" - @open="isOpen = index"> - <template #trigger="props"> - <div - class="card-header" - role="button" - :aria-controls="'contentIdForA11y5-' + index" - :aria-expanded="isOpen"> - <p class="card-header-title"> - {{ collapse.title }} - </p> - <a class="card-header-icon"> - <o-icon - :icon="props.open ? 'caret-up' : 'caret-down'"> - </o-icon> - </a> - </div> - </template> - <div class="card-content"> - <div class="content"> - {{ collapse.text }} - </div> - </div> - </o-collapse> - - </section> -</template> - -<script> - export default { - data() { - return { - isOpen: 0, - collapses: [ - { - title: 'Title 1', - text: 'Text 1' - }, - { - title: 'Title 2', - text: 'Text 2' - }, - { - title: 'Title 3', - text: 'Text 3' - } - ] - } - } - } -</script> - -<style> -.card { - background-color: #fff; - box-shadow: 0 2px 3px hsla(0,0%,4%,.1), 0 0 0 1px hsla(0,0%,4%,.1); - color: #4a4a4a; - max-width: 100%; - position: relative; -} -.card-header { - background-color: transparent; - align-items: stretch; - box-shadow: 0 1px 2px hsla(0,0%,4%,.1); - display: flex; -} -.card-header-title { - align-items: center; - color: #363636; - display: flex; - flex-grow: 1; - font-weight: 700; - padding: .75rem; - margin: 0; -} -.card-header-icon { - align-items: center; - cursor: pointer; - display: flex; - padding: .75rem; - justify-content: center; -} -.card-content { - padding: 1.5rem; - background-color: transparent; -} -</style> -``` -::: diff --git a/packages/oruga/src/components/collapse/index.js b/packages/oruga/src/components/collapse/index.js deleted file mode 100644 index 4f020a6e7..000000000 --- a/packages/oruga/src/components/collapse/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Collapse from './Collapse' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Collapse) - } -} - -use(Plugin) - -export default Plugin - -export { - Collapse as OCollapse -} diff --git a/packages/oruga/src/components/datepicker/Datepicker.spec.js b/packages/oruga/src/components/datepicker/Datepicker.spec.js deleted file mode 100644 index 3c9569072..000000000 --- a/packages/oruga/src/components/datepicker/Datepicker.spec.js +++ /dev/null @@ -1,314 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ODatepicker from '@components/datepicker/Datepicker' - -import {setOptions} from '@utils/config' -import { getOptions } from '../../utils/config' - -let wrapper, defaultProps - -const newDate = (y, m, d) => { - const date = new Date(Date.UTC(y, m, d)) - date.getDate = jest.fn(() => date.getUTCDate()) - date.getMonth = jest.fn(() => date.getUTCMonth()) - return date -} - -const defaultMonthNames = [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', - 'August', 'September', 'October', 'November', 'December' -] -const defaultDayNames = ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'S'] -const defaultFirstDayOfWeek = 0 -const defaultLocale = 'it-IT' - -describe('ODatepicker', () => { - - beforeEach(() => { - setOptions(Object.assign(getOptions(), { - datepicker: { - monthNames: defaultMonthNames, - dayNames: defaultDayNames, - firstDayOfWeek: defaultFirstDayOfWeek - }, - locale: defaultLocale - })) - - defaultProps = { - dayNames: defaultDayNames, - monthNames: defaultMonthNames, - focusedDate: newDate(2018, 7, 15) - } - - wrapper = shallowMount(ODatepicker, { - propsData: { - ...defaultProps - }, - stubs: { - transition: false - } - }) - - wrapper.vm.updateInternalState = jest.fn(() => wrapper.vm.updateInternalState) - wrapper.vm.togglePicker = jest.fn(() => wrapper.vm.togglePicker) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('ODatepicker') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - wrapper.setProps({dateCreator: () => {}}) - expect(wrapper.html()).toMatchSnapshot() - }) - - it('should have valid default values', () => { - expect(wrapper.vm.firstDayOfWeek).toBe(0) - expect(wrapper.vm.monthNames).toEqual(defaultMonthNames) - expect(wrapper.vm.dayNames).toEqual(defaultDayNames) - }) - - it('react accordingly when setting computedValue', () => { - const date = new Date() - wrapper.vm.computedValue = date - expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date) - expect(wrapper.vm.togglePicker).toHaveBeenCalled() - expect(wrapper.emitted()['input']).toBeTruthy() - }) - - it('react accordingly when handling native picker', () => { - const date = new Date(2020, 0, 1) - wrapper.vm.onChangeNativePicker({ target: { value: '2020-01-01' } }) - expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date) - expect(wrapper.vm.togglePicker).toHaveBeenCalled() - expect(wrapper.emitted()['input']).toBeTruthy() - }) - - it('react accordingly when handling native picker clear', () => { - wrapper.vm.onChangeNativePicker({ target: { value: '' } }) - expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(null) - expect(wrapper.vm.togglePicker).toHaveBeenCalled() - expect(wrapper.emitted()['input']).toEqual([[null]]) - }) - - it('react accordingly when changing v-model', async () => { - const date = new Date() - wrapper.setProps({ - value: date - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date) - expect(wrapper.vm.togglePicker).toHaveBeenCalled() - }) - - it('set focusedDateData when changing focused date', async () => { - const date = newDate(2019, 8, 26) - wrapper.setProps({ - focusedDate: date - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.focusedDateData).toEqual({ - day: date.getDate(), - month: date.getMonth(), - year: date.getFullYear() - }) - }) - - it('react accordingly when calling onChange', () => { - const date = new Date() - wrapper.setProps({dateParser: jest.fn()}) - wrapper.vm.onChange(date) - expect(wrapper.vm.dateParser).toHaveBeenCalled() - }) - - it('react accordingly when calling prev', async () => { - let date = newDate(2019, 8, 26) - wrapper.setProps({ - focusedDate: date - }) - await wrapper.vm.$nextTick() - wrapper.vm.prev() - expect(wrapper.vm.focusedDateData.month).toBe(7) - - date = newDate(2019, 0, 26) - wrapper.setProps({ - focusedDate: date - }) - await wrapper.vm.$nextTick() - wrapper.vm.prev() - expect(wrapper.vm.focusedDateData.year).toBe(2018) - expect(wrapper.vm.focusedDateData.month).toBe(11) - }) - - it('react accordingly when calling next', async () => { - let date = newDate(2019, 8, 26) - wrapper.setProps({ - focusedDate: date - }) - await wrapper.vm.$nextTick() - wrapper.vm.next() - expect(wrapper.vm.focusedDateData.month).toBe(9) - - date = newDate(2019, 11, 26) - wrapper.setProps({ - focusedDate: date - }) - await wrapper.vm.$nextTick() - wrapper.vm.next() - expect(wrapper.vm.focusedDateData.year).toBe(2020) - expect(wrapper.vm.focusedDateData.month).toBe(0) - }) - - it('handles accordingly the list of months', async () => { - wrapper.setProps({ - focusedDate: newDate(2021, 10, 16), - minDate: newDate(2021, 10, 15), - maxDate: null - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.listOfMonths.filter((month) => !month.disabled).map((month) => month.name)).toEqual(['November', 'December']) - - wrapper.setProps({ - focusedDate: newDate(2021, 2, 1), - minDate: null, - maxDate: newDate(2021, 2, 15) - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.listOfMonths.filter((month) => !month.disabled).map((month) => month.name)).toEqual(['January', 'February', 'March']) - }) - - it('handles accordingly the list of years', () => { - wrapper.setProps({ - minDate: newDate(2017, 1, 1), - maxDate: null - }) - const y = [2017] - for (let i = 1; i <= 11; i++) y.push(y[i - 1] + 1) - expect(wrapper.vm.listOfYears).toEqual(y.reverse()) - - wrapper.setProps({ - maxDate: newDate(2020, 1, 1) - }) - expect(wrapper.vm.listOfYears.sort()).toEqual([2020, 2019, 2018, 2017].sort()) - }) - - it('handles accordingly focus', () => { - wrapper.setProps({ - openOnFocus: false - }) - wrapper.vm.onFocus = jest.fn() - wrapper.vm.togglePicker = jest.fn() - - wrapper.vm.handleOnFocus() - expect(wrapper.vm.onFocus).toHaveBeenCalled() - expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(0) - - wrapper.setProps({ - openOnFocus: true - }) - wrapper.vm.handleOnFocus() - expect(wrapper.vm.onFocus).toHaveBeenCalled() - expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(1) - }) - - describe('#dateFormatter', () => { - it('should add one to month since month in dates starts from 0', () => { - const dateToFormat = new Date(2019, 3, 1) - const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm) - expect(formattedDate).toEqual('1/4/2019') - }) - - it('should format based on 2-digit numeric locale date with type === month', () => { - wrapper.setProps({ - type: 'month' - }) - const dateToFormat = new Date(2019, 3, 1) - const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm) - expect(formattedDate).toEqual('4/2019') - }) - - it('should format a range of dates passed via array', () => { - const dateToFormat = [ - new Date(2019, 3, 1), - new Date(2019, 3, 3) - ] - const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm) - expect(formattedDate).toEqual('1/4/2019 - 3/4/2019') - }) - - describe('multiple', () => { - beforeEach(() => { - wrapper.setProps({ - inline: true, - multiple: true - }) - wrapper.vm.updateInternalState = jest.fn(() => wrapper.vm.updateInternalState) - wrapper.vm.togglePicker = jest.fn(() => wrapper.vm.togglePicker) - }) - - it('should format multiple dates passed via array', () => { - const dateToFormat = [ - new Date(2019, 3, 1), - new Date(2019, 3, 13), - new Date(2019, 3, 3) - ] - const formattedDate = wrapper.vm.dateFormatter(dateToFormat, wrapper.vm) - expect(formattedDate).toEqual('1/4/2019, 13/4/2019, 3/4/2019') - }) - - it('react accordingly when setting computedValue', () => { - const date = new Date() - wrapper.vm.computedValue = date - expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date) - expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(0) - expect(wrapper.emitted()['input']).toBeTruthy() - }) - - it('react accordingly when changing v-model', async () => { - const date = new Date() - wrapper.setProps({ - value: date - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.updateInternalState).toHaveBeenCalledWith(date) - expect(wrapper.vm.togglePicker).toHaveBeenCalledTimes(0) - }) - }) - }) - - describe('#formatValue', () => { - it('should call dateFormatter, passing the date', () => { - const mockDateFormatter = jest.fn() - wrapper.setProps({ - dateFormatter: mockDateFormatter, - closeOnClick: false - }) - const date = new Date() - wrapper.vm.formatValue(date) - expect(mockDateFormatter.mock.calls[0][0]).toEqual(date) - }) - - it('should not call dateFormatter when value is undefined or NaN', () => { - const mockDateFormatter = jest.fn() - wrapper.setProps({ - dateFormatter: mockDateFormatter - }) - wrapper.vm.formatValue(undefined) - expect(mockDateFormatter.mock.calls.length).toEqual(0) - wrapper.vm.formatValue('oruga') - expect(mockDateFormatter.mock.calls.length).toEqual(0) - }) - - it('should not call dateFormatter when value is an array with undefined or NaN elements', () => { - const mockDateFormatter = jest.fn() - wrapper.setProps({ - dateFormatter: mockDateFormatter - }) - wrapper.vm.formatValue([new Date(), undefined]) - expect(mockDateFormatter.mock.calls.length).toEqual(0) - wrapper.vm.formatValue([new Date(), 'oruga']) - expect(mockDateFormatter.mock.calls.length).toEqual(0) - }) - }) - -}) diff --git a/packages/oruga/src/components/datepicker/Datepicker.vue b/packages/oruga/src/components/datepicker/Datepicker.vue deleted file mode 100644 index a4f1fc83f..000000000 --- a/packages/oruga/src/components/datepicker/Datepicker.vue +++ /dev/null @@ -1,1075 +0,0 @@ -<template> - <div :class="rootClasses"> - <o-dropdown - v-if="!isMobile || inline" - ref="dropdown" - v-bind="dropdownBind" - :position="position" - :disabled="disabled" - :inline="inline" - :mobile-modal="mobileModal" - :trap-focus="trapFocus" - :aria-role="ariaRole" - :aria-modal="!inline" - :trigger-tabindex="-1" - :append-to-body="appendToBody" - append-to-body-copy-parent - @active-change="onActiveChange"> - <template - #trigger - v-if="!inline"> - <slot name="trigger"> - <o-input - ref="input" - autocomplete="off" - v-bind="inputBind" - :value="formattedValue" - :expanded="expanded" - :placeholder="placeholder" - :size="size" - :icon="icon" - :icon-right="iconRight" - :icon-right-clickable="iconRightClickable" - :icon-pack="iconPack" - :rounded="rounded" - :disabled="disabled" - :readonly="!editable" - :use-html5-validation="false" - @click.native="onInputClick" - @icon-right-click="$emit('icon-right-click')" - @keyup.native.enter="togglePicker(true)" - @change.native="onChange($event.target.value)" - @focus="handleOnFocus" /> - </slot> - </template> - <o-dropdown-item - override - tag="div" - :item-class="boxClasses" - :disabled="disabled" - :clickable="false"> - - <header :class="headerClasses"> - <slot name="header"> - <div :class="headerButtonsClasses"> - <a - v-show="!showPrev && !disabled" - :class="prevBtnClasses" - role="button" - href="#" - :disabled="disabled" - :aria-label="ariaPreviousLabel" - @click.prevent="prev" - @keydown.enter.prevent="prev" - @keydown.space.prevent="prev"> - - <o-icon - :icon="iconPrev" - :pack="iconPack" - both - clickable /> - </a> - <a - v-show="!showNext && !disabled" - :class="nextBtnClasses" - role="button" - href="#" - :disabled="disabled" - :aria-label="ariaNextLabel" - @click.prevent="next" - @keydown.enter.prevent="next" - @keydown.space.prevent="next"> - - <o-icon - :icon="iconNext" - :pack="iconPack" - both - clickable /> - </a> - <div :class="listsClasses"> - <o-select - v-if="!isTypeMonth" - v-model="focusedDateData.month" - v-bind="selectListBind" - :disabled="disabled" - :size="size"> - <option - v-for="month in listOfMonths" - :value="month.index" - :key="month.name" - :disabled="month.disabled"> - {{ month.name }} - </option> - </o-select> - <o-select - v-model="focusedDateData.year" - v-bind="selectListBind" - :disabled="disabled" - :size="size"> - <option - v-for="year in listOfYears" - :value="year" - :key="year"> - {{ year }} - </option> - </o-select> - </div> - </div> - </slot> - </header> - <slot name="table"> - <o-datepicker-table - v-if="!isTypeMonth" - v-model="computedValue" - :day-names="newDayNames" - :month-names="newMonthNames" - :first-day-of-week="firstDayOfWeek" - :rules-for-first-week="rulesForFirstWeek" - :min-date="minDate" - :max-date="maxDate" - :focused="focusedDateData" - :disabled="disabled" - :unselectable-dates="unselectableDates" - :unselectable-days-of-week="unselectableDaysOfWeek" - :selectable-dates="selectableDates" - :events="events" - :indicators="indicators" - :date-creator="dateCreator" - :type-month="isTypeMonth" - :nearby-month-days="nearbyMonthDays" - :nearby-selectable-month-days="nearbySelectableMonthDays" - :show-week-number="showWeekNumber" - :week-number-clickable="weekNumberClickable" - :range="range" - :multiple="multiple" - :table-class="tableClass" - :table-head-class="tableHeadClass" - :table-head-cell-class="tableHeadCellClass" - :table-body-class="tableBodyClass" - :table-row-class="tableRowClass" - :table-cell-class="tableCellClass" - :table-cell-selected-class="tableCellSelectedClass" - :table-cell-first-selected-class="tableCellFirstSelectedClass" - :table-cell-invisible-class="tableCellInvisibleClass" - :table-cell-within-selected-class="tableCellWithinSelectedClass" - :table-cell-last-selected-class="tableCellLastSelectedClass" - :table-cell-first-hovered-class="tableCellFirstHoveredClass" - :table-cell-within-hovered-class="tableCellWithinHoveredClass" - :table-cell-last-hovered-class="tableCellLastHoveredClass" - :table-cell-today-class="tableCellTodayClass" - :table-cell-selectable-class="tableCellSelectableClass" - :table-cell-unselectable-class="tableCellUnselectableClass" - :table-cell-nearby-class="tableCellNearbyClass" - :table-cell-events-class="tableCellEventsClass" - :table-events-class="tableEventsClass" - :table-event-variant-class="tableEventVariantClass" - :table-event-class="tableEventClass" - :table-event-indicators-class="tableEventIndicatorsClass" - @range-start="date => $emit('range-start', date)" - @range-end="date => $emit('range-end', date)" - @close="togglePicker(false)" - @update:focused="focusedDateData = $event" - /> - <o-datepicker-month - v-if="isTypeMonth" - v-model="computedValue" - :month-names="newMonthNames" - :min-date="minDate" - :max-date="maxDate" - :focused="focusedDateData" - :disabled="disabled" - :unselectable-dates="unselectableDates" - :unselectable-days-of-week="unselectableDaysOfWeek" - :selectable-dates="selectableDates" - :events="events" - :indicators="indicators" - :date-creator="dateCreator" - :range="range" - :multiple="multiple" - :month-class="monthClass" - :month-body-class="monthBodyClass" - :month-table-class="monthTableClass" - :month-cell-class="monthCellClass" - :month-cell-selected-class="monthCellSelectedClass" - :month-cell-first-selected-class="monthCellFirstSelectedClass" - :month-cell-within-selected-class="monthCellWithinSelectedClass" - :month-cell-last-selected-class="monthCellLastSelectedClass" - :month-cell-within-hovered-range-class="monthCellWithinHoveredRangeClass" - :month-cell-first-hovered-class="monthCellFirstHoveredClass" - :month-cell-within-hovered-class="monthCellWithinHoveredClass" - :month-cell-last-hovered-class="monthCellLastHoveredClass" - :month-cell-today-class="monthCellTodayClass" - :month-cell-selectable-class="monthCellSelectableClass" - :month-cell-unselectable-class="monthCellUnselectableClass" - :month-cell-events-class="monthCellEventsClass" - @range-start="date => $emit('range-start', date)" - @range-end="date => $emit('range-end', date)" - @close="togglePicker(false)" - @change-focus="changeFocus" - @update:focused="focusedDateData = $event" - /> - </slot> - <footer - v-if="$slots.footer !== undefined" - :class="footerClasses"> - <slot name="footer" /> - </footer> - </o-dropdown-item> - </o-dropdown> - - <o-input - v-else - ref="input" - v-bind="inputBind" - :type="!isTypeMonth ? 'date' : 'month'" - autocomplete="off" - :value="formatNative(computedValue)" - :placeholder="placeholder" - :size="size" - :icon="icon" - :icon-pack="iconPack" - :rounded="rounded" - :max="formatNative(maxDate)" - :min="formatNative(minDate)" - :disabled="disabled" - :readonly="false" - :use-html5-validation="false" - @change.native="onChangeNativePicker" - @focus="onFocus" - @blur="onBlur" - @invalid="onInvalid" /> - </div> -</template> - -<script> -import FormElementMixin from '../../utils/FormElementMixin' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import { isMobile, getMonthNames, getWeekdayNames, matchWithGroups, getValueByPath } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -import Dropdown from '../dropdown/Dropdown' -import DropdownItem from '../dropdown/DropdownItem' -import Input from '../input/Input' -import Select from '../select/Select' -import Icon from '../icon/Icon' - -import DatepickerTable from './DatepickerTable' -import DatepickerMonth from './DatepickerMonth' - -const defaultDateFormatter = (date, vm) => { - const targetDates = Array.isArray(date) ? date : [date] - const dates = targetDates.map((date) => { - const d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12) - return !vm.isTypeMonth ? vm.dtf.format(d) : vm.dtfMonth.format(d) - }) - return !vm.multiple ? dates.join(' - ') : dates.join(', ') -} - -const defaultDateParser = (date, vm) => { - if (vm.dtf.formatToParts && typeof vm.dtf.formatToParts === 'function') { - const formatRegex = (vm.isTypeMonth ? vm.dtfMonth : vm.dtf) - .formatToParts(new Date(2000, 11, 25)).map((part) => { - if (part.type === 'literal') { - return part.value - } - return `((?!=<${part.type}>)\\d+)` - }).join('') - const dateGroups = matchWithGroups(formatRegex, date) - - // We do a simple validation for the group. - // If it is not valid, it will fallback to Date.parse below - if ( - dateGroups.year && - dateGroups.year.length === 4 && - dateGroups.month && - dateGroups.month <= 12 - ) { - if (vm.isTypeMonth) return new Date(dateGroups.year, dateGroups.month - 1) - else if (dateGroups.day && dateGroups.day <= 31) { - return new Date(dateGroups.year, dateGroups.month - 1, dateGroups.day, 12) - } - } - } - // Fallback if formatToParts is not supported or if we were not able to parse a valid date - if (!vm.isTypeMonth) return new Date(Date.parse(date)) - if (date) { - const s = date.split('/') - const year = s[0].length === 4 ? s[0] : s[1] - const month = s[0].length === 2 ? s[0] : s[1] - if (year && month) { - return new Date(parseInt(year, 10), parseInt(month, 10) - 1, 1, 0, 0, 0, 0) - } - } - return null -} - -/** - * An input with a simple dropdown/modal for selecting a date, uses native datepicker for mobile - * @displayName Datepicker - * @example ./examples/Datepicker.md - * @style _datepicker.scss - */ -export default { - name: 'ODatepicker', - components: { - [DatepickerTable.name]: DatepickerTable, - [DatepickerMonth.name]: DatepickerMonth, - [Input.name]: Input, - [Select.name]: Select, - [Icon.name]: Icon, - [Dropdown.name]: Dropdown, - [DropdownItem.name]: DropdownItem - }, - configField: 'datepicker', - mixins: [BaseComponentMixin, FormElementMixin, MatchMediaMixin], - inheritAttrs: false, - provide() { - return { - $datepicker: this - } - }, - props: { - /** @model */ - value: { - type: [Date, Array] - }, - /* Names of days to display in table header */ - dayNames: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'datepicker.dayNames', undefined) - } - }, - /* Names of months to display in table header */ - monthNames: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'datepicker.monthNames', undefined) - } - }, - /** - * First day of week to display in table header (getDay() of Date Object) - * @values 0, 1, 2, 3, 4, 5, 6 - */ - firstDayOfWeek: { - type: Number, - default: () => { - return getValueByPath(getOptions(), 'datepicker.firstDayOfWeek', 0) - } - }, - /** - * Size of button, optional - * @values small, medium, large - */ - size: String, - /* Datepicker is shown inline, input is removed */ - inline: Boolean, - /* Earliest date available for selection */ - minDate: Date, - /* Latest date available for selection */ - maxDate: Date, - /* Date that should be initially focused upon */ - focusedDate: Date, - placeholder: String, - /* Enable input/typing. Note that you might have to set a custom date parser */ - editable: Boolean, - disabled: Boolean, - /* Array or function of unselectable dates */ - unselectableDates: [Array, Function], - /* Array of unselectable days of week */ - unselectableDaysOfWeek: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'datepicker.unselectableDaysOfWeek', undefined) - } - }, - /* Array or function of selectable dates */ - selectableDates: [Array, Function], - /* Function to format date to a string for display in the input */ - dateFormatter: { - type: Function, - default: (date, vm) => { - const dateFormatter = getValueByPath(getOptions(), 'datepicker.dateFormatter', undefined) - if (typeof dateFormatter === 'function') { - return dateFormatter(date) - } else { - return defaultDateFormatter(date, vm) - } - } - }, - /* Function to parse string to a date for set a date from the input to the component */ - dateParser: { - type: Function, - default: (date, vm) => { - const dateParser = getValueByPath(getOptions(), 'datepicker.dateParser', undefined) - if (typeof dateParser === 'function') { - return dateParser(date) - } else { - return defaultDateParser(date, vm) - } - } - }, - /* Function used internally to create a new Date instance */ - dateCreator: { - type: Function, - default: () => { - const dateCreator = getValueByPath(getOptions(), 'datepicker.dateCreator', undefined) - if (typeof dateCreator === 'function') { - return dateCreator() - } else { - return new Date() - } - } - }, - /* Enable native datepicker on mobile */ - mobileNative: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.mobileNative', true) - } - }, - /** - * Optional, position of the datepicker relative to the input - * @values top-right, top-left, bottom-left - */ - position: String, - /** - * Icon name to be added on the right side - */ - iconRight: String, - /** - * Make the icon right clickable - */ - iconRightClickable: Boolean, - /* Dates to display indicators */ - events: Array, - /* Shape to use when showing event indicators */ - indicators: { - type: String, - default: 'dots' - }, - /* Open datepicker on input focus */ - openOnFocus: Boolean, - /* Icon to use for previous month */ - iconPrev: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'datepicker.iconPrev', 'chevron-left') - } - }, - /* Icon to use for next month */ - iconNext: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'datepicker.iconNext', 'chevron-right') - } - }, - /* Years range relative to selected year */ - yearsRange: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'datepicker.yearsRange', [-100, 10]) - } - }, - type: { - type: String, - validator: (value) => { - return [ - 'month' - ].indexOf(value) >= 0 - } - }, - /* Show/Hide nearby month days (prev and next month) */ - nearbyMonthDays: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.nearbyMonthDays', true) - } - }, - /* When nearby-month-days, it allows to select/unselect nearby month days */ - nearbySelectableMonthDays: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.nearbySelectableMonthDays', false) - } - }, - /* Display week number */ - showWeekNumber: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.showWeekNumber', false) - } - }, - /* Enable click on week number */ - weekNumberClickable: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.weekNumberClickable', false) - } - }, - /* Choose the rule to determinate the first week of Year, 4 for ISO or 1 for other */ - rulesForFirstWeek: { - type: Number, - default: () => 4 - }, - /* Flag to allow choosing a range of date */ - range: { - type: Boolean, - default: false - }, - /* Choose whether the Datepicker should close after selecting a date */ - closeOnClick: { - type: Boolean, - default: true - }, - /* Flag to allow choosing multiple dates */ - multiple: { - type: Boolean, - default: false - }, - /* Datepicker is shown into a modal on mobile */ - mobileModal: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.mobileModal', true) - } - }, - /* Trap focus inside the datepicker */ - trapFocus: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'datepicker.trapFocus', true) - } - }, - /* Accept a string with a BCP 47 language tag, or an array of such strings. See Unicode BCP 47 locale identifier */ - locale: { - type: [String, Array], - default: () => { - return getValueByPath(getOptions(), 'locale') - } - }, - /* Append datepicker calendar to body */ - appendToBody: Boolean, - /* Accessibility label for the next month button */ - ariaNextLabel: String, - /* Accessibility label for the prev month button */ - ariaPreviousLabel: String, - rootClass: [String, Function, Array], - sizeClass: [String, Function, Array], - boxClass: [String, Function, Array], - headerClass: [String, Function, Array], - headerButtonsClass: [String, Function, Array], - headerButtonsSizeClass: [String, Function, Array], - prevBtnClass: [String, Function, Array], - nextBtnClass: [String, Function, Array], - listsClass: [String, Function, Array], - footerClass: [String, Function, Array], - tableClass: [String, Function, Array], - tableHeadClass: [String, Function, Array], - tableHeadCellClass: [String, Function, Array], - tableBodyClass: [String, Function, Array], - tableRowClass: [String, Function, Array], - tableCellClass: [String, Function, Array], - tableCellSelectedClass: [String, Function, Array], - tableCellFirstSelectedClass: [String, Function, Array], - tableCellInvisibleClass: [String, Function, Array], - tableCellWithinSelectedClass: [String, Function, Array], - tableCellLastSelectedClass: [String, Function, Array], - tableCellFirstHoveredClass: [String, Function, Array], - tableCellWithinHoveredClass: [String, Function, Array], - tableCellLastHoveredClass: [String, Function, Array], - tableCellTodayClass: [String, Function, Array], - tableCellSelectableClass: [String, Function, Array], - tableCellUnselectableClass: [String, Function, Array], - tableCellNearbyClass: [String, Function, Array], - tableCellEventsClass: [String, Function, Array], - tableEventsClass: [String, Function, Array], - tableEventVariantClass: [String, Function, Array], - tableEventClass: [String, Function, Array], - tableEventIndicatorsClass: [String, Function, Array], - mobileClass: [String, Function, Array], - /* datapickermonth classes */ - monthClass: [String, Function, Array], - monthBodyClass: [String, Function, Array], - monthTableClass: [String, Function, Array], - monthCellClass: [String, Function, Array], - monthCellSelectedClass: [String, Function, Array], - monthCellFirstSelectedClass: [String, Function, Array], - monthCellWithinSelectedClass: [String, Function, Array], - monthCellLastSelectedClass: [String, Function, Array], - monthCellWithinHoveredRangeClass: [String, Function, Array], - monthCellFirstHoveredClass: [String, Function, Array], - monthCellWithinHoveredClass: [String, Function, Array], - monthCellLastHoveredClass: [String, Function, Array], - monthCellTodayClass: [String, Function, Array], - monthCellSelectableClass: [String, Function, Array], - monthCellUnselectableClass: [String, Function, Array], - monthCellEventsClass: [String, Function, Array], - inputClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'datepicker.inputClasses', {}) - } - }, - dropdownClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'datepicker.dropdownClasses', {}) - } - }, - selectListClasses: Object - }, - data() { - const focusedDate = (Array.isArray(this.value) ? this.value[0] : (this.value)) || - this.focusedDate || this.dateCreator() - - if (!this.value && this.maxDate && this.maxDate.getFullYear() < focusedDate.getFullYear()) { - focusedDate.setFullYear(this.maxDate.getFullYear()) - } - - return { - dateSelected: this.value, - focusedDateData: { - day: focusedDate.getDate(), - month: focusedDate.getMonth(), - year: focusedDate.getFullYear() - } - } - }, - computed: { - inputBind() { - return { - ...this.$attrs, - ...this.inputClasses - } - }, - dropdownBind() { - return { - 'root-class': this.computedClass('dropdownClasses.rootClass', 'o-dpck__dropdown'), - ...this.dropdownClasses - } - }, - selectListBind() { - return { - ...this.selectListClasses - } - }, - rootClasses() { - return [ - this.computedClass('rootClass', 'o-dpck'), - { [this.computedClass('sizeClass', 'o-dpck--', this.size)]: this.size }, - { [this.computedClass('mobileClass', 'o-dpck--mobile')]: this.isMatchMedia }, - ] - }, - boxClasses() { - return [ - this.computedClass('boxClass', 'o-dpck__box') - ] - }, - headerClasses() { - return [ - this.computedClass('headerClass', 'o-dpck__header') - ] - }, - headerButtonsClasses() { - return [ - this.computedClass('headerButtonsClass', 'o-dpck__header__buttons'), - { [this.computedClass('headerButtonsSizeClass', 'o-dpck__header__buttons--', this.size)]: this.size }, - ] - }, - prevBtnClasses() { - return [ - this.computedClass('prevBtnClass', 'o-dpck__header__previous') - ] - }, - nextBtnClasses() { - return [ - this.computedClass('nextBtnClass', 'o-dpck__header__next') - ] - }, - listsClasses() { - return [ - this.computedClass('listsClass', 'o-dpck__header__list') - ] - }, - footerClasses() { - return [ - this.computedClass('footerClass', 'o-dpck__footer') - ] - }, - - computedValue: { - get() { - return this.dateSelected - }, - set(value) { - this.updateInternalState(value) - if (!this.multiple) this.togglePicker(false) - this.$emit('input', value) - if (this.useHtml5Validation) { - this.$nextTick(() => { - this.checkHtml5Validity() - }) - } - } - }, - formattedValue() { - return this.formatValue(this.computedValue) - }, - localeOptions() { - return new Intl.DateTimeFormat(this.locale, { - year: 'numeric', - month: 'numeric' - }).resolvedOptions() - }, - dtf() { - return new Intl.DateTimeFormat(this.locale/*, { timeZone: 'UTC' } */) - }, - dtfMonth() { - return new Intl.DateTimeFormat(this.locale, { - year: this.localeOptions.year || 'numeric', - month: this.localeOptions.month || '2-digit', - // timeZone: 'UTC' - }) - }, - newMonthNames() { - if (Array.isArray(this.monthNames)) { - return this.monthNames - } - return getMonthNames(this.locale) - }, - newDayNames() { - if (Array.isArray(this.dayNames)) { - return this.dayNames - } - return getWeekdayNames(this.locale) - }, - listOfMonths() { - let minMonth = 0 - let maxMonth = 12 - if (this.minDate && this.focusedDateData.year === this.minDate.getFullYear()) { - minMonth = this.minDate.getMonth() - } - if (this.maxDate && this.focusedDateData.year === this.maxDate.getFullYear()) { - maxMonth = this.maxDate.getMonth() - } - return this.newMonthNames.map((name, index) => { - return { - name: name, - index: index, - disabled: index < minMonth || index > maxMonth - } - }) - }, - /* - * Returns an array of years for the year dropdown. If earliest/latest - * dates are set by props, range of years will fall within those dates. - */ - listOfYears() { - let latestYear = this.focusedDateData.year + this.yearsRange[1] - if (this.maxDate && this.maxDate.getFullYear() < latestYear) { - latestYear = Math.max(this.maxDate.getFullYear(), this.focusedDateData.year) - } - - let earliestYear = this.focusedDateData.year + this.yearsRange[0] - if (this.minDate && this.minDate.getFullYear() > earliestYear) { - earliestYear = Math.min(this.minDate.getFullYear(), this.focusedDateData.year) - } - - const arrayOfYears = [] - for (let i = earliestYear; i <= latestYear; i++) { - arrayOfYears.push(i) - } - - return arrayOfYears.reverse() - }, - - showPrev() { - if (!this.minDate) return false - if (this.isTypeMonth) { - return this.focusedDateData.year <= this.minDate.getFullYear() - } - const dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month) - const date = new Date(this.minDate.getFullYear(), this.minDate.getMonth()) - return (dateToCheck <= date) - }, - - showNext() { - if (!this.maxDate) return false - if (this.isTypeMonth) { - return this.focusedDateData.year >= this.maxDate.getFullYear() - } - const dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month) - const date = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth()) - return (dateToCheck >= date) - }, - - isMobile() { - return this.mobileNative && isMobile.any() - }, - - isTypeMonth() { - return this.type === 'month' - }, - - ariaRole() { - return !this.inline ? 'dialog' : undefined - }, - - $elementRef() { - return 'input' - } - }, - watch: { - /** - * When v-model is changed: - * 1. Update internal value. - * 2. If it's invalid, validate again. - */ - value(value) { - this.updateInternalState(value) - if (!this.multiple) this.togglePicker(false) - }, - - focusedDate(value) { - if (value) { - this.focusedDateData = { - day: value.getDate(), - month: value.getMonth(), - year: value.getFullYear() - } - } - }, - - /* - * Emit input event on month and/or year change - */ - 'focusedDateData.month'(value) { - this.$emit('change-month', value) - }, - 'focusedDateData.year'(value) { - this.$emit('change-year', value) - } - }, - methods: { - /* - * Parse string into date - */ - onChange(value) { - const date = this.dateParser(value, this) - if (date && (!isNaN(date) || - (Array.isArray(date) && date.length === 2 && !isNaN(date[0]) && !isNaN(date[1])))) { - this.computedValue = date - } else { - // Force refresh input value when not valid date - this.computedValue = null - if (this.$refs.input) { - this.$refs.input.newValue = this.computedValue - } - } - }, - - /* - * Format date into string - */ - formatValue(value) { - if (Array.isArray(value)) { - const isArrayWithValidDates = Array.isArray(value) && value.every((v) => !isNaN(v)) - return isArrayWithValidDates ? this.dateFormatter([...value], this) : null - } - return (value && !isNaN(value)) ? this.dateFormatter(value, this) : null - }, - - /* - * Either decrement month by 1 if not January or decrement year by 1 - * and set month to 11 (December) or decrement year when 'month' - */ - prev() { - if (this.disabled) return - - if (this.isTypeMonth) { - this.focusedDateData.year -= 1 - } else { - if (this.focusedDateData.month > 0) { - this.focusedDateData.month -= 1 - } else { - this.focusedDateData.month = 11 - this.focusedDateData.year -= 1 - } - } - }, - - /* - * Either increment month by 1 if not December or increment year by 1 - * and set month to 0 (January) or increment year when 'month' - */ - next() { - if (this.disabled) return - - if (this.isTypeMonth) { - this.focusedDateData.year += 1 - } else { - if (this.focusedDateData.month < 11) { - this.focusedDateData.month += 1 - } else { - this.focusedDateData.month = 0 - this.focusedDateData.year += 1 - } - } - }, - - formatNative(value) { - return this.isTypeMonth - ? this.formatYYYYMM(value) : this.formatYYYYMMDD(value) - }, - - /* - * Format date into string 'YYYY-MM-DD' - */ - formatYYYYMMDD(value) { - const date = new Date(value) - if (value && !isNaN(date.getTime())) { - const year = date.getFullYear() - const month = date.getMonth() + 1 - const day = date.getDate() - return year + '-' + - ((month < 10 ? '0' : '') + month) + '-' + - ((day < 10 ? '0' : '') + day) - } - return '' - }, - - /* - * Format date into string 'YYYY-MM' - */ - formatYYYYMM(value) { - const date = new Date(value) - if (value && !isNaN(date.getTime())) { - const year = date.getFullYear() - const month = date.getMonth() + 1 - return year + '-' + - ((month < 10 ? '0' : '') + month) - } - return '' - }, - - /* - * Parse date from string - */ - onChangeNativePicker(event) { - const date = event.target.value - const s = date ? date.split('-') : [] - if (s.length === 3) { - const year = parseInt(s[0], 10) - const month = parseInt(s[1]) - 1 - const day = parseInt(s[2]) - this.computedValue = new Date(year, month, day) - } else { - this.computedValue = null - } - }, - updateInternalState(value) { - if (this.dateSelected === value) return - const isArray = Array.isArray(value) - const currentDate = isArray - ? (!value.length ? this.dateCreator() : value[value.length - 1]) - : (!value ? this.dateCreator() : value) - if (!isArray || (isArray && this.dateSelected && value.length > this.dateSelected.length)) { - this.focusedDateData = { - day: currentDate.getDate(), - month: currentDate.getMonth(), - year: currentDate.getFullYear() - } - } - this.dateSelected = value - }, - - /* - * Toggle datepicker - */ - togglePicker(active) { - if (this.$refs.dropdown) { - const isActive = typeof active === 'boolean' - ? active - : !this.$refs.dropdown.isActive - if (isActive) { - this.$refs.dropdown.isActive = isActive - } else if (this.closeOnClick) { - this.$refs.dropdown.isActive = isActive - } - } - }, - - /* - * Call default onFocus method and show datepicker - */ - handleOnFocus(event) { - this.onFocus(event) - if (this.openOnFocus) { - this.togglePicker(true) - } - }, - - /* - * Toggle dropdown - */ - toggle() { - if (this.mobileNative && this.isMobile) { - const input = this.$refs.input.$refs.input - input.focus() - input.click() - return - } - this.$refs.dropdown.toggle() - }, - - /* - * Avoid dropdown toggle when is already visible - */ - onInputClick(event) { - if (this.$refs.dropdown.isActive) { - event.stopPropagation() - } - }, - - /** - * Keypress event that is bound to the document. - */ - keyPress({ key }) { - if (this.$refs.dropdown && this.$refs.dropdown.isActive && (key === 'Escape' || key === 'Esc')) { - this.togglePicker(false) - } - }, - - /** - * Emit 'blur' event on dropdown is not active (closed) - */ - onActiveChange(value) { - if (!value) { - this.onBlur() - } - this.$emit('active-change', value) - }, - - changeFocus(day) { - this.focusedDateData = { - day: day.getDate(), - month: day.getMonth(), - year: day.getFullYear() - } - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('keyup', this.keyPress) - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('keyup', this.keyPress) - } - } -} -</script> diff --git a/packages/oruga/src/components/datepicker/DatepickerMixin.js b/packages/oruga/src/components/datepicker/DatepickerMixin.js deleted file mode 100644 index 9608e1bf1..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerMixin.js +++ /dev/null @@ -1,46 +0,0 @@ -export default { - methods: { - manageKeydown(event, weekDay) { - // https://developer.mozilla.org/fr/docs/Web/API/KeyboardEvent/key/Key_Values#Navigation_keys - const { key } = event - let preventDefault = true - switch (key) { - case 'Tab': { - preventDefault = false - break - } - case ' ': - case 'Space': - case 'Spacebar': - case 'Enter': { - this.emitChosenDate(weekDay) - break - } - - case 'ArrowLeft': - case 'Left': { - this.changeFocus(weekDay, -1) - break - } - case 'ArrowRight': - case 'Right': { - this.changeFocus(weekDay, 1) - break - } - case 'ArrowUp': - case 'Up': { - this.changeFocus(weekDay, -7) - break - } - case 'ArrowDown': - case 'Down': { - this.changeFocus(weekDay, 7) - break - } - } - if (preventDefault) { - event.preventDefault() - } - } - } -} diff --git a/packages/oruga/src/components/datepicker/DatepickerMonth.spec.js b/packages/oruga/src/components/datepicker/DatepickerMonth.spec.js deleted file mode 100644 index b951e5aad..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerMonth.spec.js +++ /dev/null @@ -1,463 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ODatepickerMonth from '@components/datepicker/DatepickerMonth' - -const newDate = (y, m, d) => { - const date = new Date(Date.UTC(y, m, d)) - date.getDate = jest.fn(() => date.getUTCDate()) - date.getMonth = jest.fn(() => date.getUTCMonth()) - date.getFullYear = jest.fn(() => date.getUTCFullYear()) - return date -} - -const thisMonth = newDate(2020, 4, 15).getUTCMonth() -let events = [ - newDate(2018, 10, 10), - newDate(2019, thisMonth, 2), - newDate(2019, thisMonth, 6), - { - date: newDate(2019, thisMonth, 6), - type: 'is-info' - }, - { - date: newDate(2019, thisMonth, 8), - type: 'is-danger' - }, - { - date: newDate(2019, thisMonth, 10), - type: 'is-success' - }, - { - date: newDate(2019, thisMonth, 10), - type: 'is-link' - }, - newDate(2019, thisMonth, 12), - { - date: newDate(2019, thisMonth, 12), - type: 'is-warning' - }, - { - date: newDate(2019, thisMonth, 16), - type: 'is-danger' - }, - newDate(2019, thisMonth, 20), - { - date: newDate(2019, thisMonth, 29), - type: 'is-success' - }, - { - date: newDate(2019, thisMonth, 29), - type: 'is-warning' - }, - { - date: newDate(2019, thisMonth, 29), - type: 'is-info' - } -] - - -const config = { - defaultMonthNames: [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', - 'August', 'September', 'October', 'November', 'December' - ], - focusedDate: newDate(2019, thisMonth, 11) -} -describe('ODatepickerMonth', () => { - const dateCreator = () => newDate() - - it('is called', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator - } - }) - expect(wrapper.name()).toBe('ODatepickerMonth') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator - } - }) - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage events accordingly', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator, - events - } - }) - expect(wrapper.vm.hasEvents).toBeTruthy() - expect(wrapper.vm.eventsInThisYear.length).toBe(events.length - 1) - }) - - it('emit chosen date', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator - } - }) - wrapper.vm.selectableDate = jest.fn(() => true) - wrapper.vm.emitChosenDate(5) - expect(wrapper.vm.selectableDate).toHaveBeenCalled() - expect(wrapper.emitted()['input']).toBeTruthy() - }) - - it('emit input when updateSelectedDate is called with range props false', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator, - range: false - } - }) - - wrapper.vm.selectableDate = jest.fn(() => true) - wrapper.vm.updateSelectedDate(5) - expect(wrapper.emitted()['input']).toBeTruthy() - }) - - it('manage selectable dates as expected', () => { - const day = newDate(2019, 7, 7) - - let wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator, - minDate: newDate(2019, 7, 17) - } - }) - - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: newDate(2019, 7, 1) - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: [newDate(2019, 5, 1), newDate(2019, 5, 2)] - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - wrapper.setProps({ - selectableDates: [ - newDate(config.focusedDate.getFullYear(), config.focusedDate.getMonth(), 1), - newDate(config.focusedDate.getFullYear(), config.focusedDate.getMonth(), 2), - day - ] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - - wrapper.setProps({ - selectableDates: (d) => d.getMonth() === 7 - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - expect(wrapper.vm.selectableDate(new Date(2019, 6, 7))).toBeFalsy() - expect(wrapper.vm.selectableDate(new Date(2019, 8, 7))).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: null, - unselectableDates: [newDate(2019, 5, 1), newDate(2019, 5, 2)] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - wrapper.setProps({ - unselectableDates: [day] - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - unselectableDates: (d) => d.getMonth() === 7 - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - expect(wrapper.vm.selectableDate(new Date(2019, 6, 7))).toBeTruthy() - expect(wrapper.vm.selectableDate(new Date(2019, 8, 7))).toBeTruthy() - - wrapper.setProps({ - selectableDates: (d) => d.getMonth() === 7, - unselectableDates: () => true - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: null, - unselectableDates: null, - unselectableDaysOfWeek: [0, 1] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - }) - - it('emit focused date', () => { - const [y, m, d] = [2019, 4, 4] - const day = newDate(y, m, d) - - let inc = 1 - let expected = day - expected.setMonth(day.getMonth() + inc) - let wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator - } - }) - wrapper.vm.changeFocus(day, inc) - let valueEmitted = wrapper.emitted()['change-focus'][0] - expect(valueEmitted).toContainEqual(expected) - - inc = -1 - expected = day - expected.setMonth(day.getMonth() + inc) - wrapper.vm.changeFocus(day, inc) - valueEmitted = wrapper.emitted()['change-focus'][0] - expect(valueEmitted).toContainEqual(expected) - - inc = 3 - expected = day - expected.setMonth(day.getMonth() + inc) - wrapper.vm.changeFocus(day, inc) - valueEmitted = wrapper.emitted()['change-focus'][0] - expect(valueEmitted).toContainEqual(expected) - - inc = -3 - expected = day - expected.setMonth(day.getMonth() + inc) - wrapper.vm.changeFocus(day, inc) - valueEmitted = wrapper.emitted()['change-focus'][0] - expect(valueEmitted).toContainEqual(expected) - }) - - describe('Multiple dates', () => { - it('should manage multiple dates update as expected', () => { - let wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - dateCreator, - multiple: true - } - }) - let date1 = newDate(2020, 3, 10) - let date2 = newDate(2020, 3, 15) - let date3 = newDate(2020, 3, 20) - - wrapper.vm.emitChosenDate(date1) - expect(wrapper.vm.multipleSelectedDates).toContainEqual(date1) - expect(wrapper.emitted()['input'][0]).toContainEqual([date1]) - - wrapper.vm.emitChosenDate(date2) - expect(wrapper.vm.multipleSelectedDates).toContainEqual(date2) - expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2]) - - wrapper.vm.emitChosenDate(date3) - expect(wrapper.vm.multipleSelectedDates).toContainEqual(date3) - expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2, date3]) - - wrapper.vm.emitChosenDate(date1) - expect(wrapper.vm.multipleSelectedDates).toEqual([date2, date3]) - }) - }) - - describe('ClassObject with range props', () => { - it('should have is-selected class for all range of dates selected', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--selected').length).toBe(5) - }) - - it('should have is-first-selected class for the first date selected within the range', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--selected').at(0).classes()).toContain('o-dpck__month__cell--first-selected') - }) - - /* WARNING: this test fails, TO BE FIXED - it('should have is-within-selected class for the dates selected within the range', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - } - }) - expect(wrapper.findAll('o-dpck__month__cell--within-selected').length).toBe(3) - })*/ - - it('should have is-last-selected class for the last date selected within the range', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--selected').at(4).classes()).toContain('o-dpck__month__cell--last-selected') - }) - - describe('hoverd class with range props', () => { - it('should have is-within-hovered-range class for all range of dates hovered', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - }, - data() { - return { - selectedBeginDate: newDate(2020, 3, 1), - hoveredEndDate: newDate(2020, 6, 1) - } - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--within-hovered-range').length).toBe(4) - }) - - it('should have is-first-hovered class for the first date hovered within the range', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - }, - data() { - return { - selectedBeginDate: newDate(2020, 3, 1), - hoveredEndDate: newDate(2020, 6, 1) - } - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--first-hovered').at(0).classes()).toContain('o-dpck__month__cell--first-hovered') - }) - - /* WARNING: this test fails, TO BE FIXED - it('should have is-within-hovered class for the dates hovered within the range', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - }, - data() { - return { - selectedBeginDate: newDate(2020, 3, 1), - hoveredEndDate: newDate(2020, 6, 1) - } - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--within-hovered').length).toBe(2) - })*/ - - it('should have is-last-hovered class for the last date hovered within the range', () => { - const wrapper = shallowMount(ODatepickerMonth, { - propsData: { - monthNames: config.defaultMonthNames, - range: true, - focused: { - month: newDate(2020, 1, 1).getMonth(), - year: newDate(2020, 1, 1).getFullYear() - }, - value: [newDate(2020, 1, 1), newDate(2020, 5, 1)], - dateCreator - }, - data() { - return { - selectedBeginDate: newDate(2020, 3, 1), - hoveredEndDate: newDate(2020, 6, 1) - } - } - }) - expect(wrapper.findAll('.o-dpck__month__cell--within-hovered-range').at(3).classes()).toContain('o-dpck__month__cell--last-hovered') - }) - }) - }) - -}) diff --git a/packages/oruga/src/components/datepicker/DatepickerMonth.vue b/packages/oruga/src/components/datepicker/DatepickerMonth.vue deleted file mode 100644 index 9226489f0..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerMonth.vue +++ /dev/null @@ -1,440 +0,0 @@ -<template> - <section :class="monthClasses"> - <div :class="monthBodyClasses"> - <div :class="monthTableClasses"> - <template v-for="(date, index) in monthDates"> - <a - :ref="`month-${date.getMonth()}`" - v-if="selectableDate(date) && !disabled" - :key="index" - :class="cellClasses(date)" - role="button" - href="#" - :disabled="disabled" - @click.prevent="updateSelectedDate(date)" - @mouseenter="setRangeHoverEndDate(date)" - @keydown.prevent="manageKeydown($event, date)" - :tabindex="focused.month === date.getMonth() ? null : -1"> - {{ monthNames[date.getMonth()] }} - <div class="events" v-if="eventsDateMatch(date)"> - <div - class="event" - :class="event.type" - v-for="(event, index) in eventsDateMatch(date)" - :key="index"/> - </div> - </a> - <div - v-else - :key="index" - :class="cellClasses(date)"> - {{ monthNames[date.getMonth()] }} - </div> - </template> - </div> - </div> - </section> -</template> - -<script> -import { isDefined } from '../../utils/helpers' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import DatepickerMixin from './DatepickerMixin' - -export default { - name: 'ODatepickerMonth', - mixins: [BaseComponentMixin, DatepickerMixin], - configField: 'datepicker', - props: { - value: { - type: [Date, Array] - }, - monthNames: Array, - events: Array, - indicators: String, - minDate: Date, - maxDate: Date, - focused: Object, - disabled: Boolean, - dateCreator: Function, - unselectableDates: [Array, Function], - unselectableDaysOfWeek: Array, - selectableDates: [Array, Function], - range: Boolean, - multiple: Boolean, - monthClass: [String, Function, Array], - monthBodyClass: [String, Function, Array], - monthTableClass: [String, Function, Array], - monthCellClass: [String, Function, Array], - monthCellSelectedClass: [String, Function, Array], - monthCellFirstSelectedClass: [String, Function, Array], - monthCellWithinSelectedClass: [String, Function, Array], - monthCellLastSelectedClass: [String, Function, Array], - monthCellWithinHoveredRangeClass: [String, Function, Array], - monthCellFirstHoveredClass: [String, Function, Array], - monthCellWithinHoveredClass: [String, Function, Array], - monthCellLastHoveredClass: [String, Function, Array], - monthCellTodayClass: [String, Function, Array], - monthCellSelectableClass: [String, Function, Array], - monthCellUnselectableClass: [String, Function, Array], - monthCellEventsClass: [String, Function, Array] - }, - data() { - return { - selectedBeginDate: undefined, - selectedEndDate: undefined, - hoveredEndDate: undefined, - multipleSelectedDates: this.multiple && this.value ? this.value : [] - } - }, - computed: { - monthClasses() { - return [ - this.computedClass('monthClass', 'o-dpck__month') - ] - }, - monthBodyClasses() { - return [ - this.computedClass('monthBodyClass', 'o-dpck__month__body') - ] - }, - monthTableClasses() { - return [ - this.computedClass('monthTableClass', 'o-dpck__month__table') - ] - }, - monthCellClasses() { - return [ - this.computedClass('monthCellClass', 'o-dpck__month__cell') - ] - }, - hasEvents() { - return this.events && this.events.length - }, - - /* - * Return array of all events in the specified month - */ - eventsInThisYear() { - if (!this.events) return [] - - const yearEvents = [] - - for (let i = 0; i < this.events.length; i++) { - let event = this.events[i] - - if (!Object.prototype.hasOwnProperty.call(event, 'date')) { - event = { date: event } - } - if (!Object.prototype.hasOwnProperty.call(event, 'type')) { - event.type = 'is-primary' - } - if ( - event.date.getFullYear() === this.focused.year - ) { - yearEvents.push(event) - } - } - - return yearEvents - }, - monthDates() { - const year = this.focused.year - const months = [] - for (let i = 0; i < 12; i++) { - const d = new Date(year, i, 1) - d.setHours(0, 0, 0, 0) - months.push(d) - } - return months - }, - - focusedMonth() { - return this.focused.month - }, - - hoveredDateRange() { - if (!this.range) { - return [] - } - if (!isNaN(this.selectedEndDate)) { - return [] - } - if (this.hoveredEndDate < this.selectedBeginDate) { - return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined) - } - return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined) - } - }, - watch: { - focusedMonth(month) { - const refName = `month-${month}` - if (this.$refs[refName] && this.$refs[refName].length > 0) { - this.$nextTick(() => { - if (this.$refs[refName][0]) { - this.$refs[refName][0].focus() - } - }) // $nextTick needed when year is changed - } - } - }, - methods: { - selectMultipleDates(date) { - const multipleSelect = this.multipleSelectedDates.filter((selectedDate) => - selectedDate.getDate() === date.getDate() && - selectedDate.getFullYear() === date.getFullYear() && - selectedDate.getMonth() === date.getMonth() - ) - if (multipleSelect.length) { - this.multipleSelectedDates = this.multipleSelectedDates.filter((selectedDate) => - selectedDate.getDate() !== date.getDate() || - selectedDate.getFullYear() !== date.getFullYear() || - selectedDate.getMonth() !== date.getMonth() - ) - } else { - this.multipleSelectedDates.push(date) - } - this.$emit('input', this.multipleSelectedDates) - }, - - selectableDate(day) { - const validity = [] - - if (this.minDate) { - validity.push(day >= this.minDate) - } - - if (this.maxDate) { - validity.push(day <= this.maxDate) - } - - validity.push(day.getFullYear() === this.focused.year) - - if (this.selectableDates) { - if (typeof this.selectableDates === 'function') { - if (this.selectableDates(day)) { - return true - } else { - validity.push(false) - } - } else { - for (let i = 0; i < this.selectableDates.length; i++) { - const enabledDate = this.selectableDates[i] - if (day.getFullYear() === enabledDate.getFullYear() && - day.getMonth() === enabledDate.getMonth()) { - return true - } else { - validity.push(false) - } - } - } - } - - if (this.unselectableDates) { - if (typeof this.unselectableDates === 'function') { - validity.push(!this.unselectableDates(day)) - } else { - for (let i = 0; i < this.unselectableDates.length; i++) { - const disabledDate = this.unselectableDates[i] - validity.push( - day.getFullYear() !== disabledDate.getFullYear() || - day.getMonth() !== disabledDate.getMonth() - ) - } - } - } - - if (this.unselectableDaysOfWeek) { - for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) { - const dayOfWeek = this.unselectableDaysOfWeek[i] - validity.push(day.getDay() !== dayOfWeek) - } - } - - return validity.indexOf(false) < 0 - }, - eventsDateMatch(day) { - if (!this.eventsInThisYear.length) return false - - const monthEvents = [] - - for (let i = 0; i < this.eventsInThisYear.length; i++) { - if (this.eventsInThisYear[i].date.getMonth() === day.getMonth()) { - monthEvents.push(this.events[i]) - } - } - - if (!monthEvents.length) { - return false - } - - return monthEvents - }, - /* - * Build cellClasses for cell using validations - */ - cellClasses(day) { - function dateMatch(dateOne, dateTwo, multiple) { - // if either date is null or undefined, return false - if (!dateOne || !dateTwo || multiple) { - return false - } - if (Array.isArray(dateTwo)) { - return dateTwo.some((date) => ( - dateOne.getFullYear() === date.getFullYear() && - dateOne.getMonth() === date.getMonth() - )) - } - return (dateOne.getFullYear() === dateTwo.getFullYear() && - dateOne.getMonth() === dateTwo.getMonth()) - } - function dateWithin(dateOne, dates, multiple) { - if (!Array.isArray(dates) || multiple) { return false } - - return dateOne > dates[0] && dateOne < dates[1] - } - function dateMultipleSelected(dateOne, dates, multiple) { - if (!Array.isArray(dates) || !multiple) { return false } - return dates.some((date) => ( - dateOne.getDate() === date.getDate() && - dateOne.getFullYear() === date.getFullYear() && - dateOne.getMonth() === date.getMonth() - )) - } - - return [ - ...this.monthCellClasses, - { - [this.computedClass('monthCellSelectedClass', 'o-dpck__month__cell--selected')] : - dateMatch(day, this.value, this.multiple) || - dateWithin(day, this.value, this.multiple) || - dateMultipleSelected(day, this.multipleSelectedDates, this.multiple) - }, - { - [this.computedClass('monthCellFirstSelectedClass', 'o-dpck__month__cell--first-selected')] : - dateMatch( - day, - Array.isArray(this.value) && this.value[0], - this.multiple) - }, - { - [this.computedClass('monthCellWithinSelectedClass', 'o-dpck__month__cell--within-selected')] : - dateWithin(day, this.value, this.multiple) - }, - { - [this.computedClass('monthCellLastSelectedClass', 'o-dpck__month__cell--last-selected')] : - dateMatch( - day, - Array.isArray(this.value) && this.value[1], - this.multiple) - }, - { - [this.computedClass('monthCellWithinHoveredRangeClass', 'o-dpck__month__cell--within-hovered-range')] : - this.hoveredDateRange && this.hoveredDateRange.length === 2 && - (dateMatch(day, this.hoveredDateRange) || - dateWithin(day, this.hoveredDateRange)) - }, - { - [this.computedClass('monthCellFirstHoveredClass', 'o-dpck__month__cell--first-hovered')] : - dateMatch( - day, - Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0]) - }, - { - [this.computedClass('monthCellWithinHoveredClass', 'o-dpck__month__cell--within-hovered')] : - dateWithin(day, this.hoveredDateRange) - }, - { - [this.computedClass('monthCellLastHoveredClass', 'o-dpck__month__cell--last-hovered')] : - dateMatch( - day, - Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1]) - }, - { - [this.computedClass('monthCellTodayClass', 'o-dpck__month__cell--today')] : - dateMatch(day, this.dateCreator()) - }, - { - [this.computedClass('monthCellSelectableclass', 'o-dpck__month__cell--selectable')] : - this.selectableDate(day) && !this.disabled - }, - { - [this.computedClass('monthCellUnselectableClass', 'o-dpck__month__cell--unselectable')] : - !this.selectableDate(day) || this.disabled - }, - { - [this.computedClass('monthCellEventsClass', 'o-dpck__month__cell--events')] : - this.hasEvents - }, - ] - }, - - /* - * Emit input event with selected date as payload for v-model in parent - */ - updateSelectedDate(date) { - if (!this.range && !this.multiple) { - this.emitChosenDate(date) - } else if (this.range) { - this.handleSelectRangeDate(date) - } else if (this.multiple) { - this.selectMultipleDates(date) - } - }, - - /* - * Emit select event with chosen date as payload - */ - emitChosenDate(day) { - if (this.disabled) return - - if (!this.multiple) { - if (this.selectableDate(day)) { - this.$emit('input', day) - } - } else { - this.selectMultipleDates(day) - } - }, - - /* - * If both begin and end dates are set, reset the end date and set the begin date. - * If only begin date is selected, emit an array of the begin date and the new date. - * If not set, only set the begin date. - */ - handleSelectRangeDate(date) { - if (this.disabled) return - if (this.selectedBeginDate && this.selectedEndDate) { - this.selectedBeginDate = date - this.selectedEndDate = undefined - this.$emit('range-start', date) - } else if (this.selectedBeginDate && !this.selectedEndDate) { - if (this.selectedBeginDate > date) { - this.selectedEndDate = this.selectedBeginDate - this.selectedBeginDate = date - } else { - this.selectedEndDate = date - } - this.$emit('range-end', date) - this.$emit('input', [this.selectedBeginDate, this.selectedEndDate]) - } else { - this.selectedBeginDate = date - this.$emit('range-start', date) - } - }, - - setRangeHoverEndDate(day) { - if (this.range) { - this.hoveredEndDate = day - } - }, - - changeFocus(month, inc) { - const nextMonth = month - nextMonth.setMonth(month.getMonth() + inc) - this.$emit('change-focus', nextMonth) - } - } -} -</script> diff --git a/packages/oruga/src/components/datepicker/DatepickerTable.spec.js b/packages/oruga/src/components/datepicker/DatepickerTable.spec.js deleted file mode 100644 index dd5153d9c..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerTable.spec.js +++ /dev/null @@ -1,333 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ODatepickerTable from '@components/datepicker/DatepickerTable' -import { getOptions, setOptions} from '@utils/config' - -let defaultProps - -const newDate = (y, m, d) => { - const date = new Date(Date.UTC(y, m, d)) - date.getDate = jest.fn(() => date.getUTCDate()) - date.getMonth = jest.fn(() => date.getUTCMonth()) - date.getFullYear = jest.fn(() => date.getUTCFullYear()) - return date -} - -describe('ODatepickerTable', () => { - - const config = getOptions() - - beforeEach(() => { - setOptions(Object.assign(config, { - defaultFirstDayOfWeek: 0, - defaultMonthNames: [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', - 'August', 'September', 'October', 'November', 'December' - ], - defaultDayNames: ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'S'], - focusedDate: newDate(2018, 7, 10), - defaultUnselectableDaysOfWeek: [] - })) - - defaultProps = () => ({ - value: newDate(2018, 6, 21), - dayNames: config.defaultDayNames, - monthNames: config.defaultMonthNames, - focused: { - month: config.focusedDate.getMonth(), - year: config.focusedDate.getFullYear() - }, - firstDayOfWeek: config.defaultFirstDayOfWeek, - unselectableDaysOfWeek: config.defaultUnselectableDaysOfWeek, - events: [] - }) - }) - - it('is called', () => { - const wrapper = shallowMount(ODatepickerTable, { - stubs: ['b-datepicker-table-row'], - propsData: { - ...defaultProps() - } - }) - expect(wrapper.name()).toBe('ODatepickerTable') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - const wrapper = shallowMount(ODatepickerTable, { - stub: ['b-datepicker-table-row'], - propsData: { - ...defaultProps() - }, - computed: { - weeksInThisMonth: jest.fn(() => []) - } - }) - expect(wrapper.html()).toMatchSnapshot() - }) - - it('assign events to weeks even if the event has a time', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - dayNames: config.defaultDayNames, - monthNames: config.defaultMonthNames, - events: [new Date('July 22, 2018 07:22:13'), new Date('July 23, 2018 00:00:00')], - focused: { - month: 6, - year: 2018 - }, - showWeekNumber: true - } - }) - expect(wrapper.vm.eventsInThisWeek(wrapper.vm.weeksInThisMonth[3]).length).toEqual(2) - }) - - it('manage events as expected', () => { - const monthEvent = { - date: newDate(config.focusedDate.getFullYear(), config.focusedDate.getMonth(), 13), - type: 'is-primary' - } - const events = [ - newDate(2020, 3, 3), - monthEvent - ] - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - events - } - }) - expect(wrapper.vm.eventsInThisMonth).toEqual([monthEvent]) - }) - - it('emit input event with selected date as payload when updateSelectedDate is called', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps() - } - }) - const newDate = new Date() - wrapper.vm.updateSelectedDate(newDate) - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(newDate) - }) - - it('manage selectable dates as expected', () => { - const day = newDate(2019, 7, 7) - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps() - } - }) - - wrapper.setProps({ - minDate: newDate(2019, 7, 17) - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: newDate(2019, 7, 1) - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)] - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - wrapper.setProps({ - selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2), day] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: null, - unselectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - wrapper.setProps({ - unselectableDates: [day] - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: null, - unselectableDates: null, - unselectableDaysOfWeek: [0, 1] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - }) - - it('emit focused date', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps() - } - }) - - const [y, m, d] = [2019, 4, 4] - const day = newDate(y, m, d) - const expected = { - day: day.getDate(), - month: day.getMonth(), - year: day.getFullYear() - } - - wrapper.vm.changeFocus(day) - let valueEmitted = wrapper.emitted()['update:focused'][0] - expect(valueEmitted).toContainEqual(expected) - }) - - describe('#hoveredDateRange', () => { - const selectedBeginDate = new Date(2019, 3, 10) - const threeDaysAfterBeginDate = new Date(2019, 3, 13) - const threeDaysBeforeBeginDate = new Date(2019, 3, 7) - - it('should return an empty array when props range is false', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - range: false - } - }) - expect(wrapper.vm.hoveredDateRange).toEqual([]) - }) - - it('should return an empty array when selectedEndDate exists', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - range: true - } - }) - wrapper.setData({ - selectedBeginDate, - selectedEndDate: threeDaysAfterBeginDate - }) - expect(wrapper.vm.hoveredDateRange).toEqual([]) - }) - - it('should return an array of two dates', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - range: true - } - }) - wrapper.setData({ - selectedBeginDate, - hoveredEndDate: threeDaysAfterBeginDate - }) - expect(wrapper.vm.hoveredDateRange).toEqual([ - selectedBeginDate, - threeDaysAfterBeginDate - ]) - }) - - it('should return the earlier date as the first element', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - range: true - } - }) - wrapper.setData({ - selectedBeginDate, - hoveredEndDate: threeDaysBeforeBeginDate - }) - expect(wrapper.vm.hoveredDateRange).toEqual([ - threeDaysBeforeBeginDate, - selectedBeginDate - ]) - }) - - it('should filter only defined values', () => { - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - range: true - } - }) - wrapper.setData({ - selectedBeginDate, - hoveredEndDate: undefined - }) - expect(wrapper.vm.hoveredDateRange).toEqual([ - selectedBeginDate - ]) - }) - - it('should mange date range update as expected', () => { - let begin = newDate(2020, 3, 10) - let end = newDate(2020, 3, 15) - const wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - range: true - } - }) - - wrapper.vm.updateSelectedDate(begin) - expect(wrapper.vm.selectedBeginDate).toBe(begin) - expect(wrapper.emitted()['range-start'][0]).toContainEqual(begin) - - wrapper.vm.updateSelectedDate(end) - expect(wrapper.vm.selectedEndDate).toBe(end) - expect(wrapper.emitted()['range-end'][0]).toContainEqual(end) - expect(wrapper.emitted()['input'][0]).toContainEqual([begin, end]) - - end = begin - begin = newDate(2020, 3, 5) - wrapper.vm.selectedEndDate = undefined - wrapper.vm.updateSelectedDate(begin) - expect(wrapper.vm.selectedEndDate).toBe(end) - expect(wrapper.vm.selectedBeginDate).toBe(begin) - - wrapper.vm.updateSelectedDate(begin) - expect(wrapper.vm.selectedEndDate).toBe(undefined) - expect(wrapper.vm.selectedBeginDate).toBe(begin) - }) - }) - - /* - describe('Multiple dates', () => { - let wrapper - beforeEach(() => { - wrapper = shallowMount(ODatepickerTable, { - propsData: { - ...defaultProps(), - multiple: true, - value: [] - } - }) - }) - - it('should manage multiple dates update as expected', () => { - let date1 = newDate(2020, 3, 10) - let date2 = newDate(2020, 3, 15) - let date3 = newDate(2020, 3, 20) - - wrapper.vm.updateSelectedDate(date1) - expect(wrapper.vm.multipleSelectedDates).toContainEqual(date1) - expect(wrapper.emitted()['input'][0]).toContainEqual([date1]) - - wrapper.vm.updateSelectedDate(date2) - expect(wrapper.vm.multipleSelectedDates).toContainEqual(date2) - expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2]) - - wrapper.vm.updateSelectedDate(date3) - expect(wrapper.vm.multipleSelectedDates).toContainEqual(date3) - expect(wrapper.emitted()['input'][0]).toContainEqual([date1, date2, date3]) - - wrapper.vm.updateSelectedDate(date1) - expect(wrapper.vm.multipleSelectedDates).toEqual([date2, date3]) - }) - }) - */ -}) diff --git a/packages/oruga/src/components/datepicker/DatepickerTable.vue b/packages/oruga/src/components/datepicker/DatepickerTable.vue deleted file mode 100644 index 184481f76..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerTable.vue +++ /dev/null @@ -1,422 +0,0 @@ -<template> - <section :class="tableClasses"> - <header :class="tableHeadClasses"> - <div - v-for="(day, index) in visibleDayNames" - :key="index" - :class="tableHeadCellClasses"> - <span>{{ day }}</span> - </div> - </header> - <div :class="tableBodyClasses"> - <o-datepicker-table-row - v-for="(week, index) in weeksInThisMonth" - :key="index" - :selected-date="value" - :day="focused.day" - :week="week" - :month="focused.month" - :min-date="minDate" - :max-date="maxDate" - :disabled="disabled" - :unselectable-dates="unselectableDates" - :unselectable-days-of-week="unselectableDaysOfWeek" - :selectable-dates="selectableDates" - :events="eventsInThisWeek(week)" - :indicators="indicators" - :date-creator="dateCreator" - :nearby-month-days="nearbyMonthDays" - :nearby-selectable-month-days="nearbySelectableMonthDays" - :show-week-number="showWeekNumber" - :week-number-clickable="weekNumberClickable" - :first-day-of-week="firstDayOfWeek" - :rules-for-first-week="rulesForFirstWeek" - :range="range" - :hovered-date-range="hoveredDateRange" - :multiple="multiple" - :table-row-class="tableRowClass" - :table-cell-class="tableCellClass" - :table-cell-selected-class="tableCellSelectedClass" - :table-cell-first-selected-class="tableCellFirstSelectedClass" - :table-cell-invisible-class="tableCellInvisibleClass" - :table-cell-within-selected-class="tableCellWithinSelectedClass" - :table-cell-last-selected-class="tableCellLastSelectedClass" - :table-cell-first-hovered-class="tableCellFirstHoveredClass" - :table-cell-within-hovered-class="tableCellWithinHoveredClass" - :table-cell-last-hovered-class="tableCellLastHoveredClass" - :table-cell-today-class="tableCellTodayClass" - :table-cell-selectable-class="tableCellSelectableClass" - :table-cell-unselectable-class="tableCellUnselectableClass" - :table-cell-nearby-class="tableCellNearbyClass" - :table-cell-events-class="tableCellEventsClass" - :table-events-class="tableEventsClass" - :table-event-variant-class="tableEventVariantClass" - :table-event-class="tableEventClass" - :table-event-indicators-class="tableEventIndicatorsClass" - @select="updateSelectedDate" - @rangeHoverEndDate="setRangeHoverEndDate" - @change-focus="changeFocus"/> - </div> - </section> -</template> - -<script> -import DatepickerTableRow from './DatepickerTableRow' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' - -export default { - name: 'ODatepickerTable', - mixins: [BaseComponentMixin], - configField: 'datepicker', - components: { - [DatepickerTableRow.name]: DatepickerTableRow - }, - props: { - value: { - type: [Date, Array] - }, - dayNames: Array, - monthNames: Array, - firstDayOfWeek: Number, - events: Array, - indicators: String, - minDate: Date, - maxDate: Date, - focused: Object, - disabled: Boolean, - dateCreator: Function, - unselectableDates: Array, - unselectableDaysOfWeek: Array, - selectableDates: Array, - nearbyMonthDays: Boolean, - nearbySelectableMonthDays: Boolean, - showWeekNumber: Boolean, - weekNumberClickable: Boolean, - rulesForFirstWeek: Number, - range: Boolean, - multiple: Boolean, - tableClass: [String, Function, Array], - tableHeadClass: [String, Function, Array], - tableHeadCellClass: [String, Function, Array], - tableBodyClass: [String, Function, Array], - tableRowClass: [String, Function, Array], - tableCellClass: [String, Function, Array], - tableCellSelectedClass: [String, Function, Array], - tableCellFirstSelectedClass: [String, Function, Array], - tableCellInvisibleClass: [String, Function, Array], - tableCellWithinSelectedClass: [String, Function, Array], - tableCellLastSelectedClass: [String, Function, Array], - tableCellFirstHoveredClass: [String, Function, Array], - tableCellWithinHoveredClass: [String, Function, Array], - tableCellLastHoveredClass: [String, Function, Array], - tableCellTodayClass: [String, Function, Array], - tableCellSelectableClass: [String, Function, Array], - tableCellUnselectableClass: [String, Function, Array], - tableCellNearbyClass: [String, Function, Array], - tableCellEventsClass: [String, Function, Array], - tableEventClass: [String, Function, Array], - tableEventIndicatorsClass: [String, Function, Array], - tableEventsClass: [String, Function, Array], - tableEventVariantClass: [String, Function, Array], - }, - data() { - return { - selectedBeginDate: undefined, - selectedEndDate: undefined, - hoveredEndDate: undefined - } - }, - computed: { - tableClasses() { - return [ - this.computedClass('tableClass', 'o-dpck__table') - ] - }, - tableHeadClasses() { - return [ - this.computedClass('tableHeadClass', 'o-dpck__table__head') - ] - }, - tableHeadCellClasses() { - return [ - this.computedClass('tableHeadCellClass', 'o-dpck__table__head-cell'), - ...this.tableCellClasses - ] - }, - tableBodyClasses() { - return [ - this.computedClass('tableBodyClass', 'o-dpck__table__body') - ] - }, - tableCellClasses() { - return [ - this.computedClass('tableCellClass', 'o-dpck__table__cell'), - ] - }, - visibleDayNames() { - const visibleDayNames = [] - let index = this.firstDayOfWeek - while (visibleDayNames.length < this.dayNames.length) { - const currentDayName = this.dayNames[(index % this.dayNames.length)] - visibleDayNames.push(currentDayName) - index++ - } - if (this.showWeekNumber) visibleDayNames.unshift('') - return visibleDayNames - }, - - /* - * Return array of all events in the specified month - */ - eventsInThisMonth() { - if (!this.events) return [] - - const monthEvents = [] - - for (let i = 0; i < this.events.length; i++) { - let event = this.events[i] - - if (!Object.prototype.hasOwnProperty.call(event, 'date')) { - event = { date: event } - } - if ( - event.date.getMonth() === this.focused.month && - event.date.getFullYear() === this.focused.year - ) { - monthEvents.push(event) - } - } - - return monthEvents - }, - /* - * Return array of all weeks in the specified month - */ - weeksInThisMonth() { - this.validateFocusedDay() - const month = this.focused.month - const year = this.focused.year - const weeksInThisMonth = [] - - let startingDay = 1 - - while (weeksInThisMonth.length < 6) { - const newWeek = this.weekBuilder(startingDay, month, year) - weeksInThisMonth.push(newWeek) - startingDay += 7 - } - - return weeksInThisMonth - }, - hoveredDateRange() { - if (!this.range) { - return [] - } - if (!isNaN(this.selectedEndDate)) { - return [] - } - if (this.hoveredEndDate < this.selectedBeginDate) { - return [this.hoveredEndDate, this.selectedBeginDate].filter(d => d !== undefined) - } - return [this.selectedBeginDate, this.hoveredEndDate].filter(d => d !== undefined) - } - }, - methods: { - /* - * Emit input event with selected date as payload for v-model in parent - */ - updateSelectedDate(date) { - if (!this.range && !this.multiple) { - this.$emit('input', date) - } else if (this.range) { - this.handleSelectRangeDate(date) - } else if (this.multiple) { - this.handleSelectMultipleDates(date) - } - }, - - /* - * If both begin and end dates are set, reset the end date and set the begin date. - * If only begin date is selected, emit an array of the begin date and the new date. - * If not set, only set the begin date. - */ - handleSelectRangeDate(date) { - if (this.selectedBeginDate && this.selectedEndDate) { - this.selectedBeginDate = date - this.selectedEndDate = undefined - this.$emit('range-start', date) - } else if (this.selectedBeginDate && !this.selectedEndDate) { - if (this.selectedBeginDate > date) { - this.selectedEndDate = this.selectedBeginDate - this.selectedBeginDate = date - } else { - this.selectedEndDate = date - } - this.$emit('range-end', date) - this.$emit('input', [this.selectedBeginDate, this.selectedEndDate]) - } else { - this.selectedBeginDate = date - this.$emit('range-start', date) - } - }, - - /* - * If selected date already exists list of selected dates, remove it from the list - * Otherwise, add date to list of selected dates - */ - handleSelectMultipleDates(date) { - let multipleSelectedDates = this.value - const multipleSelect = multipleSelectedDates.filter((selectedDate) => - selectedDate.getDate() === date.getDate() && - selectedDate.getFullYear() === date.getFullYear() && - selectedDate.getMonth() === date.getMonth() - ) - if (multipleSelect.length) { - multipleSelectedDates = multipleSelectedDates.filter((selectedDate) => - selectedDate.getDate() !== date.getDate() || - selectedDate.getFullYear() !== date.getFullYear() || - selectedDate.getMonth() !== date.getMonth() - ) - } else { - multipleSelectedDates = [...multipleSelectedDates, date] - } - this.$emit('input', multipleSelectedDates) - }, - - /* - * Return array of all days in the week that the startingDate is within - */ - weekBuilder(startingDate, month, year) { - const thisMonth = new Date(year, month) - - const thisWeek = [] - - const dayOfWeek = new Date(year, month, startingDate).getDay() - - const end = dayOfWeek >= this.firstDayOfWeek - ? (dayOfWeek - this.firstDayOfWeek) - : ((7 - this.firstDayOfWeek) + dayOfWeek) - - let daysAgo = 1 - for (let i = 0; i < end; i++) { - thisWeek.unshift(new Date( - thisMonth.getFullYear(), - thisMonth.getMonth(), - startingDate - daysAgo) - ) - daysAgo++ - } - - thisWeek.push(new Date(year, month, startingDate)) - - let daysForward = 1 - while (thisWeek.length < 7) { - thisWeek.push(new Date(year, month, startingDate + daysForward)) - daysForward++ - } - - return thisWeek - }, - - validateFocusedDay() { - const focusedDate = new Date(this.focused.year, this.focused.month, this.focused.day) - if (this.selectableDate(focusedDate)) return - - let day = 0 - // Number of days in the current month - const monthDays = new Date(this.focused.year, this.focused.month + 1, 0).getDate() - let firstFocusable = null - while (!firstFocusable && ++day < monthDays) { - const date = new Date(this.focused.year, this.focused.month, day) - if (this.selectableDate(date)) { - firstFocusable = focusedDate - - const focused = { - day: date.getDate(), - month: date.getMonth(), - year: date.getFullYear() - } - this.$emit('update:focused', focused) - } - } - }, - - /* - * Check that selected day is within earliest/latest params and - * is within this month - */ - selectableDate(day) { - const validity = [] - - if (this.minDate) { - validity.push(day >= this.minDate) - } - - if (this.maxDate) { - validity.push(day <= this.maxDate) - } - - if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) { - validity.push(day.getMonth() === this.focused.month) - } - - if (this.selectableDates) { - for (let i = 0; i < this.selectableDates.length; i++) { - const enabledDate = this.selectableDates[i] - if (day.getDate() === enabledDate.getDate() && - day.getFullYear() === enabledDate.getFullYear() && - day.getMonth() === enabledDate.getMonth()) { - return true - } else { - validity.push(false) - } - } - } - - if (this.unselectableDates) { - for (let i = 0; i < this.unselectableDates.length; i++) { - const disabledDate = this.unselectableDates[i] - validity.push( - day.getDate() !== disabledDate.getDate() || - day.getFullYear() !== disabledDate.getFullYear() || - day.getMonth() !== disabledDate.getMonth() - ) - } - } - - if (this.unselectableDaysOfWeek) { - for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) { - const dayOfWeek = this.unselectableDaysOfWeek[i] - validity.push(day.getDay() !== dayOfWeek) - } - } - - return validity.indexOf(false) < 0 - }, - - eventsInThisWeek(week) { - return this.eventsInThisMonth.filter((event) => { - const stripped = new Date(Date.parse(event.date)) - stripped.setHours(0, 0, 0, 0) - const timed = stripped.getTime() - - return week.some((weekDate) => weekDate.getTime() === timed) - }) - }, - - setRangeHoverEndDate(day) { - this.hoveredEndDate = day - }, - - changeFocus(day) { - const focused = { - day: day.getDate(), - month: day.getMonth(), - year: day.getFullYear() - } - this.$emit('update:focused', focused) - } - } -} -</script> diff --git a/packages/oruga/src/components/datepicker/DatepickerTableRow.spec.js b/packages/oruga/src/components/datepicker/DatepickerTableRow.spec.js deleted file mode 100644 index aca07c00a..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerTableRow.spec.js +++ /dev/null @@ -1,226 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ODatepickerTableRow from '@components/datepicker/DatepickerTableRow' - -const newDate = (y, m, d) => { - const date = new Date(Date.UTC(y, m, d)) - date.getDate = jest.fn(() => date.getUTCDate()) - return date -} -const propsData = { - firstDayOfWeek: 0, - week: [ - newDate(2017, 12, 31), - newDate(2018, 1, 1), - newDate(2018, 1, 2), - newDate(2018, 1, 3), - newDate(2018, 1, 4), - newDate(2018, 1, 5), - newDate(2018, 1, 6) - ], - month: 12, - dateCreator: () => newDate() -} - -let wrapper - -describe('ODatepickerTableRow', () => { - beforeEach(() => { - wrapper = shallowMount(ODatepickerTableRow, { propsData }) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('ODatepickerTableRow') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - describe('classObject', function () { - beforeEach(async() => { - wrapper.setProps({ - selectedDate: [propsData.week[1], propsData.week[5]], - nearbySelectableMonthDays: true - }) - }) - - it('should have is-selected class for all range of dates selected', function () { - expect(wrapper.findAll('.o-dpck__table__cell--selected').length).toBe(5) - }) - - it('should have is-first-selected class for the first date selected within the range', function () { - const {wrappers: [firstSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected') - expect(firstSelectedCell.classes()).toContain('o-dpck__table__cell--first-selected') - }) - - it('should have is-within-selected class for the dates selected within the range', function () { - const withinSelectedRangeCells = wrapper.findAll('.o-dpck__table__cell--selected.o-dpck__table__cell--within-selected') - expect(withinSelectedRangeCells.length).toBe(3) - }) - - it('should have is-last-selected class for the last date selected within the range', function () { - // wrappers should return 5 elements. Destructure to get the last one - const {wrappers: [, , , , lastSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected') - expect(lastSelectedCell.classes()).toContain('o-dpck__table__cell--last-selected') - }) - - it('should has is-selected class for all range of dates selected', function () { - expect(wrapper.findAll('.o-dpck__table__cell--selected').length).toBe(5) - }) - - }) - - describe('hovered', function () { - beforeEach(() => { - wrapper.setProps({ - hoveredDateRange: [propsData.week[1], propsData.week[5]] - }) - }) - - it('should have is-first-hovered class for the first date hovered within the range', function () { - expect(wrapper.findAll('.o-dpck__table__cell--first-hovered').length).toBe(1) - }) - - it('should have is-last-hovered class for the last date hovered within the range', function () { - expect(wrapper.findAll('.o-dpck__table__cell--last-hovered').length).toBe(1) - }) - - it('should has is-within-hovered-range class for all range of dates hovered', function () { - expect(wrapper.findAll('.o-dpck__table__cell--within-hovered').length).toBe(3) - }) - }) - - describe('classObject with multiple dates', function () { - beforeEach(() => { - wrapper.setProps({ - selectedDate: [propsData.week[1], propsData.week[5], propsData.week[3]], - multiple: true - }) - }) - - it('should have is-selected class for all dates selected', function () { - expect(wrapper.findAll('.o-dpck__table__cell--selected').length).toBe(3) - }) - - it('should not have is-first-selected class for the first date selected within the range', function () { - const {wrappers: [firstSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected') - expect(firstSelectedCell.classes()).not.toContain('o-dpck__table__cell--first-selected') - }) - - it('should not have is-within-selected class for the dates selected within the range', function () { - const withinSelectedRangeCells = wrapper.findAll('.o-dpck__table__cell--selected.o-dpck__table__cell--within-selected') - expect(withinSelectedRangeCells.length).toBe(0) - }) - - it('should not have is-last-selected class for the last date selected within the range', function () { - // wrappers should return 3 elements. Destructure to get the last one - const {wrappers: [, , lastSelectedCell]} = wrapper.findAll('.o-dpck__table__cell--selected') - expect(lastSelectedCell.classes()).not.toContain('o-dpck__table__cell--last-selected') - }) - }) - - it('manage accordingly leap years', () => { - expect(wrapper.vm.isLeapYear(2020)).toBeTruthy() - expect(wrapper.vm.daysInYear(2020)).toBe(366) - expect(wrapper.vm.isLeapYear(2021)).toBeFalsy() - expect(wrapper.vm.daysInYear(2021)).toBe(365) - }) - - it('emit chosen date', () => { - wrapper.vm.selectableDate = jest.fn(() => false) - wrapper.vm.emitChosenDate(5) - expect(wrapper.vm.selectableDate).toHaveBeenCalled() - expect(wrapper.emitted()['select']).toBeFalsy() - - wrapper.vm.selectableDate = jest.fn(() => true) - wrapper.vm.emitChosenDate(5) - expect(wrapper.vm.selectableDate).toHaveBeenCalled() - expect(wrapper.emitted()['select']).toBeTruthy() - }) - - it('emit focused date', async () => { - const [y, m, d] = [2019, 4, 4] - let day = newDate(y, m, d) - - let inc = 1 - - wrapper.vm.changeFocus(day, inc) - await wrapper.vm.$nextTick() - let valueEmitted = wrapper.emitted()['change-focus'][0] - expect(valueEmitted[0].getDate()).toEqual(d + inc) - }) - - it('match event days accordingly', () => { - const thisMonth = newDate(2019, 4, 4).getMonth() - const day = newDate(2019, thisMonth, 6) - const todayEvent = { - date: day, - type: 'o-dpck__table__cell--warning' - } - const events = [ - { - date: newDate(2019, thisMonth, 2), - type: 'o-dpck__table__cell--warning' - }, - todayEvent - ] - wrapper.setProps({ events }) - expect(wrapper.vm.eventsDateMatch(day)).toEqual([todayEvent]) - }) - - it('emit rangeHoverEndDate', () => { - wrapper.setProps({ range: true }) - const thisMonth = new Date().getMonth() - const day = newDate(2019, thisMonth, 6) - wrapper.vm.setRangeHoverEndDate(day) - expect(wrapper.emitted()['rangeHoverEndDate']).toBeTruthy() - }) - - it('manage selectable dates as expected', () => { - const day = newDate(2019, 7, 7) - - wrapper.setProps({ - minDate: newDate(2019, 7, 17) - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: newDate(2019, 7, 1) - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)] - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - wrapper.setProps({ - selectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2), day] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: null, - unselectableDates: [newDate(2019, 7, 1), newDate(2019, 7, 2)] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - wrapper.setProps({ - unselectableDates: [day] - }) - expect(wrapper.vm.selectableDate(day)).toBeFalsy() - - wrapper.setProps({ - minDate: null, - maxDate: null, - selectableDates: null, - unselectableDates: null, - unselectableDaysOfWeek: [0, 1] - }) - expect(wrapper.vm.selectableDate(day)).toBeTruthy() - }) -}) diff --git a/packages/oruga/src/components/datepicker/DatepickerTableRow.vue b/packages/oruga/src/components/datepicker/DatepickerTableRow.vue deleted file mode 100644 index df7ae7c81..000000000 --- a/packages/oruga/src/components/datepicker/DatepickerTableRow.vue +++ /dev/null @@ -1,403 +0,0 @@ -<template> - <div :class="tableRowClasses"> - <a - :class="tableCellClasses" - :style="{'cursor: pointer': weekNumberClickable }" - v-if="showWeekNumber" - @click.prevent="clickWeekNumber(getWeekNumber(week[6]))"> - <span>{{ getWeekNumber(week[6]) }}</span> - </a> - <template v-for="(weekDay, index) in week"> - <a - :ref="`day-${weekDay.getMonth()}-${weekDay.getDate()}`" - v-if="selectableDate(weekDay) && !disabled" - :key="index" - :class="cellClasses(weekDay)" - role="button" - href="#" - :disabled="disabled" - @click.prevent="emitChosenDate(weekDay)" - @mouseenter="setRangeHoverEndDate(weekDay)" - @keydown="manageKeydown($event, weekDay)" - :tabindex="day === weekDay.getDate() && month === weekDay.getMonth() ? null : -1"> - <span>{{ weekDay.getDate() }}</span> - <div - :class="tableEventsClasses" - v-if="eventsDateMatch(weekDay)"> - <div - :class="eventClasses(event)" - v-for="(event, index) in eventsDateMatch(weekDay)" - :key="index"/> - </div> - </a> - <div - v-else - :key="index" - :class="cellClasses(weekDay)"> - <span>{{ weekDay.getDate() }}</span> - </div> - </template> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import DatePickerMixin from './DatepickerMixin' - -export default { - name: 'ODatepickerTableRow', - mixins: [BaseComponentMixin, DatePickerMixin], - configField: 'datepicker', - inject: { - $datepicker: { name: '$datepicker', default: false } - }, - props: { - selectedDate: { - type: [Date, Array] - }, - hoveredDateRange: Array, - day: { - type: Number - }, - week: { - type: Array, - required: true - }, - month: { - type: Number, - required: true - }, - showWeekNumber: Boolean, - minDate: Date, - maxDate: Date, - disabled: Boolean, - unselectableDates: Array, - unselectableDaysOfWeek: Array, - selectableDates: Array, - events: Array, - indicators: String, - dateCreator: Function, - nearbyMonthDays: Boolean, - nearbySelectableMonthDays: Boolean, - weekNumberClickable: Boolean, - range: Boolean, - multiple: Boolean, - rulesForFirstWeek: Number, - firstDayOfWeek: Number, - tableRowClass: [String, Function, Array], - tableCellClass: [String, Function, Array], - tableCellSelectedClass: [String, Function, Array], - tableCellFirstSelectedClass: [String, Function, Array], - tableCellWithinSelectedClass: [String, Function, Array], - tableCellLastSelectedClass: [String, Function, Array], - tableCellFirstHoveredClass: [String, Function, Array], - tableCellInvisibleClass: [String, Function, Array], - tableCellWithinHoveredClass: [String, Function, Array], - tableCellLastHoveredClass: [String, Function, Array], - tableCellTodayClass: [String, Function, Array], - tableCellSelectableClass: [String, Function, Array], - tableCellUnselectableClass: [String, Function, Array], - tableCellNearbyClass: [String, Function, Array], - tableCellEventsClass: [String, Function, Array], - tableEventClass: [String, Function, Array], - tableEventIndicatorsClass: [String, Function, Array], - tableEventsClass: [String, Function, Array], - tableEventVariantClass: [String, Function, Array], - }, - computed: { - tableRowClasses() { - return [ - this.computedClass('tableRowClass', 'o-dpck__table__row'), - ] - }, - tableCellClasses() { - return [ - this.computedClass('tableCellClass', 'o-dpck__table__cell'), - ] - }, - tableEventsClasses() { - return [ - this.computedClass('tableEventsClass', 'o-dpck__table__events'), - ] - }, - hasEvents() { - return this.events && this.events.length - } - }, - watch: { - day(day) { - const refName = `day-${this.month}-${day}` - this.$nextTick(() => { - if (this.$refs[refName] && this.$refs[refName].length > 0) { - if (this.$refs[refName][0]) { - this.$refs[refName][0].focus() - } - } - }) // $nextTick needed when month is changed - } - }, - methods: { - firstWeekOffset(year, dow, doy) { - // first-week day -- which january is always in the first week (4 for iso, 1 for other) - const fwd = 7 + dow - doy - // first-week day local weekday -- which local weekday is fwd - const firstJanuary = new Date(year, 0, fwd) - const fwdlw = (7 + firstJanuary.getDay() - dow) % 7 - return -fwdlw + fwd - 1 - }, - daysInYear(year) { - return this.isLeapYear(year) ? 366 : 365 - }, - isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 - }, - getSetDayOfYear(input) { - return Math.round((input - new Date(input.getFullYear(), 0, 1)) / 864e5) + 1 - }, - weeksInYear(year, dow, doy) { - const weekOffset = this.firstWeekOffset(year, dow, doy) - const weekOffsetNext = this.firstWeekOffset(year + 1, dow, doy) - return (this.daysInYear(year) - weekOffset + weekOffsetNext) / 7 - }, - getWeekNumber(mom) { - const dow = this.firstDayOfWeek // first day of week - // Rules for the first week : 1 for the 1st January, 4 for the 4th January - const doy = this.rulesForFirstWeek - const weekOffset = this.firstWeekOffset(mom.getFullYear(), dow, doy) - const week = Math.floor((this.getSetDayOfYear(mom) - weekOffset - 1) / 7) + 1 - let resWeek - let resYear - if (week < 1) { - resYear = mom.getFullYear() - 1 - resWeek = week + this.weeksInYear(resYear, dow, doy) - } else if (week > this.weeksInYear(mom.getFullYear(), dow, doy)) { - resWeek = week - this.weeksInYear(mom.getFullYear(), dow, doy) - resYear = mom.getFullYear() + 1 - } else { - resYear = mom.getFullYear() - resWeek = week - } - - return resWeek - }, - clickWeekNumber(week) { - if (this.weekNumberClickable) { - this.$datepicker.$emit('week-number-click', week) - } - }, - /* - * Check that selected day is within earliest/latest params and - * is within this month - */ - selectableDate(day) { - const validity = [] - - if (this.minDate) { - validity.push(day >= this.minDate) - } - - if (this.maxDate) { - validity.push(day <= this.maxDate) - } - - if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) { - validity.push(day.getMonth() === this.month) - } - - if (this.selectableDates) { - for (let i = 0; i < this.selectableDates.length; i++) { - const enabledDate = this.selectableDates[i] - if (day.getDate() === enabledDate.getDate() && - day.getFullYear() === enabledDate.getFullYear() && - day.getMonth() === enabledDate.getMonth()) { - return true - } else { - validity.push(false) - } - } - } - - if (this.unselectableDates) { - for (let i = 0; i < this.unselectableDates.length; i++) { - const disabledDate = this.unselectableDates[i] - validity.push( - day.getDate() !== disabledDate.getDate() || - day.getFullYear() !== disabledDate.getFullYear() || - day.getMonth() !== disabledDate.getMonth() - ) - } - } - - if (this.unselectableDaysOfWeek) { - for (let i = 0; i < this.unselectableDaysOfWeek.length; i++) { - const dayOfWeek = this.unselectableDaysOfWeek[i] - validity.push(day.getDay() !== dayOfWeek) - } - } - - return validity.indexOf(false) < 0 - }, - - /* - * Emit select event with chosen date as payload - */ - emitChosenDate(day) { - if (this.disabled) return - - if (this.selectableDate(day)) { - this.$emit('select', day) - } - }, - - eventsDateMatch(day) { - if (!this.events || !this.events.length) return false - - const dayEvents = [] - - for (let i = 0; i < this.events.length; i++) { - if (this.events[i].date.getDay() === day.getDay()) { - dayEvents.push(this.events[i]) - } - } - - if (!dayEvents.length) { - return false - } - - return dayEvents - }, - - /* - * Build cellClasses for cell using validations - */ - cellClasses(day) { - function dateMatch(dateOne, dateTwo, multiple = false) { - // if either date is null or undefined, return false - // if using multiple flag, return false - if (!dateOne || !dateTwo || multiple) { - return false - } - - if (Array.isArray(dateTwo)) { - return dateTwo.some((date) => ( - dateOne.getDate() === date.getDate() && - dateOne.getFullYear() === date.getFullYear() && - dateOne.getMonth() === date.getMonth() - )) - } - return (dateOne.getDate() === dateTwo.getDate() && - dateOne.getFullYear() === dateTwo.getFullYear() && - dateOne.getMonth() === dateTwo.getMonth()) - } - - function dateWithin(dateOne, dates, multiple = false) { - if (!Array.isArray(dates) || multiple) { return false } - - return dateOne > dates[0] && dateOne < dates[1] - } - - return [ - ...this.tableCellClasses, - { - [this.computedClass('tableCellSelectedClass', 'o-dpck__table__cell--selected')] : - dateMatch(day, this.selectedDate) || dateWithin(day, this.selectedDate, this.multiple) - }, - { - [this.computedClass('tableCellFirstSelectedClass', 'o-dpck__table__cell--first-selected')] : - dateMatch( - day, - Array.isArray(this.selectedDate) && this.selectedDate[0], - this.multiple - ), - }, - { - [this.computedClass('tableCellWithinSelectedClass', 'o-dpck__table__cell--within-selected')] : - dateWithin(day, this.selectedDate, this.multiple) - }, - { - [this.computedClass('tableCellLastSelectedClass', 'o-dpck__table__cell--last-selected')] : - dateMatch( - day, - Array.isArray(this.selectedDate) && this.selectedDate[1], - this.multiple - ), - }, - { - [this.computedClass('tableCellFirstHoveredClass', 'o-dpck__table__cell--first-hovered')] : - dateMatch( - day, - Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0] - ), - }, - { - [this.computedClass('tableCellWithinHoveredClass', 'o-dpck__table__cell--within-hovered')] : - dateWithin(day, this.hoveredDateRange) - }, - { - [this.computedClass('tableCellLastHoveredClass', 'o-dpck__table__cell--last-hovered')] : - dateMatch( - day, - Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1] - ) - }, - { - [this.computedClass('tableCellTodayClass', 'o-dpck__table__cell--today')] : - dateMatch(day, this.dateCreator()) - }, - { - [this.computedClass('tableCellSelectableClass', 'o-dpck__table__cell--selectable')] : - this.selectableDate(day) && !this.disabled - }, - { - [this.computedClass('tableCellUnselectableClass', 'o-dpck__table__cell--unselectable')] : - !this.selectableDate(day) || this.disabled - }, - { - [this.computedClass('tableCellInvisibleClass', 'o-dpck__table__cell--invisible')] : - !this.nearbyMonthDays && day.getMonth() !== this.month - }, - { - [this.computedClass('tableCellNearbyClass', 'o-dpck__table__cell--nearby')] : - this.nearbySelectableMonthDays && day.getMonth() !== this.month - }, - { - [this.computedClass('tableCellEventsClass', 'o-dpck__table__cell--events')] : - this.hasEvents - }, - { - [this.computedClass('tableCellTodayClass', 'o-dpck__table__cell--today')] : - dateMatch(day, this.dateCreator()) - } - ] - }, - - eventClasses(event) { - return [ - this.computedClass('tableEventClass', 'o-dpck__table__event'), - { [this.computedClass('tableEventVariantClass', 'o-dpck__table__event--', event.type)]: event.type }, - { [this.computedClass('tableEventIndicatorsClass', 'o-dpck__table__event--', this.indicators)]: this.indicators } - ] - }, - - setRangeHoverEndDate(day) { - if (this.range) { - this.$emit('rangeHoverEndDate', day) - } - }, - - changeFocus(day, inc) { - const nextDay = new Date(day.getTime()) - nextDay.setDate(day.getDate() + inc) - while ( - (!this.minDate || nextDay > this.minDate) && - (!this.maxDate || nextDay < this.maxDate) && - !this.selectableDate(nextDay) - ) { - nextDay.setDate(day.getDate() + Math.sign(inc)) - } - this.setRangeHoverEndDate(nextDay) - this.$emit('change-focus', nextDay) - } - } -} -</script> diff --git a/packages/oruga/src/components/datepicker/Inspector.vue b/packages/oruga/src/components/datepicker/Inspector.vue deleted file mode 100644 index e7174a9af..000000000 --- a/packages/oruga/src/components/datepicker/Inspector.vue +++ /dev/null @@ -1,565 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field label="Select a date"> - <o-datepicker v-bind="s" :events="events" locale="en-GB" placeholder="Click to select a date..." icon="calendar" ref="datepicker"> - Footer - </o-datepicker> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - methods: { - openDatePicker() { - setTimeout(() => { - this.$refs.datepicker.$el.getElementsByClassName('o-input-iconspace-left')[0].click() - }, 500) - } - }, - data() { - return { - events: [ - { - date: new Date(), - type: 'info' - }, - { - date: new Date(), - type: 'warning' - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "sizeClass", - description: "Class of the Datepicker size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - }, - }, - { - class: "boxClass", - description: "Class of the Datepicker box where you choose the date", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "headerClass", - description: "Class of the Datepicker header inside the box", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "headerButtonsClass", - description: "Class of the Datepicker buttons inside the box", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "headerButtonsSizeClass", - description: "Class of the Datepicker buttons inside the box when a size is choosen", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.type = '' - cmp.data.size = 'large'; - this.openDatePicker(); - }, - }, - { - class: "prevBtnClass", - description: "Class of the prev. button inside the Datepicker box", - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "nextBtnClass", - description: "Class of the next button inside the Datepicker box", - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "listsClass", - description: "Class of the month and year selects container inside the Datepicker box", - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "footerClass", - description: "Class of the Datepicker footer", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "tableClass", - description: "Class of the Datepicker table inside the box", - action: (cmp) => { - cmp.data.type = '' - this.openDatePicker(); - } - }, - { - class: "tableHeadClass", - description: "Class of Datepicker header with days of the week inside the table", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableHeadCellClass", - description: "Class of the cell inside the table header", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableBodyClass", - description: "Class of the table body inside the box", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableRowClass", - description: "Class of the table row", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellClass", - description: "Class of the table cell", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellInvisibleClass", - description: "Class of the table cell when nearby month days are hidden", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.nearbyMonthDays = false - this.openDatePicker(); - } - }, - { - class: "tableCellSelectedClass", - description: "Class of table cell when it's selected", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellFirstSelectedClass", - description: "Class of the first selected table cell when in range", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "tableCellWithinSelectedClass", - description: "Class of the table cells within the range when the range is selected", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "tableCellLastSelectedClass", - description: "Class of the last selected table cell during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellFirstHoveredClass", - description: "Class of the first hovered table cell during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellWithinHoveredClass", - description: "Class of the table cell when hovered during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellLastHoveredClass", - description: "Class of the last table cell hovered during range selection", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = '' - cmp.data.range = true - cmp.data.inline = true - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellTodayClass", - description: "Class of the table cell of the current day", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellSelectableClass", - description: "Class of the table cell that is selectable", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellUnselectableClass", - description: "Class of the table cell that is unselectable", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableCellNearbyClass", - description: "Class of the table cell when nearby days (prev/next month) are selectable", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.nearbySelectableMonthDays = true - this.openDatePicker(); - } - }, - { - class: "tableCellEventsClass", - description: "Class of the cell of a row when at least one event is present", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventClass", - description: "Class of the event", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventsClass", - description: "Class of the events container", - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventVariantClass", - description: "Class of the event indicator when a `variant` is specified", - properties: ["variant in event"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "tableEventIndicatorsClass", - description: "Class of the event indicator", - properties: ['indicator'], - suffixes: ['bars', 'dots', '*'], - action: (cmp) => { - cmp.data.type = '' - cmp.data.tableClass = 'datepicker__table' - cmp.data.indicators = 'bars' - this.openDatePicker(); - } - }, - { - class: "monthClass", - description: "Class of the Datepicker table inside the box when type is month", - action: (cmp) => { - cmp.data.type = 'month' - this.openDatePicker(); - } - }, - { - class: "monthBodyClass", - description: "Class of the table body inside the box when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthRowClass", - description: "Class of the table row when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellClass", - description: "Class of the table cell when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellInvisibleClass", - description: "Class of the table cell when nearby month days are hidden when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.nearbyMonthDays = false - this.openDatePicker(); - } - }, - { - class: "monthCellSelectedClass", - description: "Class of table cell when it's selected when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellFirstSelectedClass", - description: "Class of the first selected table cell when in range when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "monthCellWithinSelectedClass", - description: "Class of the table cells within the range when the range is selected when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.range = true - cmp.data.inline = true - this.openDatePicker(); - } - }, - { - class: "monthCellLastSelectedClass", - description: "Class of the last selected table cell during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellFirstHoveredClass", - description: "Class of the first hovered table cell during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellWithinHoveredClass", - description: "Class of the table cell when hovered during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellLastHoveredClass", - description: "Class of the last table cell hovered during range selection when type is month", - warning: "See it in action selecting a date range", - action: (cmp) => { - cmp.data.range = true - cmp.data.inline = true - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellTodayClass", - description: "Class of the table cell of the current day when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellSelectableClass", - description: "Class of the table cell that is selectable when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellUnselectableClass", - description: "Class of the table cell that is unselectable when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "monthCellNearbyClass", - description: "Class of the table cell when nearby days (prev/next month) are selectable when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - cmp.data.nearbySelectableMonthDays = true - this.openDatePicker(); - } - }, - { - class: "monthEventsClass", - description: "Class of the events container when type is month", - action: (cmp) => { - cmp.data.type = 'month' - cmp.data.monthClass = 'datepicker__,table__month' - this.openDatePicker(); - } - }, - { - class: "mobileClass", - description: "Class of the Datepicker when on mobile", - warning: "Switch to mobile view to see it in action!", - action: (cmp) => { - cmp.data.tableClass = 'datepicker__table' - this.openDatePicker(); - } - }, - { - class: "inputClasses", - realClass: "inputClasses.rootClass", - description: "Classes to apply on internal input.", - componentRef: "Input" - }, - { - class: "dropdownClasses", - realClass: "dropdownClasses.rootClass", - description: "Classes to apply on dropdown.", - componentRef: "Dropdown", - action: () => { - this.openDatePicker(); - } - }, - { - class: "selectListClasses", - description: "Classes to apply on select list (month and year).", - componentRef: "Select", - action: () => { - this.openDatePicker(); - } - }, - ], - }; - } -} -</script> -<style> -.datepicker__table { - border-collapse: collapse; -} -</style> diff --git a/packages/oruga/src/components/datepicker/__snapshots__/Datepicker.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/Datepicker.spec.js.snap deleted file mode 100644 index d3b9231ee..000000000 --- a/packages/oruga/src/components/datepicker/__snapshots__/Datepicker.spec.js.snap +++ /dev/null @@ -1,417 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ODatepicker render correctly 1`] = ` -<div class="o-dpck"> - <o-dropdown-stub maxheight="200" mobilemodal="true" ariarole="dialog" animation="fade" trapfocus="true" closeonclick="true" canclose="true" triggers="click" menutag="div" appendtobodycopyparent="true" rootclass="o-dpck__dropdown" aria-modal="true"> - <o-dropdown-item-stub override="true" tag="div" tabindex="0" ariarole="" itemclass="o-dpck__box"> - <header class="o-dpck__header"> - <div class="o-dpck__header__buttons"><a role="button" href="#" class="o-dpck__header__previous"> - <o-icon-stub icon="chevron-left" clickable="true" both="true"></o-icon-stub> - </a> <a role="button" href="#" class="o-dpck__header__next"> - <o-icon-stub icon="chevron-right" clickable="true" both="true"></o-icon-stub> - </a> - <div class="o-dpck__header__list"> - <o-select-stub usehtml5validation="true" statusicon="true" value="7"> - <option value="0"> - January - </option> - <option value="1"> - February - </option> - <option value="2"> - March - </option> - <option value="3"> - April - </option> - <option value="4"> - May - </option> - <option value="5"> - June - </option> - <option value="6"> - July - </option> - <option value="7"> - August - </option> - <option value="8"> - September - </option> - <option value="9"> - October - </option> - <option value="10"> - November - </option> - <option value="11"> - December - </option> - </o-select-stub> - <o-select-stub usehtml5validation="true" statusicon="true" value="2018"> - <option value="2028"> - 2028 - </option> - <option value="2027"> - 2027 - </option> - <option value="2026"> - 2026 - </option> - <option value="2025"> - 2025 - </option> - <option value="2024"> - 2024 - </option> - <option value="2023"> - 2023 - </option> - <option value="2022"> - 2022 - </option> - <option value="2021"> - 2021 - </option> - <option value="2020"> - 2020 - </option> - <option value="2019"> - 2019 - </option> - <option value="2018"> - 2018 - </option> - <option value="2017"> - 2017 - </option> - <option value="2016"> - 2016 - </option> - <option value="2015"> - 2015 - </option> - <option value="2014"> - 2014 - </option> - <option value="2013"> - 2013 - </option> - <option value="2012"> - 2012 - </option> - <option value="2011"> - 2011 - </option> - <option value="2010"> - 2010 - </option> - <option value="2009"> - 2009 - </option> - <option value="2008"> - 2008 - </option> - <option value="2007"> - 2007 - </option> - <option value="2006"> - 2006 - </option> - <option value="2005"> - 2005 - </option> - <option value="2004"> - 2004 - </option> - <option value="2003"> - 2003 - </option> - <option value="2002"> - 2002 - </option> - <option value="2001"> - 2001 - </option> - <option value="2000"> - 2000 - </option> - <option value="1999"> - 1999 - </option> - <option value="1998"> - 1998 - </option> - <option value="1997"> - 1997 - </option> - <option value="1996"> - 1996 - </option> - <option value="1995"> - 1995 - </option> - <option value="1994"> - 1994 - </option> - <option value="1993"> - 1993 - </option> - <option value="1992"> - 1992 - </option> - <option value="1991"> - 1991 - </option> - <option value="1990"> - 1990 - </option> - <option value="1989"> - 1989 - </option> - <option value="1988"> - 1988 - </option> - <option value="1987"> - 1987 - </option> - <option value="1986"> - 1986 - </option> - <option value="1985"> - 1985 - </option> - <option value="1984"> - 1984 - </option> - <option value="1983"> - 1983 - </option> - <option value="1982"> - 1982 - </option> - <option value="1981"> - 1981 - </option> - <option value="1980"> - 1980 - </option> - <option value="1979"> - 1979 - </option> - <option value="1978"> - 1978 - </option> - <option value="1977"> - 1977 - </option> - <option value="1976"> - 1976 - </option> - <option value="1975"> - 1975 - </option> - <option value="1974"> - 1974 - </option> - <option value="1973"> - 1973 - </option> - <option value="1972"> - 1972 - </option> - <option value="1971"> - 1971 - </option> - <option value="1970"> - 1970 - </option> - <option value="1969"> - 1969 - </option> - <option value="1968"> - 1968 - </option> - <option value="1967"> - 1967 - </option> - <option value="1966"> - 1966 - </option> - <option value="1965"> - 1965 - </option> - <option value="1964"> - 1964 - </option> - <option value="1963"> - 1963 - </option> - <option value="1962"> - 1962 - </option> - <option value="1961"> - 1961 - </option> - <option value="1960"> - 1960 - </option> - <option value="1959"> - 1959 - </option> - <option value="1958"> - 1958 - </option> - <option value="1957"> - 1957 - </option> - <option value="1956"> - 1956 - </option> - <option value="1955"> - 1955 - </option> - <option value="1954"> - 1954 - </option> - <option value="1953"> - 1953 - </option> - <option value="1952"> - 1952 - </option> - <option value="1951"> - 1951 - </option> - <option value="1950"> - 1950 - </option> - <option value="1949"> - 1949 - </option> - <option value="1948"> - 1948 - </option> - <option value="1947"> - 1947 - </option> - <option value="1946"> - 1946 - </option> - <option value="1945"> - 1945 - </option> - <option value="1944"> - 1944 - </option> - <option value="1943"> - 1943 - </option> - <option value="1942"> - 1942 - </option> - <option value="1941"> - 1941 - </option> - <option value="1940"> - 1940 - </option> - <option value="1939"> - 1939 - </option> - <option value="1938"> - 1938 - </option> - <option value="1937"> - 1937 - </option> - <option value="1936"> - 1936 - </option> - <option value="1935"> - 1935 - </option> - <option value="1934"> - 1934 - </option> - <option value="1933"> - 1933 - </option> - <option value="1932"> - 1932 - </option> - <option value="1931"> - 1931 - </option> - <option value="1930"> - 1930 - </option> - <option value="1929"> - 1929 - </option> - <option value="1928"> - 1928 - </option> - <option value="1927"> - 1927 - </option> - <option value="1926"> - 1926 - </option> - <option value="1925"> - 1925 - </option> - <option value="1924"> - 1924 - </option> - <option value="1923"> - 1923 - </option> - <option value="1922"> - 1922 - </option> - <option value="1921"> - 1921 - </option> - <option value="1920"> - 1920 - </option> - <option value="1919"> - 1919 - </option> - <option value="1918"> - 1918 - </option> - </o-select-stub> - </div> - </div> - </header> - <o-datepicker-table-stub daynames="Su,M,Tu,W,Th,F,S" monthnames="January,February,March,April,May,June,July,August,September,October,November,December" firstdayofweek="0" indicators="dots" focused="[object Object]" datecreator="() => { - /* istanbul ignore next */ - cov_2jc0oiltr0.f[13]++; - const dateCreator = - /* istanbul ignore next */ - (cov_2jc0oiltr0.s[57]++, (0, _helpers.getValueByPath)((0, _config.getOptions)(), 'datepicker.dateCreator', undefined)); - - /* istanbul ignore next */ - cov_2jc0oiltr0.s[58]++; - - if (typeof dateCreator === 'function') { - /* istanbul ignore next */ - cov_2jc0oiltr0.b[22][0]++; - cov_2jc0oiltr0.s[59]++; - return dateCreator(); - } else { - /* istanbul ignore next */ - cov_2jc0oiltr0.b[22][1]++; - cov_2jc0oiltr0.s[60]++; - return new Date(); - } - }" nearbymonthdays="true" rulesforfirstweek="4"></o-datepicker-table-stub> - <!----> - <!----> - </o-dropdown-item-stub> - </o-dropdown-stub> -</div> -`; diff --git a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerMonth.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/DatepickerMonth.spec.js.snap deleted file mode 100644 index f91ff3a25..000000000 --- a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerMonth.spec.js.snap +++ /dev/null @@ -1,45 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ODatepickerMonth render correctly 1`] = ` -<section class="o-dpck__month"> - <div class="o-dpck__month__body"> - <div class="o-dpck__month__table"><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - January - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - February - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - March - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - April - <!----> - </a><a role="button" href="#" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - May - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - June - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - July - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - August - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - September - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - October - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - November - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__month__cell o-dpck__month__cell--selectable"> - December - <!----> - </a></div> - </div> -</section> -`; diff --git a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTable.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTable.spec.js.snap deleted file mode 100644 index 82e0b623a..000000000 --- a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTable.spec.js.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ODatepickerTable render correctly 1`] = ` -<section class="o-dpck__table"> - <header class="o-dpck__table__head"> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>Su</span></div> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>M</span></div> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>Tu</span></div> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>W</span></div> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>Th</span></div> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>F</span></div> - <div class="o-dpck__table__head-cell o-dpck__table__cell"><span>S</span></div> - </header> - <div class="o-dpck__table__body"></div> -</section> -`; diff --git a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.js.snap b/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.js.snap deleted file mode 100644 index 9bc0a6528..000000000 --- a/packages/oruga/src/components/datepicker/__snapshots__/DatepickerTableRow.spec.js.snap +++ /dev/null @@ -1,21 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ODatepickerTableRow render correctly 1`] = ` -<div class="o-dpck__table__row"> - <!----> <a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>31</span> - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>1</span> - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>2</span> - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>3</span> - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>4</span> - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>5</span> - <!----> - </a><a role="button" href="#" tabindex="-1" class="o-dpck__table__cell o-dpck__table__cell--selectable o-dpck__table__cell--invisible"><span>6</span> - <!----> - </a> -</div> -`; diff --git a/packages/oruga/src/components/datepicker/examples/Datepicker.md b/packages/oruga/src/components/datepicker/examples/Datepicker.md deleted file mode 100644 index 410d78112..000000000 --- a/packages/oruga/src/components/datepicker/examples/Datepicker.md +++ /dev/null @@ -1,413 +0,0 @@ -## Examples - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <o-field> - <o-select v-model="locale" placeholder="Locale"> - <option :value="undefined"></option> - <option value="de-DE">de-DE</option> - <option value="en-CA">en-CA</option> - <option value="en-GB">en-GB</option> - <option value="en-US">en-US</option> - <option value="es-ES">es-ES</option> - <option value="es-MX">es-MX</option> - <option value="fr-CA">fr-CA</option> - <option value="fr-FR">fr-FR</option> - <option value="it-IT">it-IT</option> - <option value="ja-JP">ja-JP</option> - <option value="pt-BR">pt-BR</option> - <option value="ru-RU">ru-RU</option> - </o-select> - </o-field> - <o-field> - <o-switch v-model="showWeekNumber">Show week number</o-switch> - </o-field> - </o-field> - <o-field label="Select a date"> - <o-datepicker - v-model="selected" - :show-week-number="showWeekNumber" - :locale="locale" - placeholder="Click to select..." - icon="calendar" - trap-focus> - </o-datepicker> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - selected: new Date(), - showWeekNumber: false, - locale: undefined // Browser locale - } - } - } -</script> -``` -::: - -### Min/Max date - -::: demo -```html -<template> - <o-field label="Select a date"> - <o-datepicker - placeholder="Click to select..." - icon="calendar" - :min-date="minDate" - :max-date="maxDate"> - </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - const today = new Date() - - return { - date: new Date(), - minDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7), - maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7) - } - } - } -</script> -``` -::: - -### Range - -::: demo -```html -<template> - <o-field label="Select a date"> - <o-datepicker - placeholder="Click to select..." - icon="calendar" - v-model="dates" - range> - </o-datepicker> - </o-field> -</template> - -<script> -export default { - data() { - return { - dates: [] - } - } -} -</script> -``` -::: - -### Multiple - -::: demo -```html -<template> - <o-field label="Select a date"> - <o-datepicker - placeholder="Click to select..." - v-model="dates" - multiple> - </o-datepicker> - </o-field> -</template> - -<script> -export default { - data() { - return { - dates: [] - } - } -} -</script> -``` -::: - -### Trigger - -::: demo -```html -<template> - <section> - <o-field label="Select a date" grouped> - <o-datepicker v-model="selected" :mobile-native="false"> - <template v-slot:trigger> - <o-button - icon-left="calendar" - type="primary" /> - </template> - </o-datepicker> - <o-input readonly :value="selectedString" /> - </o-field> - </section> -</template> - -<script> -export default { - data() { - return { - selected: null - } - }, - computed: { - selectedString() { - return this.selected ? this.selected.toDateString() : '' - } - } -} -</script> -``` -::: - -### Programmatically - -::: demo -```html -<template> - <section> - <o-field> - <o-datepicker - ref="datepicker" - expanded - placeholder="Select a date"> - </o-datepicker> - <o-button - @click="$refs.datepicker.toggle()" - icon-left="calendar" - type="primary" /> - </o-field> - </section> -</template> - -<script> -export default { -} -</script> -``` -::: - -### Footer slot - -::: demo -```html -<template> - <o-field label="Select a date"> - <o-datepicker v-model="date" - :first-day-of-week="1" - placeholder="Click to select..."> - - <o-button variant="primary" - @click="date = new Date()"> - <o-icon icon="calendar"></o-icon> - <span>Today</span> - </o-button> - - <o-button variant="danger" - @click="date = null"> - <o-icon icon="times"></o-icon> - <span>Clear</span> - </o-button> - </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - date: new Date() - } - } - } -</script> -``` -::: - -### Header slot - -::: demo -```html -<template> - <o-field label="Select a date"> - <o-datepicker :focused-date="date" - :first-day-of-week="1" - placeholder="Click to select..."> - - <template slot="header"> - <o-field> - <o-autocomplete - open-on-focus - readonly - v-model="month" - :data="months" - field="name" - @select="selectMonth"> - </o-autocomplete> - <o-button disabled>{{ date.getFullYear() }}</o-button> - </o-field> - </template> - - </o-datepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - date: new Date(), - month: null, - months: [ - { name: 'January', value: 0 }, - { name:'February', value: 1 }, - { name:'March', value: 2 }, - { name:'April', value: 3 }, - { name:'May', value: 4 }, - { name:'June', value: 5 }, - { name:'July', value: 6 }, - { name:'August', value: 7 }, - { name:'September', value: 8 }, - { name:'October', value: 9 }, - { name:'November', value: 10 }, - { name:'December', value: 11 } - ] - } - }, - methods: { - selectMonth(option) { - if (option) { - this.date = new Date(this.date) - this.date.setMonth(option.value) - } - } - }, - mounted() { - this.month = this.months.filter((item) => - item.value == this.date.getMonth() - )[0].name - } - } -</script> -``` -::: - -### Events - -::: demo -```html -<template> - <span> - <o-field> - <o-switch v-model="bars">Bars</o-switch> - </o-field> - <o-datepicker - inline - v-model="date" - :events="events" - :indicators="indicators"> - </o-datepicker> - </span> -</template> - -<script> - const thisMonth = new Date().getMonth() - - export default { - computed: { - indicators() { - return this.bars ? 'bars' : 'dots' - } - }, - data() { - return { - date: new Date(2017, thisMonth, 1), - events: [ - new Date(2017, thisMonth, 2), - new Date(2017, thisMonth, 6), - { - date: new Date(2017, thisMonth, 6), - type: 'info' - }, - { - date: new Date(2017, thisMonth, 8), - type: 'danger' - }, - { - date: new Date(2017, thisMonth, 10), - type: 'success' - }, - { - date: new Date(2017, thisMonth, 10), - type: 'link' - }, - new Date(2017, thisMonth, 12), - { - date: new Date(2017, thisMonth, 12), - type: 'warning' - }, - { - date: new Date(2017, thisMonth, 16), - type: 'danger' - }, - new Date(2017, thisMonth, 20), - { - date: new Date(2017, thisMonth, 29), - type: 'success' - }, - { - date: new Date(2017, thisMonth, 29), - type: 'warning' - }, - { - date: new Date(2017, thisMonth, 29), - type: 'info' - } - ], - bars: false - } - } - } -</script> -``` -::: - -### Month picker - -::: demo -```html -<template> - <o-field label="Select a month"> - <o-datepicker - placeholder="Click to select..." - icon="calendar" - type="month" - v-model="dates"> - </o-datepicker> - </o-field> -</template> - -<script> -export default { - data() { - return { - dates: undefined - } - } -} -</script> -``` -::: diff --git a/packages/oruga/src/components/datepicker/index.js b/packages/oruga/src/components/datepicker/index.js deleted file mode 100644 index 87ddbad5e..000000000 --- a/packages/oruga/src/components/datepicker/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Datepicker from './Datepicker' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Datepicker) - } -} - -use(Plugin) - -export default Plugin - -export { - Datepicker as ODatepicker -} diff --git a/packages/oruga/src/components/datetimepicker/Datetimepicker.spec.js b/packages/oruga/src/components/datetimepicker/Datetimepicker.spec.js deleted file mode 100644 index 4e0f4a77b..000000000 --- a/packages/oruga/src/components/datetimepicker/Datetimepicker.spec.js +++ /dev/null @@ -1,145 +0,0 @@ -import { shallowMount, mount } from '@vue/test-utils' -import Datetimepicker from '@components/datetimepicker/Datetimepicker' - -let wrapper - -const defaultLocale = 'it-IT' - -describe('Datetimepicker', () => { - beforeEach(() => { - wrapper = shallowMount(Datetimepicker, { - propsData: { - locale: defaultLocale - } - }) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('ODatetimepicker') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('react accordingly when setting a new value', async () => { - const date = new Date() - wrapper.setProps({ value: date }) - await wrapper.vm.$nextTick() - - expect(wrapper.vm.newValue).toEqual(date) - }) - - it('react accordingly when setting computedValue', async () => { - const date = new Date() - wrapper.vm.computedValue = date - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(date) - }) - - it('react accordingly when handling native picker', () => { - const date = new Date(2020, 0, 1, 12, 30, 0) - wrapper.vm.onChangeNativePicker({ target: { value: '2020-01-01T12:30' } }) - expect(wrapper.emitted()['input']).toEqual([[date]]) - }) - - it('react accordingly when handling native picker clear', () => { - wrapper.vm.onChangeNativePicker({ target: { value: '' } }) - expect(wrapper.emitted()['input']).toEqual([[null]]) - }) - - it('react accordingly when setting minDateTime prop and computedValue', () => { - const min = new Date(2019, 9, 20, 8, 0, 0, 0) - const date = new Date(2019, 9, 18, 0, 0, 0, 0) - wrapper.setProps({ - minDatetime: min - }) - wrapper.vm.computedValue = date - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(min) - }) - - it('react accordingly when setting maxDateTime prop and computedValue', () => { - const max = new Date(2019, 9, 18, 0, 0, 0, 0) - const date = new Date(2019, 9, 20, 8, 0, 0, 0) - wrapper.setProps({ - maxDatetime: max - }) - wrapper.vm.computedValue = date - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(max) - }) - - it('should format date time', async () => { - const datetimeToFormat = new Date(2019, 9, 1, 8, 30, 0, 0) - wrapper = mount(Datetimepicker, { - propsData: { - value: datetimeToFormat, - locale: defaultLocale - }, - stubs: { - transition: false - } - }) - const datepicker = wrapper.find({ ref: 'datepicker' }) - await wrapper.vm.$nextTick() - expect(datepicker.vm.formattedValue).toEqual('1/10/2019, 08:30') - wrapper.setProps({ - datetimeFormatter: (date) => `${date.getFullYear()}` - }) - expect(datepicker.vm.formattedValue).toEqual('2019') - }) - - /* - it('should format date time with seconds', async () => { - wrapper = mount(Datetimepicker, { - propsData: { - locale: defaultLocale, - timepicker: { - enableSeconds: true, - locale: defaultLocale - } - }, - stubs: { - transition: false - } - }) - await wrapper.vm.$nextTick() - const datetimeToFormat = new Date(2019, 9, 1, 8, 30, 0, 0) - const formattedDatetime = wrapper.vm.defaultDatetimeFormatter(datetimeToFormat) - expect(formattedDatetime).toEqual('1/10/2019, 08:30:00') - }) - */ - - it('should format date time according init value', async () => { - const date = new Date(2019, 9, 1, 8, 30, 0, 0) - wrapper = mount(Datetimepicker, { - propsData: { - locale: defaultLocale, - value: date - }, - stubs: { - transition: false - } - }) - await wrapper.vm.$nextTick() - expect(wrapper.find('input').element.value).toEqual('1/10/2019, 08:30') - }) - - it('should parse date time', async () => { - wrapper = mount(Datetimepicker, { - stubs: { - transition: false - } - }) - const datepicker = wrapper.find({ ref: 'datepicker' }) - - let expectedDatetime = new Date(2019, 9, 1, 9, 30, 0, 0) - datepicker.vm.onChange('2019-10-1 09:30') - expect(wrapper.vm.computedValue).toEqual(expectedDatetime) - - expectedDatetime = new Date(2019, 9, 1, 9, 30, 0, 0) - wrapper.setProps({ - datetimeParser: () => expectedDatetime - }) - datepicker.vm.onChange('Whatever!') - expect(datepicker.vm.computedValue).toEqual(expectedDatetime) - }) -}) diff --git a/packages/oruga/src/components/datetimepicker/Datetimepicker.vue b/packages/oruga/src/components/datetimepicker/Datetimepicker.vue deleted file mode 100644 index 25807a825..000000000 --- a/packages/oruga/src/components/datetimepicker/Datetimepicker.vue +++ /dev/null @@ -1,449 +0,0 @@ -<template> - <o-datepicker - v-if="!isMobile || inline" - ref="datepicker" - v-model="computedValue" - v-bind="datepicker" - :class="datepickerWrapperClasses" - :rounded="rounded" - :open-on-focus="openOnFocus" - :position="position" - :inline="inline" - :editable="editable" - :expanded="expanded" - :close-on-click="false" - :date-formatter="defaultDatetimeFormatter" - :date-parser="defaultDatetimeParser" - :min-date="minDate" - :max-date="maxDate" - :icon="icon" - :icon-right="iconRight" - :icon-right-clickable="iconRightClickable" - :icon-pack="iconPack" - :size="datepickerSize" - :placeholder="placeholder" - :range="false" - :disabled="disabled" - :mobile-native="isMobileNative" - :locale="locale" - :append-to-body="appendToBody" - @focus="onFocus" - @blur="onBlur" - @active-change="$emit('active-change', $event)" - @icon-right-click="$emit('icon-right-click')" - @change-month="$emit('change-month', $event)" - @change-year="$emit('change-year', $event)"> - <template #footer> - <div :class="timepickerWrapperClasses"> - <o-timepicker - ref="timepicker" - v-bind="timepicker" - v-model="computedValue" - inline - :editable="editable" - :min-time="minTime" - :max-time="maxTime" - :size="timepickerSize" - :disabled="timepickerDisabled" - :mobile-native="isMobileNative" - :locale="locale" - /> - </div> - <template v-if="$slots.footer !== undefined"> - <slot name="footer" /> - </template> - </template> - </o-datepicker> - <o-input - v-else - ref="input" - type="datetime-local" - autocomplete="off" - :value="formatNative(computedValue)" - :placeholder="placeholder" - :size="datepickerSize" - :icon="icon" - :icon-pack="iconPack" - :rounded="rounded" - :max="formatNative(maxDate)" - :min="formatNative(minDate)" - :disabled="disabled" - :readonly="false" - v-bind="$attrs" - :use-html5-validation="useHtml5Validation" - @change.native="onChangeNativePicker" - @focus="onFocus" - @blur="onBlur" - @invalid="onInvalid" /> -</template> - -<script> -import FormElementMixin from '../../utils/FormElementMixin' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { getValueByPath, isMobile, matchWithGroups } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -import Datepicker from '../datepicker/Datepicker' -import Timepicker from '../timepicker/Timepicker' - -const AM = 'AM' -const PM = 'PM' - -/** - * An input with a simple dropdown/modal for selecting a date and time, uses native datetimepicker for mobile - * @displayName Datetimepicker - * @example ./examples/Datetimepicker.md - */ -export default { - name: 'ODatetimepicker', - components: { - [Datepicker.name]: Datepicker, - [Timepicker.name]: Timepicker - }, - configField: 'datetimepicker', - mixins: [FormElementMixin, BaseComponentMixin], - inheritAttrs: false, - props: { - /* @model */ - value: { - type: Date - }, - /* Enable input/typing. Note that you might have to set a custom datetime parser */ - editable: { - type: Boolean, - default: false - }, - /** - * Size of button, optional - * @values small, medium, large - */ - size: String, - placeholder: String, - disabled: Boolean, - /** - * Icon name to be added on the right side - */ - iconRight: String, - /** - * Make the icon right clickable - */ - iconRightClickable: Boolean, - /* Datimepicker is shown inline, input is removed */ - inline: Boolean, - /* Open datetimepicker on input focus */ - openOnFocus: Boolean, - /** - * Optional, position of the datepicker relative to the input - * @values top-right, top-left, bottom-left - */ - position: String, - /* Enable native datetimepicker on mobile */ - mobileNative: { - type: Boolean, - default: true - }, - /* Earliest datetime available for selection */ - minDatetime: Date, - /* Latest datetime available for selection */ - maxDatetime: Date, - /* Function to format datetime (Date type) to a string for displaying in the input */ - datetimeFormatter: { - type: Function - }, - /* Function to parse string to a datetime (Date type) for setting the component's datetime from the input */ - datetimeParser: { - type: Function - }, - /* Function used internally to create a new Date instance */ - datetimeCreator: { - type: Function, - default: (date) => { - const datetimeCreator = getValueByPath(getOptions(), 'datetimepicker.datetimeCreator', undefined) - if (typeof datetimeCreator === 'function') { - return datetimeCreator(date) - } else { - return date - } - } - }, - /** - * Properties and classes to bind to the internal DatePicker - */ - datepicker: Object, - /** - * Properties and classes to bind to the internal TimePicker - */ - timepicker: Object, - /* Accept a string with a BCP 47 language tag, or an array of such strings. See Unicode BCP 47 locale identifier */ - locale: { - type: [String, Array], - default: () => { - return getValueByPath(getOptions(), 'locale') - } - }, - /* Append datetimepicker calendar to body */ - appendToBody: Boolean, - datepickerWrapperClass: [String, Function, Array], - timepickerWrapperClass: [String, Function, Array], - }, - data() { - return { - newValue: this.value - } - }, - computed: { - datepickerWrapperClasses() { - return [ - this.computedClass('datepickerWrapperClass', 'o-dtpck__date') - ] - }, - timepickerWrapperClasses() { - return [ - this.computedClass('timepickerWrapperClass', 'o-dtpck__time') - ] - }, - computedValue: { - get() { - return this.newValue - }, - set(value) { - if (value) { - let val = new Date(value.getTime()) - if (this.newValue) { - // restore time part - if ((value.getDate() !== this.newValue.getDate() || - value.getMonth() !== this.newValue.getMonth() || - value.getFullYear() !== this.newValue.getFullYear()) && - value.getHours() === 0 && - value.getMinutes() === 0 && - value.getSeconds() === 0) { - val.setHours(this.newValue.getHours(), - this.newValue.getMinutes(), - this.newValue.getSeconds(), 0) - } - } else { - val = this.datetimeCreator(value) - } - // check min and max range - if (this.minDatetime && val < this.minDatetime) { - val = this.minDatetime - } else if (this.maxDatetime && val > this.maxDatetime) { - val = this.maxDatetime - } - this.newValue = new Date(val.getTime()) - } else { - this.newValue = value - } - this.$emit('input', this.newValue) - } - }, - localeOptions() { - return new Intl.DateTimeFormat(this.locale, { - year: 'numeric', - month: 'numeric', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: this.enableSeconds() ? 'numeric' : undefined - }).resolvedOptions() - }, - dtf() { - return new Intl.DateTimeFormat(this.locale, { - year: this.localeOptions.year || 'numeric', - month: this.localeOptions.month || 'numeric', - day: this.localeOptions.day || 'numeric', - hour: this.localeOptions.hour || 'numeric', - minute: this.localeOptions.minute || 'numeric', - second: this.enableSeconds() ? this.localeOptions.second || 'numeric' : undefined, - hourCycle: !this.isHourFormat24() ? 'h12' : 'h23' - }) - }, - isMobileNative() { - return this.mobileNative - }, - isMobile() { - return this.isMobileNative && isMobile.any() - }, - minDate() { - if (!this.minDatetime) { - return this.datepicker ? this.datepicker.minDate : null - } - return new Date(this.minDatetime.getFullYear(), - this.minDatetime.getMonth(), - this.minDatetime.getDate(), 0, 0, 0, 0) - }, - maxDate() { - if (!this.maxDatetime) { - return this.datepicker ? this.datepicker.maxDate : null - } - return new Date(this.maxDatetime.getFullYear(), - this.maxDatetime.getMonth(), - this.maxDatetime.getDate(), 0, 0, 0, 0) - }, - minTime() { - if (!this.minDatetime || (this.newValue === null || typeof this.newValue === 'undefined') - || this.newValue.getFullYear() != this.minDatetime.getFullYear() - || this.newValue.getMonth() != this.minDatetime.getMonth() - || this.newValue.getDate() != this.minDatetime.getDate() ) { - return this.timepicker ? this.timepicker.minTime : null - } - return this.minDatetime - }, - maxTime() { - if (!this.maxDatetime || (this.newValue === null || typeof this.newValue === 'undefined') - || this.newValue.getFullYear() != this.maxDatetime.getFullYear() - || this.newValue.getMonth() != this.maxDatetime.getMonth() - || this.newValue.getDate() != this.maxDatetime.getDate() ) { - return this.timepicker ? this.timepicker.maxTime : null - } - return this.maxDatetime - }, - datepickerSize() { - return this.datepicker && this.datepicker.size - ? this.datepicker.size : this.size - }, - timepickerSize() { - return this.timepicker && this.timepicker.size - ? this.timepicker.size : this.size - }, - timepickerDisabled() { - return this.timepicker && this.timepicker.disabled - ? this.timepicker.disabled : this.disabled - } - }, - watch: { - value() { - this.newValue = this.value - } - }, - methods: { - enableSeconds() { - if (this.$refs.timepicker) { - return this.$refs.timepicker.enableSeconds - } - return false - }, - isHourFormat24() { - if (this.$refs.timepicker) { - return this.$refs.timepicker.isHourFormat24 - } - return !this.localeOptions.hour12 - }, - defaultDatetimeParser(date) { - const datetimeParser = getValueByPath(getOptions(), 'datetimepicker.datetimeParser', undefined) - if (typeof this.datetimeParser === 'function') { - return this.datetimeParser(date) - } else if (typeof datetimeParser === 'function') { - return datetimeParser(date) - } else { - if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') { - let dayPeriods = [AM, PM, AM.toLowerCase(), PM.toLowerCase()] - if (this.$refs.timepicker) { - dayPeriods.push(this.$refs.timepicker.amString) - dayPeriods.push(this.$refs.timepicker.pmString) - } - const parts = this.dtf.formatToParts(new Date()) - const formatRegex = parts.map((part, idx) => { - if (part.type === 'literal') { - if (idx + 1 < parts.length && parts[idx + 1].type === 'hour') { - return `[^\\d]+` - } - return part.value.replace(/ /g, '\\s?') - } else if (part.type === 'dayPeriod') { - return `((?!=<${part.type}>)(${dayPeriods.join('|')})?)` - } - return `((?!=<${part.type}>)\\d+)` - }).join('') - const datetimeGroups = matchWithGroups(formatRegex, date) - - // We do a simple validation for the group. - // If it is not valid, it will fallback to Date.parse below - if ( - datetimeGroups.year && - datetimeGroups.year.length === 4 && - datetimeGroups.month && - datetimeGroups.month <= 12 && - datetimeGroups.day && - datetimeGroups.day <= 31 && - datetimeGroups.hour && - datetimeGroups.hour >= 0 && - datetimeGroups.hour < 24 && - datetimeGroups.minute && - datetimeGroups.minute >= 0 && - datetimeGroups.minute <= 59 - ) { - const d = new Date( - datetimeGroups.year, - datetimeGroups.month - 1, - datetimeGroups.day, - datetimeGroups.hour, - datetimeGroups.minute, - datetimeGroups.second || 0) - return d - } - } - - return new Date(Date.parse(date)) - } - }, - defaultDatetimeFormatter(date) { - const datetimeFormatter = getValueByPath(getOptions(), 'datetimepicker.datetimeFormatter', undefined) - if (typeof this.datetimeFormatter === 'function') { - return this.datetimeFormatter(date) - } else if (typeof datetimeFormatter === 'function') { - return datetimeFormatter(date) - } else { - return this.dtf.format(date) - } - }, - /* - * Parse date from string - */ - onChangeNativePicker(event) { - const date = event.target.value - const s = date ? date.split(/\D/) : [] - if (s.length >= 5) { - const year = parseInt(s[0], 10) - const month = parseInt(s[1], 10) - 1 - const day = parseInt(s[2], 10) - const hours = parseInt(s[3], 10) - const minutes = parseInt(s[4], 10) - // Seconds are omitted intentionally; they are unsupported by input - // type=datetime-local and cause the control to fail native validation - this.computedValue = new Date(year, month, day, hours, minutes) - } else { - this.computedValue = null - } - }, - formatNative(value) { - const date = new Date(value) - if (value && !isNaN(date)) { - const year = date.getFullYear() - const month = date.getMonth() + 1 - const day = date.getDate() - const hours = date.getHours() - const minutes = date.getMinutes() - const seconds = date.getSeconds() - return year + '-' + - ((month < 10 ? '0' : '') + month) + '-' + - ((day < 10 ? '0' : '') + day) + 'T' + - ((hours < 10 ? '0' : '') + hours) + ':' + - ((minutes < 10 ? '0' : '') + minutes) + ':' + - ((seconds < 10 ? '0' : '') + seconds) - } - return '' - }, - toggle() { - this.$refs.datepicker.toggle() - } - }, - mounted() { - if (!this.isMobile || this.inline) { - // $refs attached, it's time to refresh datepicker (input) - if (this.newValue) { - this.$refs.datepicker.$forceUpdate() - } - } - } -} -</script> diff --git a/packages/oruga/src/components/datetimepicker/Inspector.vue b/packages/oruga/src/components/datetimepicker/Inspector.vue deleted file mode 100644 index 6e1ade46e..000000000 --- a/packages/oruga/src/components/datetimepicker/Inspector.vue +++ /dev/null @@ -1,53 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field label="Select datetime"> - <o-datetimepicker - v-bind="s" - placeholder="Click to select..." - icon="calendar" - horizontal-time-picker - ref="datetimepicker" - > - </o-datetimepicker> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - methods: { - openDatetimePicker() { - setTimeout(() => { - this.$refs.datetimepicker.$el.getElementsByClassName('o-drop__trigger')[0].click() - }, 500) - } - }, - data() { - return { - inspectData: [ - { - class: "datepickerWrapperClass", - description: "Class of the Datepicker wrapper", - }, - { - class: "timepickerWrapperClass", - description: "Class of the Timepicker wrapper", - action: () => { - this.openDatetimePicker(); - } - } - ], - }; - } -} -</script> -<style> -.datepicker__table { - border-collapse: collapse; -} -</style> diff --git a/packages/oruga/src/components/datetimepicker/examples/Datetimepicker.md b/packages/oruga/src/components/datetimepicker/examples/Datetimepicker.md deleted file mode 100644 index 49be55a88..000000000 --- a/packages/oruga/src/components/datetimepicker/examples/Datetimepicker.md +++ /dev/null @@ -1,130 +0,0 @@ - -## Examples - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="showWeekNumber">Show week number</o-switch> - </div> - <div class="control"> - <o-switch v-model="enableSeconds">Enable seconds</o-switch> - </div> - <o-field label="Locale"> - <o-select v-model="locale"> - <option :value="undefined"></option> - <option value="de-DE">de-DE</option> - <option value="en-CA">en-CA</option> - <option value="en-GB">en-GB</option> - <option value="en-US">en-US</option> - <option value="es-ES">es-ES</option> - <option value="es-MX">es-MX</option> - <option value="fr-CA">fr-CA</option> - <option value="fr-FR">fr-FR</option> - <option value="it-IT">it-IT</option> - <option value="ja-JP">ja-JP</option> - <option value="pt-BR">pt-BR</option> - <option value="ru-RU">ru-RU</option> - <option value="zn-CN">zn-CN</option> - </o-select> - </o-field> - <o-field label="Hour format"> - <o-select v-model="hourFormat"> - <option :value="undefined"></option> - <option value="12">12</option> - <option value="24">24</option> - </o-select> - </o-field> - </o-field> - <o-field label="Select datetime"> - <o-datetimepicker - rounded - placeholder="Click to select..." - icon="calendar" - :locale="locale" - :datepicker="{ showWeekNumber }" - :timepicker="{ enableSeconds, hourFormat }"> - </o-datetimepicker> - </o-field> - </section> -</template> - -<script> -export default { - data() { - return { - showWeekNumber: false, - enableSeconds: false, - hourFormat: undefined, // Browser locale - locale: undefined // Browser locale - } - } -} -</script> -``` -::: - -### Footer slot - -::: demo -```html -<template> - <o-field label="Select datetime"> - <o-datetimepicker v-model="datetime" - placeholder="Click to select..."> - <div class="buttons-footer"> - <o-button variant="primary" - @click="datetime = new Date()"> - <o-icon icon="calendar"></o-icon> - <span>Today</span> - </o-button> - <o-button variant="danger" - @click="datetime = null"> - <o-icon icon="times"></o-icon> - <span>Clear</span> - </o-button> - </div> - </o-datetimepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - datetime: new Date() - } - } - } -</script> - -<style> -.buttons-footer { - margin-top: 1rem; -} -</style> -``` -::: - -### Inline - - -::: demo -```html -<template> - <o-datetimepicker v-model="datetime" inline></o-datetimepicker> -</template> - -<script> - export default { - data() { - return { - datetime: new Date() - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/datetimepicker/index.js b/packages/oruga/src/components/datetimepicker/index.js deleted file mode 100644 index 1899ac674..000000000 --- a/packages/oruga/src/components/datetimepicker/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Datetimepicker from './Datetimepicker' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Datetimepicker) - } -} - -use(Plugin) - -export default Plugin - -export { - Datetimepicker as BDatetimepicker -} diff --git a/packages/oruga/src/components/dropdown/Dropdown.spec.js b/packages/oruga/src/components/dropdown/Dropdown.spec.js deleted file mode 100644 index 700bc93e5..000000000 --- a/packages/oruga/src/components/dropdown/Dropdown.spec.js +++ /dev/null @@ -1,223 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ODropdown from '@components/dropdown/Dropdown' - -describe('ODropdown', () => { - const val1 = 'val1' - const val2 = 'val2' - let wrapper - - beforeEach(() => { - wrapper = shallowMount(ODropdown, { - slots: { - trigger: '<button class="trigger">trigger</button>' - } - }) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('ODropdown') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage props validator', () => { - const position = wrapper.vm.$options.props.position - - expect(position.type).toBe(String) - expect(position.validator && position.validator('top')).toBeFalsy() - expect(position.validator && position.validator('top-left')).toBeTruthy() - expect(position.validator && position.validator('top-right')).toBeTruthy() - expect(position.validator && position.validator('bottom-left')).toBeTruthy() - }) - - it('react accordingly when changing v-model', async () => { - const value = 'value' - wrapper.setProps({ value }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.selected).toBe(value) - }) - - it('emit activity when it changes', async () => { - wrapper.vm.updateAppendToBody = jest.fn(() => wrapper.vm.updateAppendToBody) - wrapper.setProps({ appendToBody: true }) - - wrapper.vm.isActive = true - await wrapper.vm.$nextTick() - expect(wrapper.emitted()['active-change']).toBeTruthy() - - expect(wrapper.vm.updateAppendToBody).toHaveBeenCalled() - }) - - it('react accordingly on mouse over', () => { - const trigger = wrapper.find({ ref: 'trigger' }) - trigger.trigger('mouseenter') - expect(wrapper.vm.isHoverable).toBeFalsy() - - wrapper.setProps({ triggers: ['hover'] }) - trigger.trigger('mouseenter') - expect(wrapper.vm.isHoverable).toBeTruthy() - }) - - it('react accordingly when new item is selected', () => { - jest.useFakeTimers() - - wrapper.vm.selectItem(val1) - expect(wrapper.emitted().input).toHaveLength(1) - expect(wrapper.emitted().input[0]).toEqual([val1]) - expect(wrapper.emitted().change).toHaveLength(1) - expect(wrapper.emitted().change[0]).toEqual([val1]) - - wrapper.setProps({ - hoverable: true, - closeOnClick: true - }) - - wrapper.vm.selectItem(val2) - expect(wrapper.emitted().input).toHaveLength(2) - expect(wrapper.emitted().input[1]).toEqual([val2]) - expect(wrapper.emitted().change).toHaveLength(2) - expect(wrapper.emitted().change[1]).toEqual([val2]) - - expect(wrapper.vm.isHoverable).toBeFalsy() - }) - - it('react accordingly when same item is selected', () => { - jest.useFakeTimers() - - // will emit only input event - wrapper.setProps({ value: val1 }) - wrapper.vm.selectItem(val1) - expect(wrapper.emitted().input).toHaveLength(1) - expect(wrapper.emitted().input[0]).toEqual([val1]) - }) - - it('react accordingly when an item is selected with multiple prop', () => { - jest.useFakeTimers() - wrapper.setProps({ - multiple: true - }) - wrapper.vm.selected = null - - // no initial value, will return an array with the only selected option - wrapper.vm.selectItem(val1) - expect(wrapper.emitted().input).toHaveLength(1) - expect(wrapper.emitted().input[0]).toEqual([[val1]]) - expect(wrapper.emitted().change).toHaveLength(1) - expect(wrapper.emitted().change[0]).toEqual([[val1]]) - - // will return an array with the new value appended - wrapper.setProps({ value: [val1] }) - wrapper.vm.selectItem(val2) - expect(wrapper.emitted().input).toHaveLength(2) - expect(wrapper.emitted().input[1]).toEqual([[val1, val2]]) - expect(wrapper.emitted().change).toHaveLength(2) - expect(wrapper.emitted().change[1]).toEqual([[val1, val2]]) - - // will remove the last selection since it was part of the list - wrapper.setProps({ value: [val1, val2] }) - wrapper.vm.selectItem(val2) - expect(wrapper.emitted().input).toHaveLength(3) - expect(wrapper.emitted().input[2]).toEqual([[val1]]) - expect(wrapper.emitted().change).toHaveLength(3) - expect(wrapper.emitted().change[2]).toEqual([[val1]]) - }) - - it('manage the whitelisted items accordingly', () => { - let el = wrapper.vm.$refs.dropdownMenu - expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - // el = wrapper.vm.$refs.dropdownMenu.childNodes[0] - // expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - wrapper.vm.$refs.dropdownMenu = undefined - - el = wrapper.vm.$refs.trigger - expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - el = wrapper.vm.$refs.trigger.querySelector('.trigger') - expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - wrapper.vm.$refs.trigger = undefined - - el = document.createElement('div') - expect(wrapper.vm.isInWhiteList(el)).toBeFalsy() - }) - - it('manage clicking outside accordingly', () => { - const el = document.createElement('div') - const event = { - target: el - } - - wrapper.vm.isActive = true - wrapper.vm.clickedOutside(event) - expect(wrapper.vm.isActive).toBeFalsy() - - wrapper.vm.isActive = true - wrapper.vm.clickedOutside({ - target: wrapper.vm.$refs.trigger - }) - expect(wrapper.vm.isActive).toBeTruthy() - - wrapper.vm.isActive = true - wrapper.setProps({ inline: true }) - wrapper.vm.clickedOutside(event) - expect(wrapper.vm.isActive).toBeTruthy() - - wrapper.vm.isActive = true - wrapper.setProps({ canClose: false }) - wrapper.vm.clickedOutside(event) - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('close on escape', () => { - wrapper.vm.isActive = true - const event = new KeyboardEvent('keyup', { 'key': 'Escape' }) - wrapper.vm.keyPress({}) - wrapper.vm.keyPress(event) - expect(wrapper.vm.isActive).toBeFalsy() - - wrapper.vm.isActive = true - wrapper.setProps({ canClose: ['click'] }) - wrapper.vm.keyPress(event) - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('manage toggle function accordingly', (done) => { - wrapper.vm.isActive = true - wrapper.setProps({ disabled: true }) - wrapper.vm.toggle() - expect(wrapper.vm.isActive).toBeTruthy() - - wrapper.setProps({ disabled: false }) - wrapper.vm.toggle() - expect(wrapper.vm.isActive).toBeFalsy() - - jest.useFakeTimers() - wrapper.vm.isActive = false - wrapper.vm.toggle() - wrapper.vm.$nextTick(() => { - expect(setTimeout).toHaveBeenCalled() - jest.advanceTimersByTime(1) - expect(wrapper.vm.isActive).toBeTruthy() - done() - }) - }) - - it('reset events before destroy', () => { - document.removeEventListener = jest.fn() - - wrapper.destroy() - - expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function)) - expect(document.removeEventListener).toBeCalledWith('keyup', expect.any(Function)) - }) - - it('has configurable menu tag', () => { - wrapper.setProps({menuTag: 'ul'}) - wrapper.find('ul.o-drop__menu').exists() - }) -}) diff --git a/packages/oruga/src/components/dropdown/Dropdown.vue b/packages/oruga/src/components/dropdown/Dropdown.vue deleted file mode 100644 index c9f01886d..000000000 --- a/packages/oruga/src/components/dropdown/Dropdown.vue +++ /dev/null @@ -1,481 +0,0 @@ -<template> - <div - ref="dropdown" - :class="rootClasses" - > - <div - v-if="!inline" - :tabindex="disabled ? null : triggerTabindex" - ref="trigger" - :class="triggerClasses" - @click="onClick" - @contextmenu.prevent="onContextMenu" - @mouseenter="onHover" - @mouseleave="isHoverable = false" - @focus.capture="onFocus" - aria-haspopup="true"> - <slot name="trigger" :active="isActive"/> - </div> - - <transition :name="animation"> - <div - v-if="isMobileModal" - v-show="isActive" - :class="menuMobileOverlayClasses" - :aria-hidden="!isActive" - /> - </transition> - <transition :name="animation"> - <div - v-show="(!disabled && (isActive || isHoverable)) || inline" - ref="dropdownMenu" - :is="menuTag" - :class="menuClasses" - :aria-hidden="!isActive" - :role="ariaRole" - :aria-modal="!inline" - :style="menuStyle" - @mouseenter="onHover" - @mouseleave="isHoverable = false" - v-trap-focus="trapFocus"> - <slot/> - </div> - </transition> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import trapFocus from '../../directives/trapFocus' -import { getOptions } from '../../utils/config' -import { removeElement, createAbsoluteElement, toCssDimension, getValueByPath } from '../../utils/helpers' - -/** - * Dropdowns are very versatile, can used as a quick menu or even like a select for discoverable content - * @displayName Dropdown - * @requires ./DropdownItem.vue - * @example ./examples/Dropdown.md - * @style _dropdown.scss - */ -export default { - name: 'ODropdown', - directives: { - trapFocus - }, - configField: 'dropdown', - mixins: [BaseComponentMixin, MatchMediaMixin], - provide() { - return { - $dropdown: this - } - }, - props: { - /** @model */ - value: { - type: [String, Number, Boolean, Object, Array], - default: null - }, - /** - * Dropdown disabled - */ - disabled: Boolean, - /** - * Dropdown content (items) are shown inline, trigger is removed - */ - inline: Boolean, - /** - * Dropdown content will be scrollable - */ - scrollable: Boolean, - /** - * Max height of dropdown content - */ - maxHeight: { - type: [String, Number], - default: () => { - return getValueByPath(getOptions(), 'dropdown.maxHeight', 200) - } - }, - /** - * Optional, position of the dropdown relative to the trigger - * @values top-right, top-left, bottom-left - */ - position: { - type: String, - validator(value) { - return [ - 'top-right', - 'top-left', - 'bottom-left', - 'bottom-right' - ].indexOf(value) > -1 - } - }, - /** - * Dropdown content (items) are shown into a modal on mobile - */ - mobileModal: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'dropdown.mobileModal', true) - } - }, - /** - * Role attribute to be passed to list container for better accessibility. Use menu only in situations where your dropdown is related to navigation menus - * @values list, menu, dialog - */ - ariaRole: { - type: String, - validator(value) { - return [ - 'menu', - 'list', - 'dialog' - ].indexOf(value) > -1 - }, - default: null - }, - /** - * Custom animation (transition name) - */ - animation: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'dropdown.animation', 'fade') - } - }, - /** - * Allows multiple selections - */ - multiple: Boolean, - /** - * Trap focus inside the dropdown. - */ - trapFocus: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'dropdown.trapFocus', true) - } - }, - /** - * Close dropdown when content is clicked - */ - closeOnClick: { - type: Boolean, - default: true - }, - /** - * Can close dropdown by pressing escape or by clicking outside - * @values escape, outside - */ - canClose: { - type: [Array, Boolean], - default: true - }, - /** - * Dropdown will be expanded (full-width) - */ - expanded: Boolean, - /** - * Dropdown will be triggered by any events - * @values click, hover, contextmenu, focus - */ - triggers: { - type: Array, - default: () => ['click'] - }, - /** - * Dropdown menu tag name - */ - menuTag: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'dropdown.menuTag', 'div') - } - }, - /** - * Set the tabindex attribute on the dropdown trigger div (-1 to prevent selection via tab key) - */ - triggerTabindex: { - type: Number, - default: 0 - }, - /** - * Append dropdown content to body - */ - appendToBody: Boolean, - /** - * @ignore - */ - appendToBodyCopyParent: Boolean, - rootClass: [String, Function, Array], - triggerClass: [String, Function, Array], - inlineClass: [String, Function, Array], - menuMobileOverlayClass: [String, Function, Array], - menuClass: [String, Function, Array], - menuPositionClass: [String, Function, Array], - menuActiveClass: [String, Function, Array], - mobileClass: [String, Function, Array], - disabledClass: [String, Function, Array], - expandedClass: [String, Function, Array] - }, - data() { - return { - selected: this.value, - isActive: false, - isHoverable: false, - bodyEl: undefined // Used to append to body - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-drop'), - { [this.computedClass('disabledClass', 'o-drop--disabled')]: this.disabled }, - { [this.computedClass('expandedClass', 'o-drop--expanded')]: this.expanded }, - { [this.computedClass('inlineClass', 'o-drop--inline')]: this.inline }, - { [this.computedClass('mobileClass', 'o-drop--mobile')]: this.isMobileModal && this.isMatchMedia && !this.hoverable }, - ] - }, - triggerClasses() { - return [ - this.computedClass('triggerClass', 'o-drop__trigger') - ] - }, - menuMobileOverlayClasses() { - return [ - this.computedClass('menuMobileOverlayClass', 'o-drop__overlay') - ] - }, - menuClasses() { - return [ - this.computedClass('menuClass', 'o-drop__menu'), - { [this.computedClass('menuPositionClass', 'o-drop__menu--', this.position)]: this.position }, - { [this.computedClass('menuActiveClass', 'o-drop__menu--active')]: (this.isActive || this.inline) } - ] - }, - isMobileModal() { - return this.mobileModal && !this.inline - }, - cancelOptions() { - return typeof this.canClose === 'boolean' - ? this.canClose - ? ['escape', 'outside'] - : [] - : this.canClose - }, - menuStyle() { - return { - maxHeight: this.scrollable ? toCssDimension(this.maxHeight) : null, - overflow: this.scrollable ? 'auto' : null - } - }, - hoverable() { - return this.triggers.indexOf('hover') >= 0 - } - }, - watch: { - /** - * When v-model is changed set the new selected item. - */ - value(value) { - this.selected = value - }, - /** - * Emit event when isActive value is changed. - */ - isActive(value) { - this.$emit('active-change', value) - if (this.appendToBody) { - this.$nextTick(() => { - this.updateAppendToBody() - }) - } - } - }, - methods: { - /** - * Click listener from DropdownItem. - * 1. Set new selected item. - * 2. Emit input event to update the user v-model. - * 3. Close the dropdown. - */ - selectItem(value) { - if (this.multiple) { - if (this.selected) { - if (this.selected.indexOf(value) === -1) { - // Add value - this.selected = [...this.selected, value] - } else { - // Remove value - this.selected = this.selected.filter((val) => val !== value) - } - } else { - this.selected = [value] - } - this.$emit('change', this.selected) - } else { - if (this.selected !== value) { - this.selected = value - this.$emit('change', this.selected) - } - } - this.$emit('input', this.selected) - if (!this.multiple) { - this.isActive = !this.closeOnClick - if (this.hoverable && this.closeOnClick) { - this.isHoverable = false - } - } - }, - - /** - * White-listed items to not close when clicked. - */ - isInWhiteList(el) { - if (el === this.$refs.dropdownMenu) return true - if (el === this.$refs.trigger) return true - // All chidren from dropdown - if (this.$refs.dropdownMenu !== undefined) { - const children = this.$refs.dropdownMenu.querySelectorAll('*') - for (const child of children) { - if (el === child) { - return true - } - } - } - // All children from trigger - if (this.$refs.trigger !== undefined) { - const children = this.$refs.trigger.querySelectorAll('*') - for (const child of children) { - if (el === child) { - return true - } - } - } - return false - }, - - /** - * Close dropdown if clicked outside. - */ - clickedOutside(event) { - if (this.cancelOptions.indexOf('outside') < 0) return - if (this.inline) return - - if (!this.isInWhiteList(event.target)) this.isActive = false - }, - - /** - * Keypress event that is bound to the document - */ - keyPress({ key }) { - if (this.isActive && (key === 'Escape' || key === 'Esc')) { - if (this.cancelOptions.indexOf('escape') < 0) return - this.isActive = false - } - }, - - onClick() { - if (this.triggers.indexOf('click') < 0) return - this.toggle() - }, - onContextMenu() { - if (this.triggers.indexOf('contextmenu') < 0) return - this.toggle() - }, - onHover() { - if (this.triggers.indexOf('hover') < 0) return - this.isHoverable = true - }, - onFocus() { - if (this.triggers.indexOf('focus') < 0) return - this.toggle() - }, - - /** - * Toggle dropdown if it's not disabled. - */ - toggle() { - if (this.disabled) return - - if (!this.isActive) { - // if not active, toggle after clickOutside event - // this fixes toggling programmatic - this.$nextTick(() => { - const value = !this.isActive - this.isActive = value - // Vue 2.6.x ??? - setTimeout(() => (this.isActive = value)) - }) - } else { - this.isActive = !this.isActive - } - }, - - updateAppendToBody() { - const dropdownMenu = this.$refs.dropdownMenu - const trigger = this.$refs.trigger - if (dropdownMenu && trigger) { - // update wrapper dropdown - const dropdown = this.$data.bodyEl.children[0] - dropdown.classList.forEach((item) => dropdown.classList.remove(...item.split(' '))) - this.rootClasses.forEach((item) => { - if (item) { - if (typeof item === 'object') { - Object.keys(item).filter(key => key && item[key]).forEach( - key => dropdown.classList.add(key)) - } else { - dropdown.classList.add(...item.split(' ')) - } - } - }) - if (this.appendToBodyCopyParent) { - const parentNode = this.$refs.dropdown.parentNode - const parent = this.$data.bodyEl - parent.classList.forEach((item) => parent.classList.remove(...item.split(' '))) - parentNode.classList.forEach((item) => parent.classList.add(...item.split(' '))) - } - const rect = trigger.getBoundingClientRect() - let top = rect.top + window.scrollY - let left = rect.left + window.scrollX - if (!this.position || this.position.indexOf('bottom') >= 0) { - top += trigger.clientHeight - } else { - top -= dropdownMenu.clientHeight - } - if (this.position && this.position.indexOf('left') >= 0) { - left -= (dropdownMenu.clientWidth - trigger.clientWidth) - } - dropdownMenu.style.position = 'absolute' - dropdownMenu.style.top = `${top}px` - dropdownMenu.style.left = `${left}px` - dropdownMenu.style.zIndex = '9999' - } - } - }, - mounted() { - if (this.appendToBody) { - this.$data.bodyEl = createAbsoluteElement(this.$refs.dropdownMenu) - this.updateAppendToBody() - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('click', this.clickedOutside) - document.addEventListener('keyup', this.keyPress) - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('click', this.clickedOutside) - document.removeEventListener('keyup', this.keyPress) - } - if (this.appendToBody) { - removeElement(this.$data.bodyEl) - } - } -} -</script> diff --git a/packages/oruga/src/components/dropdown/DropdownItem.spec.js b/packages/oruga/src/components/dropdown/DropdownItem.spec.js deleted file mode 100644 index 29753a606..000000000 --- a/packages/oruga/src/components/dropdown/DropdownItem.spec.js +++ /dev/null @@ -1,218 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ODropdown from '@components/dropdown/Dropdown' - -describe('ODropdown', () => { - const val1 = 'val1' - const val2 = 'val2' - let wrapper - - beforeEach(() => { - wrapper = shallowMount(ODropdown, { - slots: { - trigger: '<button class="trigger">trigger</button>' - } - }) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('ODropdown') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage props validator', () => { - const position = wrapper.vm.$options.props.position - - expect(position.type).toBe(String) - expect(position.validator && position.validator('top')).toBeFalsy() - expect(position.validator && position.validator('top-left')).toBeTruthy() - expect(position.validator && position.validator('top-right')).toBeTruthy() - expect(position.validator && position.validator('bottom-left')).toBeTruthy() - }) - - it('react accordingly when changing v-model', async () => { - const value = 'value' - wrapper.setProps({ value }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.selected).toBe(value) - }) - - it('emit activity when it changes', async () => { - wrapper.vm.updateAppendToBody = jest.fn(() => wrapper.vm.updateAppendToBody) - wrapper.setProps({ appendToBody: true }) - - wrapper.vm.isActive = true - await wrapper.vm.$nextTick() - expect(wrapper.emitted()['active-change']).toBeTruthy() - - expect(wrapper.vm.updateAppendToBody).toHaveBeenCalled() - }) - - it('react accordingly on mouse over', () => { - const trigger = wrapper.find({ ref: 'trigger' }) - trigger.trigger('mouseenter') - expect(wrapper.vm.isHoverable).toBeFalsy() - - wrapper.setProps({ triggers: ['hover'] }) - trigger.trigger('mouseenter') - expect(wrapper.vm.isHoverable).toBeTruthy() - }) - - it('react accordingly when new item is selected', () => { - jest.useFakeTimers() - - wrapper.vm.selectItem(val1) - expect(wrapper.emitted().input).toHaveLength(1) - expect(wrapper.emitted().input[0]).toEqual([val1]) - expect(wrapper.emitted().change).toHaveLength(1) - expect(wrapper.emitted().change[0]).toEqual([val1]) - - wrapper.setProps({ - hoverable: true, - closeOnClick: true - }) - - wrapper.vm.selectItem(val2) - expect(wrapper.emitted().input).toHaveLength(2) - expect(wrapper.emitted().input[1]).toEqual([val2]) - expect(wrapper.emitted().change).toHaveLength(2) - expect(wrapper.emitted().change[1]).toEqual([val2]) - - expect(wrapper.vm.isHoverable).toBeFalsy() - }) - - it('react accordingly when same item is selected', () => { - jest.useFakeTimers() - - // will emit only input event - wrapper.setProps({ value: val1 }) - wrapper.vm.selectItem(val1) - expect(wrapper.emitted().input).toHaveLength(1) - expect(wrapper.emitted().input[0]).toEqual([val1]) - }) - - it('react accordingly when an item is selected with multiple prop', () => { - jest.useFakeTimers() - wrapper.setProps({ - multiple: true - }) - wrapper.vm.selected = null - - // no initial value, will return an array with the only selected option - wrapper.vm.selectItem(val1) - expect(wrapper.emitted().input).toHaveLength(1) - expect(wrapper.emitted().input[0]).toEqual([[val1]]) - expect(wrapper.emitted().change).toHaveLength(1) - expect(wrapper.emitted().change[0]).toEqual([[val1]]) - - // will return an array with the new value appended - wrapper.setProps({ value: [val1] }) - wrapper.vm.selectItem(val2) - expect(wrapper.emitted().input).toHaveLength(2) - expect(wrapper.emitted().input[1]).toEqual([[val1, val2]]) - expect(wrapper.emitted().change).toHaveLength(2) - expect(wrapper.emitted().change[1]).toEqual([[val1, val2]]) - - // will remove the last selection since it was part of the list - wrapper.setProps({ value: [val1, val2] }) - wrapper.vm.selectItem(val2) - expect(wrapper.emitted().input).toHaveLength(3) - expect(wrapper.emitted().input[2]).toEqual([[val1]]) - expect(wrapper.emitted().change).toHaveLength(3) - expect(wrapper.emitted().change[2]).toEqual([[val1]]) - }) - - it('manage the whitelisted items accordingly', () => { - let el = wrapper.vm.$refs.dropdownMenu - expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - // el = wrapper.vm.$refs.dropdownMenu.childNodes[0] - // expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - wrapper.vm.$refs.dropdownMenu = undefined - - el = wrapper.vm.$refs.trigger - expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - el = wrapper.vm.$refs.trigger.querySelector('.trigger') - expect(wrapper.vm.isInWhiteList(el)).toBeTruthy() - - wrapper.vm.$refs.trigger = undefined - - el = document.createElement('div') - expect(wrapper.vm.isInWhiteList(el)).toBeFalsy() - }) - - it('manage clicking outside accordingly', () => { - const el = document.createElement('div') - const event = { - target: el - } - - wrapper.vm.isActive = true - wrapper.vm.clickedOutside(event) - expect(wrapper.vm.isActive).toBeFalsy() - - wrapper.vm.isActive = true - wrapper.vm.clickedOutside({ - target: wrapper.vm.$refs.trigger - }) - expect(wrapper.vm.isActive).toBeTruthy() - - wrapper.vm.isActive = true - wrapper.setProps({ inline: true }) - wrapper.vm.clickedOutside(event) - expect(wrapper.vm.isActive).toBeTruthy() - - wrapper.vm.isActive = true - wrapper.setProps({ canClose: false }) - wrapper.vm.clickedOutside(event) - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('close on escape', () => { - wrapper.vm.isActive = true - const event = new KeyboardEvent('keyup', { 'key': 'Escape' }) - wrapper.vm.keyPress({}) - wrapper.vm.keyPress(event) - expect(wrapper.vm.isActive).toBeFalsy() - - wrapper.vm.isActive = true - wrapper.setProps({ canClose: ['click'] }) - wrapper.vm.keyPress(event) - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('manage toggle function accordingly', (done) => { - wrapper.vm.isActive = true - wrapper.setProps({ disabled: true }) - wrapper.vm.toggle() - expect(wrapper.vm.isActive).toBeTruthy() - - wrapper.setProps({ disabled: false }) - wrapper.vm.toggle() - expect(wrapper.vm.isActive).toBeFalsy() - - jest.useFakeTimers() - wrapper.vm.isActive = false - wrapper.vm.toggle() - wrapper.vm.$nextTick(() => { - expect(setTimeout).toHaveBeenCalled() - jest.advanceTimersByTime(1) - expect(wrapper.vm.isActive).toBeTruthy() - done() - }) - }) - - it('reset events before destroy', () => { - document.removeEventListener = jest.fn() - - wrapper.destroy() - - expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function)) - expect(document.removeEventListener).toBeCalledWith('keyup', expect.any(Function)) - }) -}) \ No newline at end of file diff --git a/packages/oruga/src/components/dropdown/DropdownItem.vue b/packages/oruga/src/components/dropdown/DropdownItem.vue deleted file mode 100644 index 8dfafebdd..000000000 --- a/packages/oruga/src/components/dropdown/DropdownItem.vue +++ /dev/null @@ -1,106 +0,0 @@ -<template> - <component - :is="tag" - :class="rootClasses" - @click="selectItem" - :role="ariaRoleItem" - :tabindex="tabindex"> - <slot/> - </component> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' - -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -/** - * @displayName Dropdown Item - */ -export default { - name: 'ODropdownItem', - mixins: [BaseComponentMixin], - configField: 'dropdown', - inject: ["$dropdown"], - props: { - /** - * The value that will be returned on events and v-model - */ - value: { - type: [String, Number, Boolean, Object, Array], - default: null - }, - /** - * Item is disabled - */ - disabled: Boolean, - /** - * Item is clickable and emit an event - */ - clickable: { - type: Boolean, - default: true - }, - /** - * Dropdown item tag name - */ - tag: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'dropdown.itemTag', 'div') - } - }, - tabindex: { - type: [Number, String], - default: 0 - }, - ariaRole: { - type: String, - default: '' - }, - itemClass: [String, Function, Array], - itemActiveClass: [String, Function, Array], - itemDisabledClass: [String, Function, Array], - }, - computed: { - parent() { - return this.$dropdown - }, - rootClasses() { - return [ - this.computedClass('itemClass', 'o-drop__item'), - { [this.computedClass('itemDisabledClass', 'o-drop__item--disabled')]: (this.parent.disabled || this.disabled) }, - { [this.computedClass('itemActiveClass', 'o-drop__item--active')]: this.isActive } - ] - }, - ariaRoleItem() { - return this.ariaRole === 'menuitem' || this.ariaRole === 'listitem' ? this.ariaRole : null - }, - isClickable() { - return !this.parent.disabled && !this.disabled && this.clickable - }, - isActive() { - if (this.parent.selected === null) return false - if (this.parent.multiple) return this.parent.selected.indexOf(this.value) >= 0 - return this.value === this.parent.selected - } - }, - methods: { - /** - * Click listener, select the item. - */ - selectItem() { - if (!this.isClickable) return - - this.parent.selectItem(this.value) - this.$emit('click') - } - }, - created() { - if (!this.parent) { - throw new Error('You should wrap oDropdownItem on a oDropdown') - } - } -} -</script> diff --git a/packages/oruga/src/components/dropdown/Inspector.vue b/packages/oruga/src/components/dropdown/Inspector.vue deleted file mode 100644 index d3552ed0b..000000000 --- a/packages/oruga/src/components/dropdown/Inspector.vue +++ /dev/null @@ -1,148 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-dropdown v-model="currentMenu" v-bind="s" aria-role="list"> - <o-button variant="primary" slot="trigger" slot-scope="{ active }" ref="dropdownbtn"> - <span>Click me!</span> - <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon> - </o-button> - <o-dropdown-item v-bind="s" value="ac1" aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item v-bind="s" value="ac2" aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item v-bind="s" value="ac3" disabled aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - currentMenu: '', - subitem: 'dropdown-item', - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "triggerClass", - description: "Class of the trigger element" - }, - { - class: "menuMobileOverlayClass", - description: "Class of the overlay when on mobile", - warning: "Switch to mobile view to see it in action!", - specificity: "when <b>mobileClass</b> is applied", - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "menuClass", - description: "Class of the dropdown menu", - specificity: "when <b>inlineClass</b> or <b>mobileClass</b> or <b>expandedClass</b> is applied", - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "disabledClass", - description: "Class of dropdown when disabled", - properties: ['disabled'], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "menuActiveClass", - description: "Class of dropdown menu when active", - properties: ['inline'], - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "inlineClass", - description: "Class of dropdown menu when inline", - properties: ['inline'], - action: (cmp) => { - cmp.data.inline = true; - } - }, - { - class: "menuPositionClass", - description: "Class of dropdown menu position", - properties: ['position'], - suffixes: ['top-right', 'top-left', 'bottom-left'], - action: (cmp) => { - cmp.data.position = 'top-right'; - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "mobileClass", - description: "Class of dropdown when on mobile", - warning: "Switch to mobile view to see it in action!", - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "expandedClass", - description: "Class of dropdown when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "itemClass", - description: "Class of the dropdown item", - subitem: true, - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "itemActiveClass", - description: "Class of the dropdown item when active", - subitem: true, - action: () => { - setTimeout(() => { - this.currentMenu = 'ac1' - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - { - class: "itemDisabledClass", - subitem: true, - description: "Class of the dropdown item when disabled", - properties: ['disabled'], - action: () => { - setTimeout(() => { - this.$refs.dropdownbtn.$el.click() - }, 300); - } - }, - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/dropdown/__snapshots__/Dropdown.spec.js.snap b/packages/oruga/src/components/dropdown/__snapshots__/Dropdown.spec.js.snap deleted file mode 100644 index 569464d85..000000000 --- a/packages/oruga/src/components/dropdown/__snapshots__/Dropdown.spec.js.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ODropdown render correctly 1`] = ` -<div class="o-drop"> - <div tabindex="0" aria-haspopup="true" class="o-drop__trigger"><button class="trigger">trigger</button></div> - <transition-stub name="fade"> - <div aria-hidden="true" class="o-drop__overlay" style="display: none;"></div> - </transition-stub> - <transition-stub name="fade"> - <div aria-hidden="true" aria-modal="true" class="o-drop__menu" style="display: none;"></div> - </transition-stub> -</div> -`; diff --git a/packages/oruga/src/components/dropdown/__snapshots__/DropdownItem.spec.js.snap b/packages/oruga/src/components/dropdown/__snapshots__/DropdownItem.spec.js.snap deleted file mode 100644 index 569464d85..000000000 --- a/packages/oruga/src/components/dropdown/__snapshots__/DropdownItem.spec.js.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ODropdown render correctly 1`] = ` -<div class="o-drop"> - <div tabindex="0" aria-haspopup="true" class="o-drop__trigger"><button class="trigger">trigger</button></div> - <transition-stub name="fade"> - <div aria-hidden="true" class="o-drop__overlay" style="display: none;"></div> - </transition-stub> - <transition-stub name="fade"> - <div aria-hidden="true" aria-modal="true" class="o-drop__menu" style="display: none;"></div> - </transition-stub> -</div> -`; diff --git a/packages/oruga/src/components/dropdown/examples/Dropdown.md b/packages/oruga/src/components/dropdown/examples/Dropdown.md deleted file mode 100644 index 3a795e1df..000000000 --- a/packages/oruga/src/components/dropdown/examples/Dropdown.md +++ /dev/null @@ -1,210 +0,0 @@ - -## Examples - -### Base - -::: demo -```html -<template> - <section> - - <o-dropdown aria-role="list"> - <o-button variant="primary" slot="trigger" slot-scope="{ active }"> - <span>Click me!</span> - <o-icon :icon="active ? 'caret-up' : 'caret-down'"></o-icon> - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown :triggers="['hover']" aria-role="list"> - <o-button variant="info" slot="trigger"> - <span>Hover me!</span> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown disabled aria-role="list"> - <o-button slot="trigger"> - <span>Disabled</span> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown aria-role="list"> - <div slot="trigger"> - Custom - <o-icon - variant="success" - icon="caret-down" - slot="trigger" - role="button"> - </o-icon> - </div> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - - <o-dropdown :triggers="['contextmenu']" aria-role="list"> - <o-button - slot="trigger" - role="button"> - Right click - </o-button> - - <o-dropdown-item aria-role="listitem">Action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Another action</o-dropdown-item> - <o-dropdown-item aria-role="listitem">Something else</o-dropdown-item> - </o-dropdown> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Multiple - -::: demo -```html -<template> - <section> - <p class="content"><b>selected</b>: {{ selectedOptions }}</p> - <o-dropdown - v-model="selectedOptions" - multiple - aria-role="list"> - <o-button variant="primary" type="button" slot="trigger"> - <span>Selected ({{ selectedOptions.length }})</span> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item value="option1" aria-role="listitem"> - <span>Option 1</span> - </o-dropdown-item> - - <o-dropdown-item value="option2" aria-role="listitem"> - <span>Option 2</span> - </o-dropdown-item> - - <o-dropdown-item value="option3" aria-role="listitem"> - <span>Option 3</span> - </o-dropdown-item> - </o-dropdown> - </section> -</template> - -<script> - export default { - data() { - return { - selectedOptions: [] - } - } - } -</script> -``` -::: - -### Scrollable - -::: demo -```html -<template> - <section> - <div class="block"> - <o-field> - <o-switch v-model="isScrollable">Scrollable</o-switch> - </o-field> - </div> - - <br> - - <o-dropdown - :scrollable="isScrollable" - :max-height="maxHeight" - v-model="currentMenu" - aria-role="list" - > - <o-button variant="primary" type="button" slot="trigger"> - <template> - <o-icon :icon="currentMenu.icon"></o-icon> - <span>{{currentMenu.text}}</span> - </template> - <o-icon icon="caret-down"></o-icon> - </o-button> - - <o-dropdown-item - v-for="(menu, index) in menus" - :key="index" - :value="menu" aria-role="listitem"> - <div class="media"> - <o-icon class="media-left" :icon="menu.icon"></o-icon> - <div class="media-content"> - <span>{{menu.text}}</span> - </div> - </div> - </o-dropdown-item> - </o-dropdown> - </section> -</template> - -<script> - export default { - data() { - return { - isScrollable: true, - maxHeight: 200, - currentMenu: { icon: 'users', text: 'People' }, - menus: [ - { icon: 'users', text: 'People' }, - { icon: 'box', text: 'Orders' }, - { icon: 'credit-card', text: 'Payments' }, - { icon: 'dolly', text: 'Logistics' }, - { icon: 'business-time', text: 'Jobs' }, - { icon: 'shopping-cart', text: 'Cart' }, - { icon: 'cog', text: 'Configuration' } - ] - } - } - } -</script> - -<style> - .media { - align-items: flex-start; - display: flex; - text-align: left; - } - .media-content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: left; - overflow-y: hidden; - overflow-x: auto; - } - .media-left { - margin-right: 1rem; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - } -</style> -``` -::: diff --git a/packages/oruga/src/components/dropdown/index.js b/packages/oruga/src/components/dropdown/index.js deleted file mode 100644 index 2505fa224..000000000 --- a/packages/oruga/src/components/dropdown/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import Dropdown from './Dropdown' -import DropdownItem from './DropdownItem' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Dropdown) - registerComponent(Vue, DropdownItem) - } -} - -use(Plugin) - -export default Plugin - -export { - Dropdown as ODropdown, - DropdownItem as ODropdownItem -} diff --git a/packages/oruga/src/components/field/Field.spec.js b/packages/oruga/src/components/field/Field.spec.js deleted file mode 100644 index e944c653e..000000000 --- a/packages/oruga/src/components/field/Field.spec.js +++ /dev/null @@ -1,110 +0,0 @@ -import { shallowMount, mount, createLocalVue } from '@vue/test-utils' -import OField from '@components/field/Field' -import OFieldBody from '@components/field/FieldBody' -import OInput from '@components/input/Input' - -const localVue = createLocalVue() -localVue.component('o-field', OField) -localVue.component('o-field__body', OFieldBody) -localVue.component('o-input', OInput) - -describe('OField', () => { - it('is called', () => { - const wrapper = shallowMount(OField) - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - const wrapper = shallowMount(OField) - expect(wrapper.html()).toMatchSnapshot() - }) - - it('sets input class with type value when prop "variant" is changed dynamically', async () => { - const variant = { danger: true } - const wrapper = mount(OField, { - localVue, - slots: { default: [OInput] } - }) - wrapper.setProps({ variant }) - await wrapper.vm.$nextTick() - expect(wrapper.find('.o-ctrl-input').find('.o-icon').classes()).toContain('o-icon--danger') - }) - - describe('Passing a message prop', () => { - const generateMountOptions = ({message}) => { - return { - propsData: {message}, - localVue, - slots: { - default: [OInput, '<button class="button">Button</button>'] - } - } - } - - it('adds a help <p> element in the root div.field when "message" prop is passed', () => { - const message = 'Some string message' - const mountOptions = generateMountOptions({message}) - const wrapper = shallowMount(OField, mountOptions) - expect(wrapper.find('.o-field').find('p.o-field__message').text()).toEqual(message) - }) - - it('changes the <p> element content in the root div.field when "message" prop is changed dynamically', async () => { - const message = 'Some string message' - const mountOptions = generateMountOptions({ message: 'initial message' }) - const wrapper = shallowMount(OField, mountOptions) - wrapper.setProps({ message }) - await wrapper.vm.$nextTick() - expect(wrapper.find('.o-field').find('p.o-field__message').text()).toEqual(message) - }) - }) - - describe('managing groups', () => { - const mountOptions = { - propsData: { - grouped: true - }, - localVue, - slots: { - default: [OInput, '<button class="button">Button</button>'] - } - } - - it('contains "o-field--grouped" when prop "grouped" is set', () => { - const {propsData} = mountOptions - const wrapper = mount(OField, { - ...mountOptions, - propsData: { - ...propsData, - grouped: true - } - }) - const innerField = wrapper.find('.o-field__body').find('.o-field') - expect(innerField.classes()).toContain('o-field--grouped') - }) - - it('contains "o-field--grouped-multiline" when prop "groupMultiline" is set', () => { - const {propsData} = mountOptions - const wrapper = mount(OField, { - ...mountOptions, - propsData: { - ...propsData, - groupMultiline: true - } - }) - const innerField = wrapper.find('.o-field__body').find('.o-field') - expect(innerField.classes()).toContain('o-field--grouped-multiline') - }) - - it('adds a label element under the root div.field when "label" prop is passed', () => { - const {propsData} = mountOptions - const wrapper = shallowMount(OField, { - ...mountOptions, - propsData: { - ...propsData, - label: 'Some label' - } - }) - expect(wrapper.find('.o-field').find('label').isVisible()).toBe(true) - }) - }) -}) diff --git a/packages/oruga/src/components/field/Field.vue b/packages/oruga/src/components/field/Field.vue deleted file mode 100644 index 3ffbb865f..000000000 --- a/packages/oruga/src/components/field/Field.vue +++ /dev/null @@ -1,242 +0,0 @@ -<template> - <div :class="rootClasses"> - <div - v-if="horizontal" - :class="labelHorizontalClasses"> - <label - v-if="hasLabel" - :for="labelFor" - :class="labelClasses"> - <slot v-if="hasLabelSlot" name="label"/> - <template v-else>{{ label }}</template> - </label> - </div> - <template v-else> - <label - v-if="hasLabel" - :for="labelFor" - :class="labelClasses"> - <slot v-if="hasLabelSlot" name="label"/> - <template v-else>{{ label }}</template> - </label> - </template> - <o-field-body v-if="horizontal"> - <slot/> - </o-field-body> - <div v-else-if="hasInnerField" :class="bodyClasses"> - <div :class="innerFieldClasses"> - <slot/> - </div> - </div> - <template v-else> - <slot /> - </template> - <p - v-if="hasMessage && !horizontal" - :class="messageClasses" - > - <slot v-if="hasMessageSlot" name="message"/> - <template v-else>{{ newMessage }}</template> - </p> - </div> -</template> - -<script> -import FieldBody from './FieldBody' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -/** - * Fields are used to add functionality to controls and to attach/group components and elements together - * @displayName Field - * @example ./examples/Field.md - * @style _field.scss - */ -export default { - name: 'OField', - components: { - [FieldBody.name]: FieldBody - }, - configField: 'field', - mixins: [BaseComponentMixin, MatchMediaMixin], - provide() { - return { - $field: this - } - }, - inject: { - $field: { name: '$field', default: false } - }, - props: { - /** - * Color of the field and help message, also adds a matching icon, optional. Used by Input, Select and Autocomplete - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** - * Field label - */ - label: String, - /** - * Same as native for set on the label - */ - labelFor: String, - /** - * Help message text - */ - message: String, - /** - * Direct child components/elements of Field will be grouped horizontally (see which ones at the top of the page) - */ - grouped: Boolean, - /** - * Allow controls to fill up multiple lines, making it responsive - */ - groupMultiline: Boolean, - /** - * Group label and control on the same line for horizontal forms - */ - horizontal: Boolean, - /** - * Field automatically attach controls together - */ - addons: { - type: Boolean, - default: true - }, - /** - * Vertical size of input, optional - * @values small, medium, large - */ - labelSize: String, - rootClass: [String, Function, Array], - horizontalClass: [String, Function, Array], - groupedClass: [String, Function, Array], - groupMultilineClass: [String, Function, Array], - labelClass: [String, Function, Array], - labelSizeClass: [String, Function, Array], - labelHorizontalClass: [String, Function, Array], - bodyClass: [String, Function, Array], - bodyHorizontalClass: [String, Function, Array], - addonsClass: [String, Function, Array], - messageClass: [String, Function, Array], - variantMessageClass: [String, Function, Array], - variantLabelClass: [String, Function, Array], - mobileClass: [String, Function, Array], - focusedClass: [String, Function, Array], - filledClass: [String, Function, Array] - }, - data() { - return { - newVariant: this.variant, - newMessage: this.message, - isFocused: false, - isFilled: false - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-field'), - { [this.computedClass('horizontalClass', 'o-field--horizontal')]: this.horizontal }, - { [this.computedClass('mobileClass', 'o-field--mobile')]: this.isMatchMedia }, - { [this.computedClass('focusedClass', 'o-field--focused')]: this.isFocused }, - { [this.computedClass('filledClass', 'o-field--filled')]: this.isFilled } - ] - }, - messageClasses() { - return [ - this.computedClass('messageClass', 'o-field__message'), - { [this.computedClass('variantMessageClass', 'o-field__message-', this.newVariant)]: this.newVariant } - ] - }, - labelClasses() { - return [ - this.computedClass('labelClass', 'o-field__label'), - { [this.computedClass('labelSizeClass', 'o-field__label-', this.labelSize)]: this.labelSize }, - { [this.computedClass('variantLabelClass', 'o-field__label-', this.newVariant)]: this.newVariant } - ] - }, - labelHorizontalClasses() { - return [ - this.computedClass('labelHorizontalClass', 'o-field__horizontal-label') - ] - }, - bodyClasses() { - return [ - this.computedClass('bodyClass', 'o-field__body') - ] - }, - bodyHorizontalClasses() { - return [ - this.computedClass('bodyHorizontalClass', 'o-field__horizontal-body') - ] - }, - innerFieldClasses() { - return [ - this.computedClass('rootClass', 'o-field'), - { [this.computedClass('groupMultilineClass', 'o-field--grouped-multiline')]: this.groupMultiline }, - { [this.computedClass('groupedClass', 'o-field--grouped')]: this.grouped }, - { [this.computedClass('addonsClass', 'o-field--addons')]: !this.grouped && this.hasAddons() }, - ] - }, - parent() { - return this.$field - }, - hasLabelSlot() { - return this.$slots.label - }, - hasMessageSlot() { - return this.$slots.message - }, - hasLabel() { - return this.label || this.hasLabelSlot - }, - hasMessage() { - return ((!this.parent || !this.parent.hasInnerField) && this.newMessage) || this.hasMessageSlot - }, - hasInnerField() { - return this.grouped || this.groupMultiline || this.hasAddons() - } - }, - watch: { - /** - * Set internal variant when prop change. - */ - variant(value) { - this.newVariant = value - }, - - /** - * Set internal message when prop change. - */ - message(value) { - this.newMessage = value - }, - - /** - * Set parent message if we use Field in Field. - */ - newMessage(value) { - if (this.parent && this.parent.hasInnerField) { - if (!this.parent.variant) { - this.parent.newVariant = this.newVariant - } - if (!this.parent.message) { - this.parent.newMessage = value - } - } - } - }, - methods: { - hasAddons() { - let renderedNode = 0 - if (this.$slots.default) { - renderedNode = this.$slots.default.reduce((i, node) => node.tag ? i + 1 : i, 0) - } - return (renderedNode > 1 && this.addons && !this.horizontal) - } - } -} -</script> diff --git a/packages/oruga/src/components/field/FieldBody.spec.js b/packages/oruga/src/components/field/FieldBody.spec.js deleted file mode 100644 index 1752ff1e3..000000000 --- a/packages/oruga/src/components/field/FieldBody.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -import { shallowMount, createLocalVue } from '@vue/test-utils' -import OFieldBody from '@components/field/FieldBody' -import OField from '@components/field/Field' - -const localVue = createLocalVue() -localVue.component('o-field', OField) - -describe('OFieldBody', () => { - it('is called', () => { - const wrapper = shallowMount(OFieldBody, { - slots: { - default: 'content' - } - }) - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - const wrapper = shallowMount(OFieldBody, { - slots: { - default: 'content' - } - }) - expect(wrapper.html()).toMatchSnapshot() - }) - - it('should render the text when the child is a text', () => { - const text = 'text' - const wrapper = shallowMount(OFieldBody, { - slots: { - default: text - } - }) - expect(wrapper.text()).toBe(text) - }) -}) diff --git a/packages/oruga/src/components/field/FieldBody.vue b/packages/oruga/src/components/field/FieldBody.vue deleted file mode 100644 index 021fbaaee..000000000 --- a/packages/oruga/src/components/field/FieldBody.vue +++ /dev/null @@ -1,34 +0,0 @@ -<script> -export default { - name: 'OFieldBody', - inject: { - $field: { name: '$field', default: false } - }, - configField: 'field', - computed: { - parent() { - return this.$field - } - }, - render(h) { - let first = true - return h( - 'div', - { attrs: { 'class': this.parent.bodyHorizontalClasses } }, - this.$slots.default.map((element) => { - // skip returns and comments - if (!element.tag) { - return element - } - let message - if (first) { - message = this.parent.newMessage - first = false - } - return h('o-field', - { attrs: { variant: this.parent.newVariant, message } }, [element]) - }) - ) - } -} -</script> diff --git a/packages/oruga/src/components/field/Inspector.vue b/packages/oruga/src/components/field/Inspector.vue deleted file mode 100644 index dc0da6a36..000000000 --- a/packages/oruga/src/components/field/Inspector.vue +++ /dev/null @@ -1,145 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field v-bind="s" label="Field"> - <o-input v-model="name" name="name" placeholder="Name" expanded></o-input> - <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - name: '', - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "mobileClass", - description: "Class of file component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "horizontalClass", - description: "Class to align label and control in horizontal forms", - properties: ['horizontal'], - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.horizontal = true; - } - }, - { - class: "groupedClass", - description: "Class when fields are grouped together", - properties: ['grouped'], - action: (cmp) => { - cmp.data.grouped = true; - } - }, - { - class: "groupMultilineClass", - description: "Class when fields fill up multiple lines", - properties: ['groupMultiline'], - action: (cmp) => { - cmp.data.groupMultiline = true; - } - }, - { - class: "labelClass", - description: "Class for field label" - }, - { - class: "labelSizeClass", - description: "Class for field label size", - properties: ['labelSize'], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.labelSize = "large"; - } - }, - { - class: "labelHorizontalClass", - description: "Class for field label when horizontal", - properties: ['horizontal'], - specificity: "when <b>mobileClass</b> is applied", - action: (cmp) => { - cmp.data.horizontal = true; - } - }, - { - class: "bodyClass", - description: "Class for field body" - }, - { - class: "bodyHorizontalClass", - description: "Class for field body when horizontal", - specificity: "when <b>mobileClass</b> is applied", - properties: ['horizontal'], - action: (cmp) => { - cmp.data.horizontal = true; - } - }, - { - class: "addonsClass", - description: "Class for components automatically attached together when inside a field", - warning: "Use the <code>expanded</code> prop on the control to fill up the remaining space", - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "messageClass", - description: "Class for the field message", - properties: ["message"], - action: (cmp) => { - cmp.data.message = 'This is a message for the field'; - } - }, - { - class: "variantMessageClass", - description: "Class of the message field variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = "info"; - cmp.data.message = 'This is a message for the field'; - } - }, - { - class: "variantLabelClass", - description: "Class of the label field variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = "info"; - } - }, - { - class: "focusedClass", - description: "Class for the focused field", - warning: "focus event emitted by form elements", - action: (cmp) => { - cmp.$el.focus() - } - }, - { - class: "filledClass", - description: "Class for the filled field", - warning: "when it contains a input", - action: () => { - this.name = 'Oruga' - } - }, - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/field/__snapshots__/Field.spec.js.snap b/packages/oruga/src/components/field/__snapshots__/Field.spec.js.snap deleted file mode 100644 index 8ed2b6418..000000000 --- a/packages/oruga/src/components/field/__snapshots__/Field.spec.js.snap +++ /dev/null @@ -1,8 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OField render correctly 1`] = ` -<div class="o-field"> - <!----> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/field/__snapshots__/FieldBody.spec.js.snap b/packages/oruga/src/components/field/__snapshots__/FieldBody.spec.js.snap deleted file mode 100644 index a809b6c5e..000000000 --- a/packages/oruga/src/components/field/__snapshots__/FieldBody.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OFieldBody render correctly 1`] = `<div>content</div>`; diff --git a/packages/oruga/src/components/field/examples/Field.md b/packages/oruga/src/components/field/examples/Field.md deleted file mode 100644 index 7af29bd14..000000000 --- a/packages/oruga/src/components/field/examples/Field.md +++ /dev/null @@ -1,256 +0,0 @@ - -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field label="Name"> - <o-input value="Kevin Garvey"></o-input> - </o-field> - - <o-field label="Email" - variant="danger" - message="This email is invalid"> - <o-input type="email" - value="john@" - maxlength="30"> - </o-input> - </o-field> - - <o-field label="Username" - variant="success" - message="This username is available"> - <o-input value="johnsilver" maxlength="30"></o-input> - </o-field> - - <o-field label="Password" - variant="warning"> - <o-input value="123" type="password" maxlength="30"></o-input> - </o-field> - - <o-field label="Subject"> - <o-select placeholder="Select a subject"> - <option value="1">Option 1</option> - <option value="2">Option 2</option> - </o-select> - </o-field> - - <o-field label="Wrong subject" - variant="danger" - message="Selected subject is wrong"> - <o-select placeholder="Select a subject"> - <option value="1">Option 1</option> - <option value="2">Option 2</option> - </o-select> - </o-field> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Addons - -::: demo -```html -<template> - <section> - <o-field variant="danger"> - <o-input placeholder="Search..." - type="search" - icon="search"> - </o-input> - <o-button variant="primary">Search</o-button> - </o-field> - - <o-field> - <o-input placeholder="This is expanded" expanded></o-input> - <o-button>@gmail.com</o-button> - </o-field> - - <hr> - - <o-field> - <o-select placeholder="Currency"> - <option>$</option> - <option>ยฃ</option> - <option>โฌ</option> - </o-select> - <o-input type="number" placeholder="0,00"></o-input> - <o-button variant="success">Transfer</o-button> - </o-field> - - <o-field> - <o-button icon-left="bold"></o-button> - <o-button icon-left="italic"></o-button> - <o-button icon-left="underline"></o-button> - <o-button icon-left="align-left"></o-button> - <o-button icon-left="align-center"></o-button> - <o-button icon-left="align-right"></o-button> - - <o-input placeholder="Search..." type="search" icon="search"></o-input> - </o-field> - - <o-field> - <o-button variant="primary"> - Button - </o-button> - <o-dropdown> - <o-button - variant="primary" - icon-right="caret-down" - slot="trigger"> - </o-button> - - <o-dropdown-item>Action</o-dropdown-item> - <o-dropdown-item>Another action</o-dropdown-item> - <o-dropdown-item>Something else</o-dropdown-item> - </o-dropdown> - </o-field> - - <o-field> - <o-dropdown> - <o-button icon-right="caret-down" slot="trigger"> - Filters - </o-button> - - <o-dropdown-item value="open_issues">Open Issues and Pull Requests</o-dropdown-item> - <o-dropdown-item value="your_issues">Your Issues</o-dropdown-item> - <o-dropdown-item value="pull_requests">Your Pull Requests</o-dropdown-item> - <o-dropdown-item value="everything">Everything</o-dropdown-item> - </o-dropdown> - <o-input icon="search" type="search" placeholder="Search..."></o-input> - </o-field> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Grouped - -::: demo -```html -<template> - <section> - - <o-field grouped variant="danger" message="What do you want to search?"> - <o-input placeholder="Search..."></o-input> - <o-button variant="primary">Search</o-button> - </o-field> - - <o-field grouped message="What do you want to search?"> - <o-input placeholder="Search..." expanded></o-input> - <o-button variant="primary">Search</o-button> - </o-field> - - <o-field grouped group-multiline> - <o-input></o-input> - <o-button>First</o-button> - <o-button>Second</o-button> - <o-button>Third</o-button> - <o-button>Fourth</o-button> - <o-button>Fifth</o-button> - <o-button>Sixth</o-button> - <o-button>Seventh</o-button> - <o-button>Eighth</o-button> - </o-field> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - - -### Horizontal - -::: demo -```html -<template> - <section> - <o-field horizontal label="Subject" variant="danger" message="Please enter a subject"> - <o-input name="subject" expanded></o-input> - </o-field> - - <o-field horizontal label="From"> - <o-input name="name" placeholder="Name" expanded></o-input> - <o-input name="email" type="email" placeholder="nobody@nowhere.com" expanded></o-input> - </o-field> - - <o-field horizontal label="Topic"> - <o-select placeholder="Select a topic"> - <option value="1">Oruga</option> - <option value="2">Vue.js</option> - <option value="3">UI</option> - </o-select> - </o-field> - - <o-field horizontal label="Message"> - <o-input type="textarea"></o-input> - </o-field> - - <o-field horizontal><!-- Label left empty for spacing --> - <o-button variant="primary"> - Send message - </o-button> - </o-field> - - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Slots - -::: demo -```html -<template> - <section> - <o-field horizontal> - <template slot="label"> - With tooltip - <o-tooltip label="Help text here for explanation"> - <o-icon size="small" icon="question-circle"></o-icon> - </o-tooltip> - </template> - <o-input size="medium"></o-input> - </o-field> - - <o-field> - <template slot="label"> - Label with custom <i>style</i> - </template> - <o-input></o-input> - <template slot="message"> - Message with custom <b>style</b> - </template> - </o-field> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: diff --git a/packages/oruga/src/components/field/index.js b/packages/oruga/src/components/field/index.js deleted file mode 100644 index 0a81b9bb1..000000000 --- a/packages/oruga/src/components/field/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Field from './Field' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Field) - } -} - -use(Plugin) - -export default Plugin - -export { - Field as OField -} diff --git a/packages/oruga/src/components/icon/Icon.spec.js b/packages/oruga/src/components/icon/Icon.spec.js deleted file mode 100644 index f50589ceb..000000000 --- a/packages/oruga/src/components/icon/Icon.spec.js +++ /dev/null @@ -1,92 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OIcon from '@components/icon/Icon' - -describe('OIcon', () => { - it('render correctly', () => { - const wrapper = shallowMount(OIcon) - - expect(wrapper.html()).toMatchSnapshot() - }) - - it('is vue instance', () => { - const wrapper = shallowMount(OIcon) - - expect(wrapper.exists()).toBeTruthy() - }) - - it('render icon when icon property is passed', () => { - const wrapper = shallowMount(OIcon, { - propsData: { icon: 'eye' } - }) - - expect(wrapper.classes()).toContain('o-icon') - expect(wrapper.find('i').classes()).toContain('mdi', 'mdi-eye', 'mdi-24px') - }) - - it('returns correct color for newVariant when type is passed as an object', () => { - const wrapper = shallowMount(OIcon, { - propsData: { - icon: 'eye', - variant: {'primary': true} - } - }) - - expect(wrapper.classes()).toContain('o-icon--primary') - expect(wrapper.vm.newVariant).toEqual('primary') - }) - - it('render icon package correctly when the pack property is is passed.', () => { - const wrapper = shallowMount(OIcon, { - propsData: { - icon: 'eye', - pack: 'fa' - } - }) - - expect(wrapper.find('i').classes()).toContain('fa-eye') - }) - - it('display size when size propery is passed', async () => { - const wrapper = shallowMount(OIcon, { - propsData: { - icon: 'eye' - } - }) - expect(wrapper.find('i').classes()).toContain('mdi-24px') - - wrapper.setProps({ size: 'small' }) - await wrapper.vm.$nextTick() - expect(wrapper.find('i').classes()).toContainEqual('mdi', 'mdi-eye') - - wrapper.setProps({ size: 'medium' }) - await wrapper.vm.$nextTick() - expect(wrapper.find('i').classes()).toContain('mdi-36px') - - wrapper.setProps({ size: 'large' }) - await wrapper.vm.$nextTick() - expect(wrapper.find('i').classes()).toContain('mdi-48px') - }) - - it('overrides icon font size when customSize property is passed', () => { - const wrapper = shallowMount(OIcon, { - propsData: { - icon: 'eye', - pack: 'fa', - customSize: 'fa-2x' - } - }) - - expect(wrapper.find('i').classes()).toContainEqual('fa', 'fa-2x') - }) - - it('render custom classes when customClass property is passed', () => { - const wrapper = shallowMount(OIcon, { - propsData: { - icon: 'eye', - customClass: 'foo-bar' - } - }) - - expect(wrapper.find('i').classes()).toContain('foo-bar') - }) -}) diff --git a/packages/oruga/src/components/icon/Icon.vue b/packages/oruga/src/components/icon/Icon.vue deleted file mode 100644 index 3fdbdc43e..000000000 --- a/packages/oruga/src/components/icon/Icon.vue +++ /dev/null @@ -1,168 +0,0 @@ -<template> - <span - :class="rootClasses" - :style="rootStyle"> - <i - v-if="!useIconComponent" - :class="[newPack, newIcon, newCustomSize, customClass]"/> - <!-- custom icon component --> - <component - v-else - :is="useIconComponent" - :icon="[newPack, newIcon]" - :size="newCustomSize" - :class="[customClass]" /> - </span> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { getOptions } from '../../utils/config' -import getIcons from '../../utils/icons' -import { getValueByPath } from '../../utils/helpers' - -/** - * Icons take an important role of any application - * @displayName Icon - * @example ./examples/Icon.md - * @style _icon.scss - */ -export default { - name: 'OIcon', - mixins: [BaseComponentMixin], - configField: 'icon', - props: { - /** - * Color of the icon, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: [String, Object], - /** - * Icon component name - */ - component: String, - /** - * Icon pack to use - * @values mdi, fa, fas and any other custom icon pack - */ - pack: String, - /** - * Icon name - */ - icon: String, - /** - * Icon size, optional - * @values small, medium, large - */ - size: String, - /** - * Overrides icon font size, optional - * @values Depends on library: null (smallest), fa-lg, fa-2x, fa-3x, fa-4x, fa-5x, mdi-18px, mdi-24px, mdi-36px, mdi-48px - */ - customSize: String, - /** - * Add class to icon font, optional. See here for MDI, here for FontAwesome 4 and here for FontAwesome 5 custom classes - */ - customClass: String, - /** - * When true makes icon clickable - */ - clickable: Boolean, - /** Enable spin effect on icon */ - spin: Boolean, - /** Rotation 0-360 */ - rotation: [Number, String], - /** @ignore */ - both: Boolean, // This is used internally - rootClass: [String, Function, Array], - clickableClass: [String, Function, Array], - spinClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array] - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-icon'), - { [this.computedClass('clickableClass', 'o-icon--clickable')]: this.clickable }, - { [this.computedClass('spinClass', 'o-icon--spin')]: this.spin }, - { [this.computedClass('sizeClass', 'o-icon--', this.size)]: this.size }, - { [this.computedClass('variantClass', 'o-icon--', this.newVariant)]: this.newVariant } - ] - }, - rootStyle() { - const style = {} - if (this.rotation) { - style['transform'] = `rotate(${this.rotation}deg)` - } - return style - }, - iconConfig() { - return getIcons()[this.newPack] - }, - iconPrefix() { - if (this.iconConfig && this.iconConfig.iconPrefix) { - return this.iconConfig.iconPrefix - } - return '' - }, - /** - * Internal icon name based on the pack. - * If pack is 'fa', gets the equivalent FA icon name of the MDI, - * internal icons are always MDI. - */ - newIcon() { - return `${this.iconPrefix}${this.getEquivalentIconOf(this.icon)}` - }, - newPack() { - return this.pack || getValueByPath(getOptions(), 'iconPack', 'mdi') - }, - newVariant() { - if (!this.variant) return - let newVariant = '' - if (typeof this.variant === 'string') { - newVariant = this.variant - } else { - newVariant = Object.keys(this.variant).filter(key => this.variant[key])[0] - } - return newVariant - }, - newCustomSize() { - return this.customSize || this.customSizeByPack - }, - customSizeByPack() { - if (this.iconConfig && this.iconConfig.sizes) { - if (this.size && this.iconConfig.sizes[this.size] !== undefined) { - return this.iconConfig.sizes[this.size] - } else if (this.iconConfig.sizes.default) { - return this.iconConfig.sizes.default - } - } - return null - }, - useIconComponent() { - if (this.component) return this.component - const component = getValueByPath(getOptions(), 'iconComponent') - if (component) return component - return null; - } - }, - methods: { - /** - * Equivalent icon name of the MDI. - */ - getEquivalentIconOf(value) { - // Only transform the class if the both prop is set to true - if (!this.both) { - return value - } - if (this.iconConfig && - this.iconConfig.internalIcons && - this.iconConfig.internalIcons[value]) { - return this.iconConfig.internalIcons[value] - } - return value - } - } -} -</script> diff --git a/packages/oruga/src/components/icon/Inspector.vue b/packages/oruga/src/components/icon/Inspector.vue deleted file mode 100644 index ef9d37672..000000000 --- a/packages/oruga/src/components/icon/Inspector.vue +++ /dev/null @@ -1,59 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-icon v-bind="s" pack="fas" icon="home"></o-icon> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "clickableClass", - description: "Class of the icon when clickable", - properties: ['clickable'], - action: (cmp) => { - cmp.data.clickable = true; - } - }, - { - class: "spinClass", - description: "Class of the element when spin", - properties: ['spin'], - action: (cmp) => { - cmp.data.spin = true; - } - }, - { - class: "sizeClass", - description : 'Class of the icon size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = "large"; - } - }, - { - class: "variantClass", - description : 'Class of the icon variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = "warning"; - } - }, - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/icon/__snapshots__/Icon.spec.js.snap b/packages/oruga/src/components/icon/__snapshots__/Icon.spec.js.snap deleted file mode 100644 index 9e52122ea..000000000 --- a/packages/oruga/src/components/icon/__snapshots__/Icon.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OIcon render correctly 1`] = `<span class="o-icon"><i class="mdi mdi-undefined mdi-24px"></i></span>`; diff --git a/packages/oruga/src/components/icon/examples/Icon.md b/packages/oruga/src/components/icon/examples/Icon.md deleted file mode 100644 index b5eb818e5..000000000 --- a/packages/oruga/src/components/icon/examples/Icon.md +++ /dev/null @@ -1,334 +0,0 @@ - -## Examples - -Oruga is compatible with both <a href="https://materialdesignicons.com/" target="_blank">Material Design Icons</a> -and <a href="https://fontawesome.com/" target="_blank">FontAwesome 5</a> but you can also add your own custom icon pack.<br> - -### Base - -::: demo -```html -<template> - <section> - <div class="block"> - <o-icon - pack="fas" - icon="user" - size="small"> - </o-icon> - <o-icon - pack="fas" - icon="home" - size="small"> - </o-icon> - <o-icon - pack="fas" - icon="tachometer-alt" - size="small"> - </o-icon> - </div> - - <div class="block"> - <o-icon - pack="fas" - icon="user"> - </o-icon> - <o-icon - pack="fas" - icon="home"> - </o-icon> - <o-icon - pack="fas" - icon="tachometer-alt"> - </o-icon> - </div> - - <div class="block"> - <o-icon - pack="fas" - icon="user" - size="medium"> - </o-icon> - <o-icon - pack="fas" - icon="home" - size="medium"> - </o-icon> - <o-icon - pack="fas" - icon="tachometer-alt" - size="medium"> - </o-icon> - </div> - - <div class="block"> - <o-icon - pack="fas" - icon="user" - size="large" - variant="success"> - </o-icon> - <o-icon - pack="fas" - icon="home" - size="large" - variant="info"> - </o-icon> - <o-icon - pack="fas" - icon="tachometer-alt" - size="large" - variant="primary"> - </o-icon> - </div> - - <o-button variant="success"> - <o-icon pack="fas" icon="check"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon pack="fas" icon="check"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon - pack="fas" - icon="sync-alt" - spin> - </o-icon> - <span>Refresh</span> - </o-button> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Custom icon pack - -<p> - You can also add it during Oruga import as default config. -</p> - -::: tip -Take a look at below example code (click on "Show code") to know all internal icons to replace with the releated icons of your custom icon pack -::: - -::: demo -```html -<template> - <section> - <div class="block"> - <o-icon - pack="ionicons" - icon="person" - size="small"> - </o-icon> - <o-icon - pack="ionicons" - icon="home" - size="small"> - </o-icon> - <o-icon - pack="ionicons" - icon="apps" - size="small"> - </o-icon> - </div> - - <div class="block"> - <o-icon - pack="ionicons" - icon="person"> - </o-icon> - <o-icon - pack="ionicons" - icon="home"> - </o-icon> - <o-icon - pack="ionicons" - icon="apps"> - </o-icon> - </div> - - <div class="block"> - <o-icon - pack="ionicons" - icon="person" - size="medium"> - </o-icon> - <o-icon - pack="ionicons" - icon="home" - size="medium"> - </o-icon> - <o-icon - pack="ionicons" - icon="apps" - size="medium"> - </o-icon> - </div> - - <div class="block"> - <o-icon - pack="ionicons" - icon="person" - size="large" - variant="success"> - </o-icon> - <o-icon - pack="ionicons" - icon="home" - size="large" - variant="info"> - </o-icon> - <o-icon - pack="ionicons" - icon="apps" - size="large" - variant="primary"> - </o-icon> - </div> - - <o-button variant="primary"> - <o-icon pack="ionicons" icon="checkmark"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon pack="ionicons" icon="checkmark"></o-icon> - <span>Finish</span> - </o-button> - - <o-button variant="warning"> - <o-icon - spin - pack="ionicons" - icon="refresh"> - </o-icon> - <span>Refresh</span> - </o-button> - </section> -</template> - -<script> - const customIconConfig = { - iconComponent: undefined, - customIconPacks: { - 'ionicons': { - sizes: { - 'default': 'is-size-5', - 'small': '', - 'medium': 'is-size-3', - 'large': 'is-size-1' - }, - iconPrefix: 'ion-md-', - internalIcons: { - 'check': 'checkmark', - 'information': 'information', - 'alert': 'alert', - 'alert-circle': 'alert', - 'arrow-up': 'arrow-up', - 'chevron-right': 'arrow-forward', - 'chevron-left': 'arrow-back', - 'chevron-down': 'arrow-down', - 'eye': 'eye', - 'eye-off': 'eye-off', - 'caret-down': 'arrow-dropdown', - 'caret-up': 'arrow-dropup', - 'loading': 'reload-outline', - 'times': 'close-outline', - 'close-circle': 'close-circle-outline' - } - } - } - } - export default { - data() { - return { - docsIcon: undefined - } - }, - created() { - this.$oruga.config.setOptions(customIconConfig) - }, - beforeCreate() { - // only for docs purpose - const docsIcon = this.$oruga.config.getOptions().iconComponent - if (typeof window !== 'undefined') { - window.requestAnimationFrame(() => { - this.$oruga.config.setOptions({ - iconComponent: docsIcon - }) - }) - } - } - } -</script> - -<style> - @import "https://unpkg.com/ionicons@4.5.10-0/dist/css/ionicons.min.css"; -</style> -``` -::: - -### Override icon pack - -<p> - You can also customize some properties of the default icon packs. In this example, default sizes for FontAwesome have been modified. -</p> - -```js -const customIconConfig = { - customIconPacks: { - 'fas': { - sizes: { - 'default': null, - 'small': null, - 'medium': 'fa-lg', - 'large': 'fa-2x' - } - } - } -} -export default { - created() { - // only for docs purpose, you can set in globally - this.$oruga.config.setOptions(customIconConfig) - } -} -``` - -### Custom icon component - -::: tip -You can set the `iconComponent` config option to render icons with the vue-fontawesome component (it should work with other Vue icon components as well). -::: - -```js -import { library } from '@fortawesome/fontawesome-svg-core'; -// internal icons -import { faCheck, faCheckCircle, faInfoCircle, faExclamationTriangle, faExclamationCircle, - faArrowUp, faAngleRight, faAngleLeft, faAngleDown, - faEye, faEyeSlash, faCaretDown, faCaretUp } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; - -library.add(faCheck, faCheckCircle, faInfoCircle, faExclamationTriangle, faExclamationCircle, - faArrowUp, faAngleRight, faAngleLeft, faAngleDown, - faEye, faEyeSlash, faCaretDown, faCaretUp); -Vue.component('vue-fontawesome', FontAwesomeIcon); - -// ... - -import Oruga from '@oruga-ui/oruga' -Vue.use(Oruga, { - iconComponent: 'vue-fontawesome', - iconPack: 'fas' -}); -``` diff --git a/packages/oruga/src/components/icon/index.js b/packages/oruga/src/components/icon/index.js deleted file mode 100644 index 54ee1a82d..000000000 --- a/packages/oruga/src/components/icon/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Icon from './Icon' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Icon) - } -} - -use(Plugin) - -export default Plugin - -export { - Icon as OIcon -} diff --git a/packages/oruga/src/components/index.js b/packages/oruga/src/components/index.js deleted file mode 100644 index 7880324c9..000000000 --- a/packages/oruga/src/components/index.js +++ /dev/null @@ -1,30 +0,0 @@ -export * from './autocomplete' -export * from './button' -export * from './carousel' -export * from './checkbox' -export * from './collapse' -export * from './datepicker' -export * from './datetimepicker' -export * from './dropdown' -export * from './field' -export * from './icon' -export * from './input' -export * from './inputitems' -export * from './loading' -export * from './notification' -export * from './notification' -export * from './menu' -export * from './modal' -export * from './pagination' -export * from './radio' -export * from './select' -export * from './skeleton' -export * from './sidebar' -export * from './slider' -export * from './steps' -export * from './switch' -export * from './table' -export * from './tabs' -export * from './timepicker' -export * from './tooltip' -export * from './upload' diff --git a/packages/oruga/src/components/input/Input.spec.js b/packages/oruga/src/components/input/Input.spec.js deleted file mode 100644 index 3750fb1ca..000000000 --- a/packages/oruga/src/components/input/Input.spec.js +++ /dev/null @@ -1,149 +0,0 @@ -import { shallowMount, mount } from '@vue/test-utils' -import OInput from '@components/input/Input' - -let wrapper - -describe('OInput', () => { - beforeEach(() => { - wrapper = shallowMount(OInput) - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('renders input element by default', () => { - expect(wrapper.contains('input')).toBeTruthy() - expect(wrapper.classes()).toContain('o-ctrl-input') - }) - - it('render textarea element when type is textarea', async () => { - wrapper.setProps({ type: 'textarea' }) - await wrapper.vm.$nextTick() - - const target = wrapper.find('textarea') - expect(target.exists()).toBeTruthy() - expect(target.classes()).toContain('o-input') - expect(target.attributes().style).toBeFalsy() - }) - - it('add inline style and call resize for textarea when autosize is true', async () => { - wrapper.vm.resize = jest.fn() - wrapper.setProps({ type: 'textarea', autosize: true, value: 'test' }) - await wrapper.vm.$nextTick() - - const target = wrapper.find('textarea') - expect(target.attributes().style).toBeTruthy() - - wrapper.setProps({ type: 'textarea', autosize: true, value: 'test2' }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.resize).toHaveBeenCalled() - }) - - /* - it('set height to certain px when resized', async () => { - wrapper.setProps({ type: 'textarea', autosize: true, value: 'test' }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.height).toContain('px') - }) - */ - - it('render field password when the type property is password', () => { - const wrapper = shallowMount(OInput, { - propsData: { - type: 'password', - passwordReveal: true - } - }) - - const target = wrapper.find('input') - expect(target.exists()).toBeTruthy() - expect(target.attributes().type).toBe('password') - }) - - it('toggles the visibility of the password to true when the togglePasswordVisibility method is called', async () => { - const wrapper = mount(OInput, { - propsData: { - value: 'foo', - type: 'password', - passwordReveal: true - } - }) - - wrapper.setProps({ value: 'bar' }) - await wrapper.vm.$nextTick() - - expect(wrapper.find('input').exists()).toBeTruthy() - expect(wrapper.vm.newType).toBe('password') - expect(wrapper.vm.isPasswordVisible).toBeFalsy() - expect(wrapper.find('input').attributes().type).toBe('password') - - const visibilityIcon = wrapper.find('.o-icon--clickable') - expect(visibilityIcon.exists()).toBeTruthy() - - visibilityIcon.trigger('click') - wrapper.setProps({ passwordReveal: false }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.newType).toBe('text') - expect(wrapper.vm.isPasswordVisible).toBeTruthy() - expect(wrapper.find('input').attributes().type).toBe('text') - }) - - it('render the placeholder and readonly attribute when passed', () => { - const wrapper = shallowMount(OInput, { - attrs: { placeholder: 'Awesome!', readonly: true } - }) - const target = wrapper.find('input') - - expect(target.element.getAttribute('placeholder')).toBe('Awesome!') - expect(target.element.getAttribute('readonly')).toBe('readonly') - }) - - it('expands input when expanded property is passed', async () => { - wrapper.setProps({ expanded: true }) - await wrapper.vm.$nextTick() - - expect(wrapper.classes()).toContain('o-ctrl-input--expanded') - }) - - it('keep its value on blur', async () => { - const wrapper = mount(OInput, { - propsData: { - value: 'foo' - }, - methods: { - checkHtml5Validity: () => true - } - }) - - const input = wrapper.find('input') - - input.element.value = 'bar' - input.trigger('input') - input.trigger('blur') - - expect(input.element.value).toBe('bar') - }) - - it('manage the click on icon', async () => { - const wrapper = mount(OInput, { - propsData: { - icon: 'magnify', - iconClickable: true - } - }) - - expect(wrapper.find('input').exists()).toBeTruthy() - - const visibilityIcon = wrapper.find('.o-icon--clickable') - expect(visibilityIcon.exists()).toBeTruthy() - - visibilityIcon.trigger('click') - await wrapper.vm.$nextTick() - expect(wrapper.emitted()['icon-click']).toBeTruthy() - }) -}) diff --git a/packages/oruga/src/components/input/Input.vue b/packages/oruga/src/components/input/Input.vue deleted file mode 100644 index 5424646fb..000000000 --- a/packages/oruga/src/components/input/Input.vue +++ /dev/null @@ -1,337 +0,0 @@ -<template> - <div :class="rootClasses"> - <input - v-if="type !== 'textarea'" - ref="input" - :class="inputClasses" - :type="newType" - :autocomplete="newAutocomplete" - :maxlength="maxlength" - v-bind="$attrs" - :value="computedValue" - @input="computedValue = $event.target.value" - @blur="onBlur" - @focus="onFocus" - @invalid="onInvalid" /> - - <textarea - v-else - ref="textarea" - :class="inputClasses" - :maxlength="maxlength" - v-bind="$attrs" - :value="computedValue" - @input="computedValue = $event.target.value" - @blur="onBlur" - @focus="onFocus" - @invalid="onInvalid" - :style="computedStyles" - /> - - <o-icon - v-if="icon" - :class="iconLeftClasses" - :clickable="iconClickable" - :icon="icon" - :pack="iconPack" - :size="size" - @click.native="iconClick('icon-click', $event)"/> - - <o-icon - v-if="hasIconRight" - :class="iconRightClasses" - :clickable="passwordReveal || clearable || iconRightClickable" - :icon="rightIcon" - :pack="iconPack" - :size="size" - :variant="rightIconVariant" - both - @click.native="rightIconClick"/> - - <small - v-if="maxlength && hasCounter && isFocused && type !== 'number'" - :class="counterClasses"> - {{ valueLength }} / {{ maxlength }} - </small> - </div> -</template> - -<script> -import Icon from '../icon/Icon' - -import { getOptions } from '../../utils/config' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import FormElementMixin from '../../utils/FormElementMixin' -import { getValueByPath } from '../../utils/helpers' - -/** - * Get user Input. Use with Field to access all functionalities - * @displayName Input - * @example ./examples/Input.md - * @style _input.scss - */ -export default { - name: 'OInput', - components: { - [Icon.name]: Icon - }, - mixins: [BaseComponentMixin, FormElementMixin], - configField: 'input', - inheritAttrs: false, - props: { - /** @model */ - value: [Number, String], - /** - * Input type, like native - * @values Any native input type, and textarea - */ - type: { - type: String, - default: 'text' - }, - /** - * Vertical size of input, optional - * @values small, medium, large - */ - size: String, - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** - * Adds the reveal password functionality - */ - passwordReveal: Boolean, - /** - * Makes the icon clickable - */ - iconClickable: Boolean, - /** - * Show character counter when maxlength prop is passed - */ - hasCounter: { - type: Boolean, - default: () => { return getValueByPath(getOptions(), 'input.counter', false) } - }, - /** - * Automatically adjust height in textarea - */ - autosize: { - type: Boolean, - default: false - }, - /** - * Icon name to be added on the right side - */ - iconRight: String, - /** - * Make the icon right clickable - */ - iconRightClickable: Boolean, - /** Variant of right icon */ - iconRightVariant: String, - /** Add a button/icon to clear the inputed text */ - clearable: { - type: Boolean, - default: () => { return getValueByPath(getOptions(), 'input.clearable', false) } - }, - /** - * Icon name to be added on the clear button - */ - clearIcon: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'input.clearIcon', 'close-circle') - } - }, - rootClass: [String, Function, Array], - expandedClass: [String, Function, Array], - iconLeftSpaceClass: [String, Function, Array], - iconRightSpaceClass: [String, Function, Array], - inputClass: [String, Function, Array], - roundedClass: [String, Function, Array], - iconLeftClass: [String, Function, Array], - iconRightClass: [String, Function, Array], - counterClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array] - }, - data() { - return { - newValue: this.value, - newType: this.type, - newAutocomplete: this.autocomplete || getValueByPath(getOptions(), 'input.autocompletete', 'off'), - isPasswordVisible: false, - height: 'auto' - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-ctrl-input'), - { [this.computedClass('expandedClass', 'o-ctrl-input--expanded')]: this.expanded } - ] - }, - inputClasses() { - return [ - this.computedClass('inputClass', 'o-input'), - { [this.computedClass('roundedClass', 'o-input--rounded')]: this.rounded }, - { [this.computedClass('sizeClass', 'o-input--', this.size)]: this.size }, - { [this.computedClass('variantClass', 'o-input--', (this.statusVariant || this.variant))]: (this.statusVariant || this.variant) }, - { [this.computedClass('textareaClass', 'o-input__textarea')]: this.type === 'textarea' }, - { [this.computedClass('iconLeftSpaceClass', 'o-input-iconspace-left')]: this.icon }, - { [this.computedClass('iconRightSpaceClass', 'o-input-iconspace-right')]: this.hasIconRight } - ] - }, - iconLeftClasses() { - return [ - this.computedClass('iconLeftClass', 'o-input__icon-left') - ] - }, - iconRightClasses() { - return [ - this.computedClass('iconRightClass', 'o-input__icon-right') - ] - }, - counterClasses() { - return [ - this.computedClass('counterClass', 'o-input__counter') - ] - }, - computedValue: { - get() { - return this.newValue - }, - set(value) { - this.newValue = value - this.$emit('input', this.newValue) - this.syncFilled(this.newValue) - !this.isValid && this.checkHtml5Validity() - } - }, - hasIconRight() { - return this.passwordReveal - || (this.statusIcon && this.statusVariantIcon) - || (this.clearable && this.newValue && this.clearIcon) - || this.iconRight - }, - rightIcon() { - if (this.passwordReveal) { - return this.passwordVisibleIcon - } else if (this.clearable && this.newValue && this.clearIcon) { - return this.clearIcon - } else if (this.iconRight) { - return this.iconRight - } - return this.statusVariantIcon - }, - rightIconVariant() { - if (this.passwordReveal || this.iconRight) { - return this.iconRightVariant || this.variant || null - } - return this.statusVariant - }, - - /** - * Check if have any message prop from parent if it's a Field. - */ - hasMessage() { - return !!this.statusMessage - }, - - /** - * Current password-reveal icon name. - */ - passwordVisibleIcon() { - return !this.isPasswordVisible ? 'eye' : 'eye-off' - }, - /** - * Get value length - */ - valueLength() { - if (typeof this.computedValue === 'string') { - return this.computedValue.length - } else if (typeof this.computedValue === 'number') { - return this.computedValue.toString().length - } - return 0 - }, - /** - * Computed inline styles for autoresize - */ - computedStyles () { - if (!this.autosize) return {} - return { - resize: 'none', - height: this.height, - overflow: 'hidden' - } - }, - - $elementRef() { - return this.type === 'textarea' - ? 'textarea' - : 'input' - } - }, - watch: { - /** - * When v-model is changed: - * 1. Set internal value. - */ - value: { - immediate: true, - handler(value) { - this.newValue = value - this.syncFilled(this.newValue) - if(this.autosize) { - this.resize() - } - } - }, - type(type) { - this.newType = type - } - }, - methods: { - /** - * Toggle the visibility of a password-reveal input - * by changing the type and focus the input right away. - */ - togglePasswordVisibility() { - this.isPasswordVisible = !this.isPasswordVisible - this.newType = this.isPasswordVisible ? 'text' : 'password' - - this.$nextTick(() => { - this.focus() - }) - }, - - iconClick(emit, event) { - this.$emit(emit, event) - this.$nextTick(() => { - this.focus() - }) - }, - - rightIconClick(event) { - if (this.passwordReveal) { - this.togglePasswordVisibility() - } else if (this.clearable) { - this.computedValue = '' - } else if (this.iconRightClickable) { - this.iconClick('icon-right-click', event) - } - }, - - resize() { - this.height = 'auto' - this.$nextTick(() => { - const scrollHeight = this.$refs.textarea.scrollHeight - this.height = scrollHeight + 'px' - }) - } - } -} -</script> diff --git a/packages/oruga/src/components/input/Inspector.vue b/packages/oruga/src/components/input/Inspector.vue deleted file mode 100644 index ed9507489..000000000 --- a/packages/oruga/src/components/input/Inspector.vue +++ /dev/null @@ -1,109 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field :variant="s.fieldvariant"> - <o-input v-bind="s" placeholder="Input"></o-input> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "expandedClass", - description: "Class of input when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "iconLeftSpaceClass", - description: "Class of the left icon space inside the input", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - } - }, - { - class: "iconRightSpaceClass", - description: "Class of the right icon space inside the input", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - } - }, - { - class: "inputClass", - description: "Class of the native input element" - }, - { - class: "roundedClass", - description: "Class of input when rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - } - }, - { - class: "iconLeftClass", - description: "Class of the left icon", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - } - }, - { - class: "iconRightClass", - description: "Class of the right icon", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - } - }, - { - class: "counterClass", - description: "Class of the counter element", - properties: ['hasCounter', 'maxlength'], - action: (cmp) => { - cmp.data.hasCounter = true; - cmp.data.maxlength = 10; - let el = cmp.$el.querySelector('input') - el.dispatchEvent(new Event('focus')); - } - }, - { - class: "sizeClass", - description : 'Class of the input size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = "large"; - } - }, - { - class: "variantClass", - description : 'Class of the input variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - warning: "Variant property should be applied to the wrapping field", - action: (cmp) => { - cmp.data.fieldvariant = "warning"; - } - }, - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/input/__snapshots__/Input.spec.js.snap b/packages/oruga/src/components/input/__snapshots__/Input.spec.js.snap deleted file mode 100644 index c8a28cd39..000000000 --- a/packages/oruga/src/components/input/__snapshots__/Input.spec.js.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OInput render correctly 1`] = ` -<div class="o-ctrl-input"><input type="text" autocomplete="off" class="o-input"> - <!----> - <!----> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/input/examples/Input.md b/packages/oruga/src/components/input/examples/Input.md deleted file mode 100644 index 08774dd73..000000000 --- a/packages/oruga/src/components/input/examples/Input.md +++ /dev/null @@ -1,140 +0,0 @@ - -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field label="Name"> - <o-input v-model="name"></o-input> - </o-field> - - <o-field label="Email" - variant="danger" - message="This email is invalid"> - <o-input type="email" - value="john@" - maxlength="30"> - </o-input> - </o-field> - - <o-field label="Username" - variant="success" - message="This username is available"> - <o-input value="johnsilver" maxlength="30"></o-input> - </o-field> - - <o-field label="Password"> - <o-input type="password" - value="iwantmytreasure" - password-reveal> - </o-input> - </o-field> - - <o-field label="Message"> - <o-input maxlength="200" type="textarea"></o-input> - </o-field> - - <o-field> - <o-input placeholder="No label"></o-input> - </o-field> - - <o-field label="Rounded"> - <o-input placeholder="No label" rounded></o-input> - </o-field> - - <o-field label="Success" variant="success"> - <o-input placeholder="Success"></o-input> - </o-field> - - <o-field label="Error" - variant="danger" - message="You can have a message too"> - <o-input placeholder="Error"></o-input> - </o-field> - - <o-field label="Info" variant="info"> - <o-input placeholder="Info"></o-input> - </o-field> - - <o-field label="Warning" variant="warning"> - <o-input placeholder="Warning"></o-input> - </o-field> - - <o-field label="Disabled"> - <o-input placeholder="Disabled" disabled></o-input> - </o-field> - - <o-field> - <o-input placeholder="Large" - size="large" - icon="user"> - </o-input> - </o-field> - - </section> -</template> - -<script> - export default { - data() { - return { - name: 'John Silver' - } - } - } -</script> -``` -::: - -### Base - -::: demo -```html -<template> - <section> - <h3 class="subtitle">With Icons</h3> - <o-field> - <o-input placeholder="Search..." - type="search" - icon="search" - icon-clickable - @icon-click="searchIconClick"> - </o-input> - </o-field> - - <o-field> - <o-input placeholder="Email" - v-model="email" - type="email" - icon="envelope" - icon-right="times-circle" - icon-right-clickable - @icon-right-click="clearIconClick"> - </o-input> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - email: '' - } - }, - methods: { - searchIconClick() { - alert('You wanna make a search?') - }, - clearIconClick() { - this.email = ''; - alert('Email cleared!') - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/input/index.js b/packages/oruga/src/components/input/index.js deleted file mode 100644 index 9bf6534a7..000000000 --- a/packages/oruga/src/components/input/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Input from './Input' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Input) - } -} - -use(Plugin) - -export default Plugin - -export { - Input as OInput -} diff --git a/packages/oruga/src/components/inputitems/Inputitems.spec.js b/packages/oruga/src/components/inputitems/Inputitems.spec.js deleted file mode 100644 index ae4fe165d..000000000 --- a/packages/oruga/src/components/inputitems/Inputitems.spec.js +++ /dev/null @@ -1,17 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OInputitems from '@components/inputitems/Inputitems' - -describe('OInputitems', () => { - it('is called', () => { - const wrapper = shallowMount(OInputitems) - expect(wrapper.name()).toBe('OInputitems') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - const wrapper = shallowMount(OInputitems) - expect(wrapper.html()).toMatchSnapshot() - }) - - -}) diff --git a/packages/oruga/src/components/inputitems/Inputitems.vue b/packages/oruga/src/components/inputitems/Inputitems.vue deleted file mode 100644 index 7b6c5ca5a..000000000 --- a/packages/oruga/src/components/inputitems/Inputitems.vue +++ /dev/null @@ -1,453 +0,0 @@ -<template> - <div :class="rootClasses"> - <div - :class="containerClasses" - @click="hasInput && focus($event)"> - <slot name="selected" :items="items"> - <span - v-for="(item, index) in items" - :key="getNormalizedItemText(item) + index" - :class="itemClasses" - > - <span>{{ getNormalizedItemText(item) }}</span> - <o-icon - v-if="closable" - :class="closeClasses" - clickable - both - :pack="iconPack" - :icon="closeIcon" - @click.native="removeItem(index, $event)" - :aria-label="ariaCloseLabel" - /> - </span> - </slot> - - <o-autocomplete - ref="autocomplete" - v-if="hasInput" - v-model="newItem" - v-bind="autocompleteBind" - :data="data" - :field="field" - :icon="icon" - :icon-pack="iconPack" - :maxlength="maxlength" - :has-counter="false" - :size="size" - :disabled="disabled" - :loading="loading" - :autocomplete="nativeAutocomplete" - :open-on-focus="openOnFocus" - :keep-first="keepFirst" - :keep-open="openOnFocus" - :group-field="groupField" - :group-options="groupOptions" - :use-html5-validation="useHtml5Validation" - :check-infinite-scroll="checkInfiniteScroll" - :append-to-body="appendToBody" - :confirm-keys="confirmKeys" - @typing="onTyping" - @focus="onFocus" - @blur="customOnBlur" - @invalid="onInvalid" - @keydown.native="keydown" - @compositionstart.native="isComposing = true" - @compositionend.native="isComposing = false" - @select="onSelect" - @infinite-scroll="$emit('infinite-scroll', $event)" - @icon-right-click="$emit('icon-right-click', $event)"> - <template - v-if="hasHeaderSlot" - #header> - <slot name="header" /> - </template> - <template - v-if="hasDefaultSlot" - #default="props"> - <slot - :option="props.option" - :index="props.index" /> - </template> - <template - v-if="hasEmptySlot" - #empty> - <slot name="empty" /> - </template> - <template - v-if="hasFooterSlot" - #footer> - <slot name="footer" /> - </template> - </o-autocomplete> - </div> - - <small - v-if="hasCounter && (maxitems || maxlength)" - :class="counterClasses"> - <template v-if="maxlength && valueLength > 0"> - {{ valueLength }} / {{ maxlength }} - </template> - <template v-else-if="maxitems"> - {{ itemsLength }} / {{ maxitems }} - </template> - </small> - </div> -</template> - -<script> -import Autocomplete from '../autocomplete/Autocomplete' -import Icon from '../icon/Icon' - -import FormElementMixin from '../../utils/FormElementMixin' -import BaseComponentMixin from '../../utils/BaseComponentMixin' - -import { getValueByPath } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -/** - * A simple item input field that can have autocomplete functionality - * @displayName Inputitems - * @example ./examples/InputItems.md - * @style _inputitems.scss - */ -export default { - name: 'OInputitems', - components: { - [Autocomplete.name]: Autocomplete, - [Icon.name]: Icon - }, - mixins: [FormElementMixin, BaseComponentMixin], - inheritAttrs: false, - configField: 'inputitems', - props: { - /** @model */ - value: { - type: Array, - default: () => [] - }, - /** Items data */ - data: { - type: Array, - default: () => [] - }, - /** - * Color of the each items, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** Limits the number of items, plus item counter */ - maxitems: { - type: [Number, String], - required: false - }, - /** Show counter when maxlength or maxtags props are passed */ - hasCounter: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'inputitems.hasCounter', true) - } - }, - /** Property of the object (if data is array of objects) to use as display text */ - field: { - type: String, - default: 'value' - }, - /** Add autocomplete feature (if true, any Autocomplete props may be used too) */ - allowAutocomplete: Boolean, - /** Add autocomplete feature (if true, any Autocomplete props may be used too) */ - autocomplete: Boolean, - /** Property of the object (if data is array of objects) to use as display text of group */ - groupField: String, - /** Property of the object (if data is array of objects) to use as key to get items array of each group, optional */ - groupOptions: String, - nativeAutocomplete: String, - /** Opens a dropdown with choices when the input field is focused */ - openOnFocus: Boolean, - /** Input will be disabled */ - disabled: Boolean, - /** Add close/delete button to the item */ - closable: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'inputitems.closable', true) - } - }, - /** - * Array of keys - * (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) - * which will add a item when typing (default comma, tab and enter) - */ - confirmKeys: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'inputitems.confirmKeys', [',', 'Tab', 'Enter']) - } - }, - /** Allow removing last item when pressing given keys, if input is empty */ - removeOnKeys: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'inputitems.removeOnKeys', ['Backspace']) - } - }, - /** When autocomplete, it allow to add new items */ - allowNew: Boolean, - /** Array of chars used to split when pasting a new string */ - onPasteSeparators: { - type: Array, - default: () => { - return getValueByPath(getOptions(), 'inputitems.onPasteSeparators', [',']) - } - }, - /** Function to validate the value of the item before adding */ - beforeAdding: { - type: Function, - default: () => true - }, - /** Allows adding the same item multiple time */ - allowDuplicates: { - type: Boolean, - default: false - }, - /** Makes the autocomplete component check if list reached scroll end and emit infinite-scroll event */ - checkInfiniteScroll: { - type: Boolean, - default: false - }, - /** Function to create a new item to push into v-model (items) */ - createItem: { - type: Function, - default: (item) => item - }, - /** Icon name of close icon on selected item */ - closeIcon: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'inputitems.closeIcon', 'close') - } - }, - /** The first option will always be pre-selected (easier to just hit enter or tab) */ - keepFirst: Boolean, - /** Accessibility label for the close button */ - ariaCloseLabel: String, - /** Append autocomplete content to body */ - appendToBody: Boolean, - rootClass: [String, Array, Function], - expandedClass: [String, Array, Function], - variantClass: [String, Array, Function], - closeClass: [String, Array, Function], - itemClass: [String, Array, Function], - counterClass: [String, Array, Function], - autocompleteClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'inputitems.autocompleteClasses', {}) - } - } - }, - data() { - return { - items: Array.isArray(this.value) ? this.value.slice(0) : (this.value || []), - newItem: '', - isComposing: false - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-inputit'), - { [this.computedClass('expandedClass', 'o-inputit--expanded')]: this.expanded } - ] - }, - - containerClasses() { - return [ - this.computedClass('containerClass', 'o-inputit__container'), - { [this.computedClass('sizeClass', 'o-inputit__container--', this.size)]: this.size }, - ] - }, - - itemClasses() { - return [ - this.computedClass('itemClass', 'o-inputit__item'), - { [this.computedClass('variantClass', 'o-inputit__item--', this.variant)]: this.variant } - ] - }, - - closeClasses() { - return [ - this.computedClass('closeClass', 'o-inputit__item__close') - ] - }, - - counterClasses() { - return [ - this.computedClass('counterClass', 'o-inputit__counter') - ] - }, - - autocompleteBind() { - return { - ...this.$attrs, - 'root-class': this.computedClass('autocompleteClasses.rootClass', 'o-inputit__autocomplete'), - 'input-classes': { - 'input-class': this.computedClass('autocompleteClasses.inputClasses.inputClass', 'o-inputit__input'), - }, - ...this.autocompleteClasses - } - }, - - valueLength() { - return this.newItem.trim().length - }, - - hasDefaultSlot() { - return !!this.$scopedSlots.default - }, - - hasEmptySlot() { - return !!this.$slots.empty - }, - - hasHeaderSlot() { - return !!this.$slots.header - }, - - hasFooterSlot() { - return !!this.$slots.footer - }, - - /** - * Show the input field if a maxitems hasn't been set or reached. - */ - hasInput() { - return this.maxitems == null || this.itemsLength < this.maxitems - }, - - itemsLength() { - return this.items.length - }, - - /** - * If input has onPasteSeparators prop, - * returning new RegExp used to split pasted string. - */ - separatorsAsRegExp() { - const sep = this.onPasteSeparators - - return sep.length ? new RegExp(sep.map((s) => { - return s ? s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') : null - }).join('|'), 'g') : null - }, - - $elementRef() { - return 'autocomplete' - } - }, - watch: { - /** - * When v-model is changed set internal value. - */ - value(value) { - this.items = Array.isArray(value) ? value.slice(0) : (value || []) - }, - - hasInput() { - if (!this.hasInput) this.onBlur() - } - }, - methods: { - addItem(item) { - const itemToAdd = item || this.newItem.trim() - - if (itemToAdd) { - if (!this.allowAutocomplete) { - const reg = this.separatorsAsRegExp - if (reg && itemToAdd.match(reg)) { - itemToAdd.split(reg) - .map((t) => t.trim()) - .filter((t) => t.length !== 0) - .map(this.addItem) - return - } - } - // Add the item input if it is not blank - // or previously added (if not allowDuplicates). - const add = !this.allowDuplicates ? this.items.indexOf(this.createItem(itemToAdd)) === -1 : true - if (add && this.beforeAdding(itemToAdd)) { - this.items.push(this.createItem(itemToAdd)) - this.$emit('input', this.items) - this.$emit('add', itemToAdd) - } - } - // after autocomplete events - requestAnimationFrame(() => { - this.newItem = '' - this.$emit('typing', '') - }) - }, - - getNormalizedItemText(item) { - if (typeof item === 'object') { - item = getValueByPath(item, this.field) - } - - return `${item}` - }, - - customOnBlur(event) { - // Add item on-blur if not select only - if (!this.allowAutocomplete) this.addItem() - - this.onBlur(event) - }, - - onSelect(option) { - if (!option) return - - this.addItem(option) - this.$nextTick(() => { - this.newItem = '' - }) - }, - - removeItem(index, event) { - const item = this.items.splice(index, 1)[0] - this.$emit('input', this.items) - this.$emit('remove', item) - if (event) event.stopPropagation() - if (this.openOnFocus && this.$refs.autocomplete) { - this.$refs.autocomplete.focus() - } - return item - }, - - removeLastItem() { - if (this.itemsLength > 0) { - this.removeItem(this.itemsLength - 1) - } - }, - - keydown(event) { - const { key } = event // cannot destructure preventDefault (https://stackoverflow.com/a/49616808/2774496) - if (this.removeOnKeys.indexOf(key) !== -1 && !this.newItem.length) { - this.removeLastItem() - } - // Stop if is to accept select only - if (this.allowAutocomplete && !this.allowNew) return - - if (this.confirmKeys.indexOf(key) >= 0) { - // Allow Tab to advance to next field regardless - if (key !== 'Tab') event.preventDefault() - if (key === 'Enter' && this.isComposing) return - this.addItem() - } - }, - - onTyping(event) { - this.$emit('typing', event.trim()) - } - } -} -</script> diff --git a/packages/oruga/src/components/inputitems/Inspector.vue b/packages/oruga/src/components/inputitems/Inspector.vue deleted file mode 100644 index 3fd77aae1..000000000 --- a/packages/oruga/src/components/inputitems/Inspector.vue +++ /dev/null @@ -1,155 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-inputitems - v-bind="s" - v-model="tags" - :data="filteredTags" - autocomplete - field="user.first_name" - icon="tag" - placeholder="Add a tag" - @typing="getFilteredTags"> - </o-inputitems> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - - const data = [ - {"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"}, - {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"}, - {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"}, - {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"}, - {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"}, - {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"}, - {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"}, - {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"}, - {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"}, - {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"}, - {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"}, - {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"}, - {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"}, - {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"}, - {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"}, - {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"}, - {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"}, - {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"}, - {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"}, - {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"}, - {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"}, - {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"}, - {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"}, - {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"}, - {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"}, - {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"}, - {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"}, - {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"}, - {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"}, - {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"}, - {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"}, - {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"}, - {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"}, - {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"}, - {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"}, - {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"}, - {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"}, - {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"}, - {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"}, - {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"}, - {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"}, - {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"}, - {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"}, - {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"}, - {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"}, - {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"}, - {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"}, - {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"}, - {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"}, - {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"}, - {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"}, - {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"}, - {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"}, - {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"}, - {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"}, - {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"}, - {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"}, - {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"}, - {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"}, - {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"} -] - -export default { - data() { - return { - filteredTags: data, - tags: [ data[1] ], - inspectData: [ - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "expandedClass", - description: "Class of input when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "itemClass", - description: "Class of the entered item" - }, - { - class: "variantClass", - description: "Class of the entered item variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - }, - }, - { - class: "closeClass", - properties: ["closable"], - description: "Class of the close button of entered item", - action: (cmp) => { - cmp.data.closable = true; - } - }, - { - class: "counterClass", - description: "Class of the counter element", - properties: ['hasCounter', 'maxitems'], - action: (cmp) => { - cmp.data.hasCounter = true; - cmp.data.maxitems = 5; - } - }, - { - class: "autocompleteClasses", - realClass: "autocompleteClasses.inputClass", - description: "Classes to apply on internal autocomplete.", - componentRef: "Autocomplete" - }, - ], - }; - }, - methods: { - getFilteredTags(text) { - this.filteredTags = data.filter((option) => { - return option.user.first_name - .toString() - .toLowerCase() - .indexOf(text.toLowerCase()) >= 0 - }) - } - } -}; -</script> - diff --git a/packages/oruga/src/components/inputitems/__snapshots__/Inputitems.spec.js.snap b/packages/oruga/src/components/inputitems/__snapshots__/Inputitems.spec.js.snap deleted file mode 100644 index 0ab28004a..000000000 --- a/packages/oruga/src/components/inputitems/__snapshots__/Inputitems.spec.js.snap +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OInputitems render correctly 1`] = ` -<div class="o-inputit"> - <div class="o-inputit__container"> - <o-autocomplete-stub usehtml5validation="true" statusicon="true" value="" data="" field="value" menuposition="auto" animation="fade" confirmkeys=",,Tab,Enter" type="text" menutag="div" itemtag="div" rootclass="o-inputit__autocomplete" inputclasses="[object Object]"></o-autocomplete-stub> - </div> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/inputitems/examples/Inputitems.md b/packages/oruga/src/components/inputitems/examples/Inputitems.md deleted file mode 100644 index dffceb388..000000000 --- a/packages/oruga/src/components/inputitems/examples/Inputitems.md +++ /dev/null @@ -1,247 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field label="Add some items"> - <o-inputitems - v-model="tags" - icon="tag" - placeholder="Add an item" - aria-close-label="Delete this item"> - </o-inputitems> - </o-field> - <p class="content"><b>Items:</b> {{ tags }}</p> - </section> -</template> - -<script> - export default { - data() { - return { - tags: [ - 'Pistoia', - 'Valdinievole' - ] - } - } - } -</script> -``` -::: - -### Autocomplete - -::: demo -```html -<template> - <section> - <div class="block"> - <o-switch v-model="allowNew"> - Allow new items - </o-switch> - <o-switch v-model="openOnFocus"> - Open on focus - </o-switch> - </div> - <o-field label="Enter some items"> - <o-inputitems - v-model="tags" - :data="filteredTags" - autocomplete - :allow-new="allowNew" - :open-on-focus="openOnFocus" - field="user.first_name" - icon="tag" - placeholder="Add an item" - @typing="getFilteredTags"> - </o-inputitems> - </o-field> - <p class="content"><b>Items:</b> {{ tags }}</p> - </section> -</template> - -<script> - const data = [ - {"id":1,"user":{"first_name":"Jesse","last_name":"Simmons"},"date":"2016/10/15 13:43:27","gender":"Male"}, - {"id":2,"user":{"first_name":"John","last_name":"Jacobs"},"date":"2016/12/15 06:00:53","gender":"Male"}, - {"id":3,"user":{"first_name":"Tina","last_name":"Gilbert"},"date":"2016/04/26 06:26:28","gender":"Female"}, - {"id":4,"user":{"first_name":"Clarence","last_name":"Flores"},"date":"2016/04/10 10:28:46","gender":"Male"}, - {"id":5,"user":{"first_name":"Anne","last_name":"Lee"},"date":"2016/12/06 14:38:38","gender":"Female"}, - {"id":6,"user":{"first_name":"Sara","last_name":"Armstrong"},"date":"2016/09/23 18:50:04","gender":"Female"}, - {"id":7,"user":{"first_name":"Anthony","last_name":"Webb"},"date":"2016/08/30 23:49:38","gender":"Male"}, - {"id":8,"user":{"first_name":"Andrew","last_name":"Greene"},"date":"2016/11/20 14:57:47","gender":"Male"}, - {"id":9,"user":{"first_name":"Russell","last_name":"White"},"date":"2016/07/13 09:29:49","gender":"Male"}, - {"id":10,"user":{"first_name":"Lori","last_name":"Hunter"},"date":"2016/12/09 01:44:05","gender":"Female"}, - {"id":11,"user":{"first_name":"Ronald","last_name":"Wood"},"date":"2016/12/04 02:23:48","gender":"Male"}, - {"id":12,"user":{"first_name":"Michael","last_name":"Harper"},"date":"2016/07/27 13:28:15","gender":"Male"}, - {"id":13,"user":{"first_name":"George","last_name":"Dunn"},"date":"2017/03/07 12:26:52","gender":"Male"}, - {"id":14,"user":{"first_name":"Eric","last_name":"Rogers"},"date":"2016/06/07 05:41:52","gender":"Male"}, - {"id":15,"user":{"first_name":"Juan","last_name":"Meyer"},"date":"2017/02/01 04:56:34","gender":"Male"}, - {"id":16,"user":{"first_name":"Silvia","last_name":"Rosa"},"date":"2017/01/26 11:50:04","gender":"Female"}, - {"id":17,"user":{"first_name":"Lori","last_name":"Cunningham"},"date":"2016/05/01 10:00:56","gender":"Female"}, - {"id":18,"user":{"first_name":"Charles","last_name":"Graham"},"date":"2016/05/31 06:43:30","gender":"Male"}, - {"id":19,"user":{"first_name":"Henry","last_name":"Morrison"},"date":"2016/09/27 16:15:44","gender":"Male"}, - {"id":20,"user":{"first_name":"Albert","last_name":"Mendoza"},"date":"2016/08/08 05:29:24","gender":"Male"}, - {"id":21,"user":{"first_name":"Ruby","last_name":"Snyder"},"date":"2017/04/01 12:04:39","gender":"Female"}, - {"id":22,"user":{"first_name":"Jesse","last_name":"Warren"},"date":"2016/08/20 01:36:38","gender":"Male"}, - {"id":23,"user":{"first_name":"Carlos","last_name":"Ferguson"},"date":"2016/05/31 10:40:29","gender":"Male"}, - {"id":24,"user":{"first_name":"Melissa","last_name":"Peters"},"date":"2016/07/23 00:41:54","gender":"Female"}, - {"id":25,"user":{"first_name":"Arthur","last_name":"Garza"},"date":"2017/03/11 14:11:37","gender":"Male"}, - {"id":26,"user":{"first_name":"Joe","last_name":"Berry"},"date":"2016/07/09 15:16:56","gender":"Male"}, - {"id":27,"user":{"first_name":"Joseph","last_name":"Bishop"},"date":"2016/10/04 19:44:54","gender":"Male"}, - {"id":28,"user":{"first_name":"Sarah","last_name":"Harper"},"date":"2016/09/23 05:09:11","gender":"Female"}, - {"id":29,"user":{"first_name":"Christopher","last_name":"Fuller"},"date":"2016/04/12 00:05:35","gender":"Male"}, - {"id":30,"user":{"first_name":"Alan","last_name":"Mendoza"},"date":"2016/04/22 10:48:02","gender":"Male"}, - {"id":31,"user":{"first_name":"James","last_name":"Davis"},"date":"2017/01/16 15:17:03","gender":"Male"}, - {"id":32,"user":{"first_name":"Scott","last_name":"Welch"},"date":"2016/10/04 23:31:51","gender":"Male"}, - {"id":33,"user":{"first_name":"Mildred","last_name":"Myers"},"date":"2016/11/23 13:46:18","gender":"Female"}, - {"id":34,"user":{"first_name":"Victor","last_name":"Martinez"},"date":"2016/04/06 17:05:07","gender":"Male"}, - {"id":35,"user":{"first_name":"Susan","last_name":"Medina"},"date":"2016/12/09 10:33:37","gender":"Female"}, - {"id":36,"user":{"first_name":"Judy","last_name":"Long"},"date":"2016/07/26 16:19:04","gender":"Female"}, - {"id":37,"user":{"first_name":"Joan","last_name":"Myers"},"date":"2016/09/22 04:55:54","gender":"Female"}, - {"id":38,"user":{"first_name":"Rachel","last_name":"Gonzales"},"date":"2016/07/15 13:56:38","gender":"Female"}, - {"id":39,"user":{"first_name":"Roger","last_name":"Hunt"},"date":"2016/08/14 10:43:11","gender":"Male"}, - {"id":40,"user":{"first_name":"Dorothy","last_name":"Howard"},"date":"2016/06/19 05:34:49","gender":"Female"}, - {"id":41,"user":{"first_name":"Eugene","last_name":"Lynch"},"date":"2016/12/24 08:19:24","gender":"Male"}, - {"id":42,"user":{"first_name":"Kathy","last_name":"Webb"},"date":"2017/04/01 21:09:05","gender":"Female"}, - {"id":43,"user":{"first_name":"Antonio","last_name":"White"},"date":"2017/02/10 06:51:20","gender":"Male"}, - {"id":44,"user":{"first_name":"Louis","last_name":"Spencer"},"date":"2016/10/08 02:20:22","gender":"Male"}, - {"id":45,"user":{"first_name":"Andrea","last_name":"Marshall"},"date":"2016/09/04 10:59:57","gender":"Female"}, - {"id":46,"user":{"first_name":"Eugene","last_name":"Sims"},"date":"2017/03/15 06:39:48","gender":"Male"}, - {"id":47,"user":{"first_name":"Mildred","last_name":"Gibson"},"date":"2016/04/18 06:43:54","gender":"Female"}, - {"id":48,"user":{"first_name":"Joan","last_name":"Arnold"},"date":"2016/12/16 04:52:23","gender":"Female"}, - {"id":49,"user":{"first_name":"Jesse","last_name":"Schmidt"},"date":"2016/06/11 02:44:33","gender":"Male"}, - {"id":50,"user":{"first_name":"David","last_name":"Frazier"},"date":"2017/02/15 21:46:30","gender":"Male"}, - {"id":51,"user":{"first_name":"Nicholas","last_name":"Howell"},"date":"2016/11/01 15:08:31","gender":"Male"}, - {"id":52,"user":{"first_name":"Douglas","last_name":"Chapman"},"date":"2017/02/08 03:33:24","gender":"Male"}, - {"id":53,"user":{"first_name":"Bruce","last_name":"Simmons"},"date":"2016/07/14 12:11:17","gender":"Male"}, - {"id":54,"user":{"first_name":"Antonio","last_name":"George"},"date":"2016/11/07 19:12:55","gender":"Male"}, - {"id":55,"user":{"first_name":"Chris","last_name":"Marshall"},"date":"2016/07/03 12:11:45","gender":"Male"}, - {"id":56,"user":{"first_name":"Ashley","last_name":"Hudson"},"date":"2016/10/14 21:08:05","gender":"Female"}, - {"id":57,"user":{"first_name":"Alan","last_name":"Edwards"},"date":"2017/03/22 21:10:25","gender":"Male"}, - {"id":58,"user":{"first_name":"George","last_name":"Clark"},"date":"2016/04/28 03:15:05","gender":"Male"}, - {"id":59,"user":{"first_name":"Frank","last_name":"Porter"},"date":"2016/09/08 00:48:14","gender":"Male"}, - {"id":60,"user":{"first_name":"Christopher","last_name":"Palmer"},"date":"2016/05/24 08:58:12","gender":"Male"} - ] - - export default { - data() { - return { - filteredTags: data, - tags: [], - allowNew: false, - openOnFocus: false - } - }, - methods: { - getFilteredTags(text) { - this.filteredTags = data.filter((option) => { - return option.user.first_name - .toString() - .toLowerCase() - .indexOf(text.toLowerCase()) >= 0 - }) - } - } - } -</script> -``` -::: - -### Custom selected - -::: demo -```html -<template> - <section> - <o-field label="Enter some items"> - <o-inputitems - v-model="items" - ref="input" - icon="tag" - placeholder="Add an item"> - <template #selected="{ items }"> - <o-button - native-type="button" - v-for="(item, index) in items" - :key="index" - :variant="getType(item)" - rounded - @click="$refs.input.removeItem(index, $event)"> - {{ item }} - </o-button> - </template> - </o-inputitems> - </o-field> - <p class="content"><b>Items:</b> {{ items }}</p> - </section> -</template> - -<script> - export default { - data() { - return { - items: [] - } - }, - methods: { - getType(item) { - const random = 'Z'.charCodeAt(0) - item.toUpperCase().charCodeAt(0) - if (random >= 1 && random < 5) { - return 'primary' - } else if (random >= 6 && random < 10) { - return 'danger' - } else if (random >= 11 && random < 15) { - return 'warning' - } else if (random >= 15 && random < 20) { - return 'success' - } else if (random >= 20 && random < 25) { - return 'info' - } - } - } - } -</script> -``` -::: - -### Limits - -::: demo -```html -<template> - <section> - <o-field label="Limited to 10 characters"> - <o-inputitems - maxlength="10" - :value="['Oruga', 'Vue', 'CSS']"> - </o-inputitems> - </o-field> - - <o-field label="Limited to 5 tags"> - <o-inputitems - maxitems="5" - :value="['One', 'Two', 'Three', 'Four']"> - </o-inputitems> - </o-field> - - <o-field label="Limited to 10 characters and 5 tags"> - <o-inputitems - maxlength="10" - maxitems="5" - :value="['Red', 'Green', 'Blue', 'White']"> - </o-inputitems> - </o-field> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: diff --git a/packages/oruga/src/components/inputitems/index.js b/packages/oruga/src/components/inputitems/index.js deleted file mode 100644 index ca887797b..000000000 --- a/packages/oruga/src/components/inputitems/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Inputitems from './Inputitems' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Inputitems) - } -} - -use(Plugin) - -export default Plugin - -export { - Inputitems as OInputitems -} diff --git a/packages/oruga/src/components/loading/Inspector.vue b/packages/oruga/src/components/loading/Inspector.vue deleted file mode 100644 index dd916c5b8..000000000 --- a/packages/oruga/src/components/loading/Inspector.vue +++ /dev/null @@ -1,63 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <p style="position: relative"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - <o-loading v-bind="s" icon="sync-alt" :active.sync="loading" :iconSpin="true"> - </o-loading> - </p> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - loading: false, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: (cmp) => { - cmp.data.canCancel = true; - cmp.data.fullPage = false; - this.loading = true; - } - }, - { - class: "overlayClass", - description: "Class of the loading overlay", - action: (cmp) => { - cmp.data.canCancel = true; - cmp.data.fullPage = false; - this.loading = true; - } - }, - { - class: "iconClass", - description: "Class for the loading icon", - action: (cmp) => { - cmp.data.canCancel = true; - cmp.data.fullPage = false; - this.loading = true; - } - }, - { - class: "fullPageClass", - description: "Class for the root element when fullpage", - properties: ['fullPage'], - action: (cmp) => { - cmp.data.fullPage = true; - cmp.data.canCancel = true; - this.loading = true; - } - } - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/loading/Loading.spec.js b/packages/oruga/src/components/loading/Loading.spec.js deleted file mode 100644 index 167fffb0c..000000000 --- a/packages/oruga/src/components/loading/Loading.spec.js +++ /dev/null @@ -1,128 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OLoading from '@components/loading/Loading' - -let wrapper - -describe('OLoading', () => { - beforeEach(() => { - wrapper = shallowMount(OLoading, { - stubs: { - transition: false - } - }) - }) - - it('is inactive initially', () => { - expect(wrapper.vm.isActive).toBeFalsy() - }) - - describe('active', () => { - beforeEach(() => { - wrapper.setProps({active: true}) - }) - - it('Is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('changes isActive when active prop is modified', async () => { - wrapper.setProps({active: false}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.isActive).toBeFalsy() - - wrapper.setProps({active: true}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('close on cancel', (done) => { - wrapper.setProps({canCancel: true}) - wrapper.vm.isActive = true - wrapper.vm.close = jest.fn() - wrapper.vm.cancel() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.close).toHaveBeenCalled() - done() - }) - }) - - it('close on escape', () => { - wrapper.vm.isActive = true - wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel) - const event = new KeyboardEvent('keyup', {'key': 'Escape'}) - wrapper.vm.keyPress({}) - wrapper.vm.keyPress(event) - expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1) - }) - - it('emit events on close', () => { - wrapper.vm.close() - expect(wrapper.emitted()['close']).toBeTruthy() - expect(wrapper.emitted()['update:active']).toBeTruthy() - }) - }) - - describe('programmatic without container', () => { - beforeEach(() => { - window.document.body.appendChild = jest.fn() - wrapper = shallowMount(OLoading, { - propsData: { - programmatic: true - }, - stubs: { - transition: false - }, - attachToDocument: true - }) - }) - - it('Is called', () => { - expect(wrapper.exists()).toBeTruthy() - expect(window.document.body.appendChild).toHaveBeenCalled() - }) - - it('manage close', (done) => { - jest.useFakeTimers() - - wrapper.vm.$destroy = jest.fn(() => wrapper.vm.$destroy) - wrapper.vm.close() - - expect(wrapper.vm.isActive).toBeFalsy() - - window.requestAnimationFrame(() => { - expect(wrapper.vm.$destroy).toHaveBeenCalled() - done() - }, 150) - }) - }) - - const component = document.createElement('div') - describe('programmatic with a container', () => { - beforeEach(() => { - component.appendChild = jest.fn() - wrapper = shallowMount(OLoading, { - propsData: { - programmatic: true, - container: component - }, - stubs: { - transition: false - }, - attachToDocument: true - }) - }) - - it('Is called', () => { - expect(wrapper.exists()).toBeTruthy() - expect(component.appendChild).toHaveBeenCalled() - }) - - it('Is not full page', () => { - expect(wrapper.vm.displayInFullPage).toBeFalsy() - }) - }) -}) diff --git a/packages/oruga/src/components/loading/Loading.vue b/packages/oruga/src/components/loading/Loading.vue deleted file mode 100644 index 8f791907a..000000000 --- a/packages/oruga/src/components/loading/Loading.vue +++ /dev/null @@ -1,198 +0,0 @@ -<template> - <transition :name="animation" > - <div - :class="rootClasses" - v-if="isActive"> - <div - :class="overlayClasses" - @click="cancel('outside')" - /> - <slot> - <o-icon - :icon="icon" - :spin="iconSpin" - :size="iconSize" - :class="iconClasses" - both - /> - </slot> - </div> - </transition> -</template> - -<script> -import Icon from '../icon/Icon' - -import { getOptions } from '../../utils/config' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { removeElement, getValueByPath, promiseObject } from '../../utils/helpers' -import { HTMLElement } from '../../utils/ssr' - -/** - * A simple loading overlay - * @displayName Loading - * @example ./examples/Loading.md - * @style _loading.scss - */ -export default { - name: 'OLoading', - components: { - [Icon.name]: Icon - }, - mixins: [BaseComponentMixin], - configField: 'loading', - props: { - /** Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */ - active: Boolean, - /** @ignore */ - programmatic: Object, - /** @ignore */ - promise: promiseObject(), - container: [Object, Function, HTMLElement], - /** Loader will overlay the full page */ - fullPage: { - type: Boolean, - default: true - }, - /* Custom animation (transition name) */ - animation: { - type: String, - default: () => { return getValueByPath(getOptions(), 'loading.animation', 'fade') } - }, - /** Can close Loading by pressing escape or clicking outside */ - canCancel: { - type: Boolean, - default: false - }, - /** Callback function to call after user canceled (pressed escape / clicked outside) */ - onCancel: { - type: Function, - default: () => {} - }, - /** Icon name */ - icon: { - type: String, - default: () => { return getValueByPath(getOptions(), 'loading.icon', 'loading') } - }, - /** Enable spin effect on icon */ - iconSpin: { - type: Boolean, - default: true - }, - iconSize: { - type: String, - default: 'medium' - }, - overlay: { - type: Boolean, - default: true - }, - rootClass: [String, Function, Array], - overlayClass: [String, Function, Array], - iconClass: [String, Function, Array], - fullPageClass:[String, Function, Array] - }, - data() { - return { - isActive: this.active || false, - displayInFullPage: this.fullPage - } - }, - watch: { - active(value) { - this.isActive = value - }, - fullPage(value) { - this.displayInFullPage = value - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-load'), - { [this.computedClass('fullPageClass', 'o-load--fullpage')]: this.displayInFullPage } - ] - }, - overlayClasses() { - return [ - { [this.computedClass('overlayClass', 'o-load__overlay')]: this.overlay } - ] - }, - iconClasses() { - return [ - this.computedClass('iconClass', 'o-load__icon') - ] - } - }, - methods: { - /** - * Close the Modal if canCancel. - */ - cancel(method) { - if (!this.canCancel || !this.isActive) return - - this.close({action: 'cancel', method}) - }, - /** - * Emit events, and destroy modal if it's programmatic. - */ - close() { - this.onCancel.apply(null, arguments) - this.$emit('close') - this.$emit('update:active', false) - - // Timeout for the animation complete before destroying - if (this.programmatic) { - if (this.programmatic.instances) { - this.programmatic.instances.remove(this) - } - if (this.programmatic.resolve) { - this.programmatic.resolve.apply(null, arguments) - } - this.isActive = false - window.requestAnimationFrame(() => { - this.$destroy() - removeElement(this.$el) - }) - } - }, - /** - * Keypress event that is bound to the document. - */ - keyPress({ key }) { - if (key === 'Escape' || key === 'Esc') this.cancel('escape') - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('keyup', this.keyPress) - } - }, - beforeMount() { - // Insert the Loading component in body tag - // only if it's programmatic - if (this.programmatic) { - if (!this.container) { - document.body.appendChild(this.$el) - } else { - this.displayInFullPage = false - this.$emit('update:full-page', false) - this.container.appendChild(this.$el) - } - } - }, - mounted() { - if (this.programmatic) { - if (this.programmatic.instances) { - this.programmatic.instances.add(this) - } - this.isActive = true - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('keyup', this.keyPress) - } - } -} -</script> diff --git a/packages/oruga/src/components/loading/__snapshots__/Loading.spec.js.snap b/packages/oruga/src/components/loading/__snapshots__/Loading.spec.js.snap deleted file mode 100644 index 4edf7a75e..000000000 --- a/packages/oruga/src/components/loading/__snapshots__/Loading.spec.js.snap +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OLoading active render correctly 1`] = ` -<transition-stub name="fade"> - <div class="o-load o-load--fullpage"> - <div class="o-load__overlay"></div> - <o-icon-stub icon="loading" size="medium" spin="true" both="true" class="o-load__icon"></o-icon-stub> - </div> -</transition-stub> -`; diff --git a/packages/oruga/src/components/loading/examples/Loading.md b/packages/oruga/src/components/loading/examples/Loading.md deleted file mode 100644 index 2ac0d6e60..000000000 --- a/packages/oruga/src/components/loading/examples/Loading.md +++ /dev/null @@ -1,208 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true"></o-loading> - </p> - </section> -</template> - -<script> - export default { - data() { - return { - isLoading: false, - isFullPage: true - } - }, - methods: { - openLoading() { - this.isLoading = true - setTimeout(() => { - this.isLoading = false - }, 10 * 1000) - } - } - } -</script> -``` -::: - -### Slot - -::: demo -```html -<template> - <section> - <o-field> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - <o-loading :full-page="isFullPage" :active.sync="isLoading" :can-cancel="true"> - <o-icon - pack="fas" - icon="sync-alt" - size="large" - spin> - </o-icon> - </o-loading> - </p> - </section> -</template> - -<script> - export default { - data() { - return { - isLoading: false, - isFullPage: true - } - }, - methods: { - openLoading() { - this.isLoading = true - setTimeout(() => { - this.isLoading = false - }, 10 * 1000) - } - } - } -</script> -``` -::: - -### Programmatically - -::: demo -```html -<template> - <div> - <o-field> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative" ref="element"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </p> - </div> -</template> - -<script> - export default { - data() { - return { - isFullPage: true, - } - }, - methods: { - openLoading() { - const loadingComponent = this.$oruga.loading.open({ - fullPage: this.isFullPage, - container: this.isFullPage ? null : this.$refs.element - }) - setTimeout(() => loadingComponent.close(), 3 * 1000) - } - } - } -</script> -``` -::: - -### Programmatically (with promise) - -::: demo -```html -<template> - <div> - <o-field> - <div class="buttons"> - <o-button size="medium" variant="primary" @click="openLoading"> - Launch loading - </o-button> - <o-button size="medium" variant="primary" @click="openLoadingCloseAll"> - Launch loading (closeAll) - </o-button> - </div> - </o-field> - <o-field> - <o-switch v-model="isFullPage">Display loader over full page</o-switch> - </o-field> - <p style="position: relative" ref="element"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </p> - </div> -</template> - -<script> - export default { - data() { - return { - isFullPage: true, - } - }, - methods: { - async openLoading() { - const loadingComponent = this.$oruga.loading.open({ - fullPage: this.isFullPage, - container: this.isFullPage ? null : this.$refs.element, - canCancel: true, - }) - setTimeout(() => loadingComponent.close({action:'cancel', method: 'timeout'}), 3 * 1000) - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const ret = await loadingComponent.promise - this.$oruga.notification.open({ - duration: 2000, - message: 'Loading returned ' + JSON.stringify(ret), - variant: 'info', - position: 'top', - }) - }, - async openLoadingCloseAll() { - const loadingComponent = this.$oruga.loading.open({ - fullPage: this.isFullPage, - container: this.isFullPage ? null : this.$refs.element, - canCancel: true, - }) - setTimeout(() => this.$oruga.loading.closeAll({action:'cancel', method: 'closeAll'}), 3 * 1000) - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const ret = await loadingComponent.promise - this.$oruga.notification.open({ - duration: 2000, - message: 'Loading returned ' + JSON.stringify(ret), - variant: 'info', - position: 'top', - }) - }, - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/loading/index.js b/packages/oruga/src/components/loading/index.js deleted file mode 100644 index ee5d7e597..000000000 --- a/packages/oruga/src/components/loading/index.js +++ /dev/null @@ -1,60 +0,0 @@ -import Loading from './Loading' - -import { VueInstance } from '../../utils/config' -import { merge } from '../../utils/helpers' -import { use, registerComponent, registerComponentProgrammatic } from '../../utils/plugins' -import InstanceRegistry from "../../utils/InstanceRegistry" - -let localVueInstance - -let instances = new InstanceRegistry() - -const LoadingProgrammatic = { - open(params) { - let parent - - const defaultParam = { - programmatic: { instances } - } - if (params.parent) { - parent = params.parent - delete params.parent - } - const propsData = merge(defaultParam, params) - if (window.Promise) { - propsData.promise = new Promise((p1, p2) => { - propsData.programmatic.resolve = p1 - propsData.programmatic.reject = p2 - }) - } - const vm = typeof window !== 'undefined' && window.Vue ? window.Vue : localVueInstance || VueInstance - const LoadingComponent = vm.extend(Loading) - return new LoadingComponent({ - parent, - el: document.createElement('div'), - propsData - }) - }, - closeAll() { - instances.walk((entry) => { - entry.close(...arguments) - }) - } -} - -const Plugin = { - install(Vue) { - localVueInstance = Vue - registerComponent(Vue, Loading) - registerComponentProgrammatic(Vue, 'loading', LoadingProgrammatic) - } -} - -use(Plugin) - -export default Plugin - -export { - LoadingProgrammatic, - Loading as OLoading -} diff --git a/packages/oruga/src/components/menu/Menu.spec.js b/packages/oruga/src/components/menu/Menu.spec.js deleted file mode 100644 index 7ddf87ec8..000000000 --- a/packages/oruga/src/components/menu/Menu.spec.js +++ /dev/null @@ -1,19 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OMenu from './Menu' - -let wrapper - -describe('BMenu', () => { - beforeEach(() => { - wrapper = shallowMount(OMenu) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('OMenu') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/menu/Menu.vue b/packages/oruga/src/components/menu/Menu.vue deleted file mode 100644 index c2f4be092..000000000 --- a/packages/oruga/src/components/menu/Menu.vue +++ /dev/null @@ -1,41 +0,0 @@ -<template> - <div :class="rootClasses"> - <slot /> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin'; - -/** - * A simple menu - * @displayName M - * @style _menu.scss - */ -export default { - name: 'OMenu', - configField: 'menu', - mixins: [BaseComponentMixin], - props: { - accordion: { - type: Boolean, - default: true - }, - activable: { - type: Boolean, - default: true - }, - rootClass: [String, Array, Function] - }, - data() { - return { - isMenu: true // Used by MenuItem - } - }, - computed: { - rootClasses() { - return this.computedClass('rootClass', 'o-menu') - } - } -} -</script> diff --git a/packages/oruga/src/components/menu/MenuItem.spec.js b/packages/oruga/src/components/menu/MenuItem.spec.js deleted file mode 100644 index 97b2f9ac2..000000000 --- a/packages/oruga/src/components/menu/MenuItem.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OMenuItem from './MenuItem' - -let wrapper - -describe('OMenuItem', () => { - beforeEach(() => { - wrapper = shallowMount(OMenuItem) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('OMenuItem') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage onClick', () => { - wrapper.vm.reset = jest.fn() - - wrapper.setProps({disabled: true}) - wrapper.vm.onClick() - - wrapper.setProps({disabled: false}) - wrapper.vm.onClick() - - expect(wrapper.vm.reset).toHaveBeenCalledTimes(1) - expect(wrapper.vm.newExpanded).toBeTruthy() - expect(wrapper.emitted()['update:expanded'][0]).toContainEqual(true) - }) -}) diff --git a/packages/oruga/src/components/menu/MenuItem.vue b/packages/oruga/src/components/menu/MenuItem.vue deleted file mode 100644 index 6edcbd210..000000000 --- a/packages/oruga/src/components/menu/MenuItem.vue +++ /dev/null @@ -1,153 +0,0 @@ -<template> - <li - :role="ariaRoleMenu" - :class="wrapperClasses" - > - <component - :is="tag" - v-bind="$attrs" - :class="itemClasses" - @click="onClick()" - v-on="$listeners"> - <o-icon - v-if="icon" - :icon="icon" - :pack="iconPack" - :size="size" - /> - <span v-if="label"> {{ label }} </span> - <slot - v-else - name="label" - :expanded="newExpanded" - :active="newActive" - /> - </component> - <!-- sub menu items --> - <template v-if="$slots.default"> - <transition :name="animation"> - <ul - :class="submenuClasses" - v-show="newExpanded" - > - <slot /> - </ul> - </transition> - </template> - </li> -</template> - -<script> -import Icon from '../icon/Icon' -import BaseComponentMixin from '../../utils/BaseComponentMixin'; - -export default { - name: 'OMenuItem', - components: { - [Icon.name]: Icon - }, - mixins: [BaseComponentMixin], - configField: 'menu', - inheritAttrs: false, - props: { - label: String, - active: Boolean, - expanded: Boolean, - disabled: Boolean, - iconPack: String, - icon: String, - animation: { - type: String, - default: 'slide' - }, - tag: { - type: String, - default: 'a' - }, - ariaRole: { - type: String, - default: '' - }, - /** - * Icon size, optional - * @values small, medium, large - */ - size: String, - itemClass: [String, Array, Function], - itemActiveClass: [String, Array, Function], - itemDisabledClass: [String, Array, Function], - itemIconTextClass: [String, Array, Function], - itemSubmenuClass: [String, Array, Function], - itemWrapperClass: [String, Array, Function], - }, - data() { - return { - newActive: this.active, - newExpanded: this.expanded - } - }, - computed: { - ariaRoleMenu() { - return this.ariaRole === 'menuitem' ? this.ariaRole : null - }, - itemClasses() { - return { - [this.computedClass('itemClass', 'o-menu-item')]: true, - [this.computedClass('itemActiveClass', 'o-menu-item--active')]: this.newActive, - [this.computedClass('itemDisabledClass', 'o-menu-item--disabled')]: this.disabled, - [this.computedClass('itemIconTextClass', 'o-menu-item--icon-text')]: this.icon, - } - }, - submenuClasses() { - return this.computedClass('itemSubmenuClass', 'o-menu-item__submenu') - }, - wrapperClasses() { - return this.computedClass('itemWrapperClass', 'o-menu-item__wrapper') - }, - }, - watch: { - active(value) { - this.newActive = value - }, - expanded(value) { - this.newExpanded = value - } - }, - methods: { - onClick() { - if (this.disabled) return - const menu = this.getMenu() - this.reset(this.$parent, menu) - this.newExpanded = this.$props.expanded || !this.newExpanded - this.$emit('update:expanded', this.newExpanded) - if (menu && menu.activable) { - this.newActive = true - this.$emit('update:active', this.newActive) - } - }, - reset(parent, menu) { - const items = parent.$children.filter((c) => c.name === this.name) - items.forEach((item) => { - if (item !== this) { - this.reset(item, menu) - if (!parent.$data.isMenu || (parent.$data.isMenu && parent.accordion)) { - item.newExpanded = false - item.$emit('update:expanded', item.newActive) - } - if (menu && menu.activable) { - item.newActive = false - item.$emit('update:active', item.newActive) - } - } - }) - }, - getMenu() { - let parent = this.$parent - while (parent && !parent.$data.isMenu) { - parent = parent.$parent - } - return parent - } - } -} -</script> diff --git a/packages/oruga/src/components/menu/MenuList.spec.js b/packages/oruga/src/components/menu/MenuList.spec.js deleted file mode 100644 index 601d20817..000000000 --- a/packages/oruga/src/components/menu/MenuList.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -import { mount } from '@vue/test-utils' -import OMenuList from './MenuList' - -let wrapper - -describe('OMenuList', () => { - beforeEach(() => { - const Menu = { - components: { OMenuList }, - template: ` - <div> - <o-menu-list label="Test"> - </o-menu-list> - </div> - ` - } - wrapper = mount(Menu) - }) - - it('is called', () => { - expect(wrapper.findAll('.o-menu-label').at(0).text()).toBe('Test') - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('slot label', () => { - expect(wrapper.findAll('.o-menu-label').at(0).text()).toBe('Test') - }) -}) diff --git a/packages/oruga/src/components/menu/MenuList.vue b/packages/oruga/src/components/menu/MenuList.vue deleted file mode 100644 index 5a5cb7d6e..000000000 --- a/packages/oruga/src/components/menu/MenuList.vue +++ /dev/null @@ -1,60 +0,0 @@ -<template> - <div> - <div - v-if="label || $slots.label" - :class="labelClasses" - > - <o-icon - v-if="label && icon" - :icon="icon" - :pack="iconPack" - :size="size" - /> - <span v-if="label">{{ label }}</span> - <slot - v-else - name="label" - /> - </div> - <ul - :class="listClasses" - :role="computedAriaRole" - > - <slot /> - </ul> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin'; - -export default { - name: 'OMenuList', - configField: 'menu', - mixins: [BaseComponentMixin], - props: { - ariaRole: String, - label: String, - icon: String, - iconPack: String, - /** - * Icon size, optional - * @values small, medium, large - */ - size: String, - listClass: [String, Array, Function], - listLabelClass: [String, Array, Function], - }, - computed: { - listClasses() { - return this.computedClass('listClass', 'o-menu-list'); - }, - labelClasses() { - return this.computedClass('listLabelClass', 'o-menu-label'); - }, - computedAriaRole() { - return this.ariaRole === 'menu' ? this.ariaRole : null; - } - } -} -</script> diff --git a/packages/oruga/src/components/menu/__snapshots__/Menu.spec.js.snap b/packages/oruga/src/components/menu/__snapshots__/Menu.spec.js.snap deleted file mode 100644 index 42d79f742..000000000 --- a/packages/oruga/src/components/menu/__snapshots__/Menu.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`BMenu render correctly 1`] = `<div class="o-menu"></div>`; diff --git a/packages/oruga/src/components/menu/__snapshots__/MenuItem.spec.js.snap b/packages/oruga/src/components/menu/__snapshots__/MenuItem.spec.js.snap deleted file mode 100644 index 80f61a4e8..000000000 --- a/packages/oruga/src/components/menu/__snapshots__/MenuItem.spec.js.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OMenuItem render correctly 1`] = ` -<li><a class="o-menu-item"> - <!----> - </a> - <!----> -</li> -`; diff --git a/packages/oruga/src/components/menu/__snapshots__/MenuList.spec.js.snap b/packages/oruga/src/components/menu/__snapshots__/MenuList.spec.js.snap deleted file mode 100644 index 378ecb7ce..000000000 --- a/packages/oruga/src/components/menu/__snapshots__/MenuList.spec.js.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OMenuList render correctly 1`] = ` -<div> - <div> - <div class="o-menu-label"> - <!----> <span>Test</span> - </div> - <ul class="o-menu-list"></ul> - </div> -</div> -`; diff --git a/packages/oruga/src/components/menu/index.js b/packages/oruga/src/components/menu/index.js deleted file mode 100644 index 2c1f3e655..000000000 --- a/packages/oruga/src/components/menu/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import Menu from './Menu' -import MenuList from './MenuList' -import MenuItem from './MenuItem' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Menu) - registerComponent(Vue, MenuList) - registerComponent(Vue, MenuItem) - } -} - -use(Plugin) - -export default Plugin - -export { - Menu as OMenu, - MenuList as OMenuList, - MenuItem as OMenuItem -} diff --git a/packages/oruga/src/components/modal/Inspector.vue b/packages/oruga/src/components/modal/Inspector.vue deleted file mode 100644 index 864ec0c42..000000000 --- a/packages/oruga/src/components/modal/Inspector.vue +++ /dev/null @@ -1,69 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-modal v-bind="s" :active.sync="isImageModalActive"> - <p style="text-align: center"> - <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" /> - </p> - </o-modal> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - isImageModalActive: false, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "mobileClass", - description: "Class of modal component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "overlayClass", - description: "Class of the modal overlay", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "contentClass", - description: "Class of the modal content", - specificity: "when <b>mobileClass</b> is applied", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "closeClass", - description: "Class of the close button", - action: () => { - this.isImageModalActive = true; - } - }, - { - class: "fullScreenClass", - description: "Class of the modal when fullscreen", - properties: ['fullScreen'], - action: (cmp) => { - this.isImageModalActive = true; - cmp.data.fullScreen = true; - } - } - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/modal/Modal.spec.js b/packages/oruga/src/components/modal/Modal.spec.js deleted file mode 100644 index 972cf4de9..000000000 --- a/packages/oruga/src/components/modal/Modal.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OModal from '@components/modal/Modal' - -let wrapper - -describe('OModal', () => { - beforeEach(() => { - wrapper = shallowMount(OModal, { - propsData: { - active: true - }, - stubs: { - transition: false - } - }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage props validator', () => { - const ariaRole = wrapper.vm.$options.props.ariaRole - - expect(ariaRole.type).toBe(String) - expect(ariaRole.validator && ariaRole.validator('d')).toBeFalsy() - expect(ariaRole.validator && ariaRole.validator('dialog')).toBeTruthy() - expect(ariaRole.validator && ariaRole.validator('alertdialog')).toBeTruthy() - }) - - it('sets isActive when active prop is changed', async () => { - wrapper.setProps({active: false}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.isActive).toBeFalsy() - }) - - it('manage cancel options', () => { - wrapper.setProps({canCancel: true}) - expect(wrapper.vm.cancelOptions).toEqual(['escape', 'x', 'outside', 'button']) - - wrapper.setProps({canCancel: false}) - expect(wrapper.vm.cancelOptions).toEqual([]) - - const options = ['escape'] - wrapper.setProps({canCancel: options}) - expect(wrapper.vm.cancelOptions).toEqual(options) - - wrapper.vm.close = jest.fn(() => wrapper.vm.close) - wrapper.vm.cancel() - wrapper.vm.cancel('escape') - expect(wrapper.vm.close).toHaveBeenCalledTimes(1) - }) - - it('close on escape', () => { - wrapper.setProps({canCancel: true}) - wrapper.setProps({active: true}) - wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel) - const event = new KeyboardEvent('keyup', {'key': 'Escape'}) - wrapper.vm.keyPress({}) - wrapper.vm.keyPress(event) - expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1) - }) - - it('emit events on close', (done) => { - wrapper.vm.$destroy = jest.fn(() => wrapper.vm.$destroy) - wrapper.vm.close() - expect(wrapper.emitted()['close']).toBeTruthy() - expect(wrapper.emitted()['update:active']).toBeTruthy() - - wrapper.setProps({programmatic: true}) - wrapper.vm.close() - expect(wrapper.vm.isActive).toBeFalsy() - - window.requestAnimationFrame(() => { - expect(wrapper.vm.$destroy).toHaveBeenCalled() - done() - }, 150) - - }) -}) diff --git a/packages/oruga/src/components/modal/Modal.vue b/packages/oruga/src/components/modal/Modal.vue deleted file mode 100644 index 0aacb6fae..000000000 --- a/packages/oruga/src/components/modal/Modal.vue +++ /dev/null @@ -1,386 +0,0 @@ -<template> - <transition - :name="animation" - @after-enter="afterEnter" - @before-leave="beforeLeave" - @after-leave="afterLeave" - > - <div - v-if="!destroyed" - v-show="isActive" - :class="rootClasses" - v-trap-focus="trapFocus" - tabindex="-1" - :role="ariaRole" - :aria-label="ariaLabel" - :aria-modal="ariaModal"> - <div :class="overlayClasses" @click="cancel('outside')"/> - <div - :class="contentClasses" - :style="customStyle"> - <component - v-if="component" - v-bind="props" - v-on="events" - :is="component" - @close="close"/> - <div v-else-if="content"> {{ content }} </div> - <slot v-else/> - <o-icon - v-if="showX" - v-show="!animating" - clickable - both - :class="closeClasses" - :icon="closeIcon" - :size="closeIconSize" - @click.native="cancel('x')"/> - </div> - </div> - </transition> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import trapFocus from '../../directives/trapFocus' -import { removeElement, getValueByPath, toCssDimension, promiseObject } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -import Icon from '../icon/Icon' - -/** - * Classic modal overlay to include any content you may need - * @displayName Modal - * @example ./examples/Modal.md - * @style _modal.scss - */ -export default { - name: 'OModal', - components: { - [Icon.name]: Icon - }, - configField: 'modal', - directives: { - trapFocus - }, - mixins: [BaseComponentMixin, MatchMediaMixin], - props: { - /** Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */ - active: Boolean, - /** Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ this.$emit('close') */ - component: [Object, Function], - /** Text content */ - content: String, - /** @ignore */ - programmatic: Object, - /** @ignore */ - promise: promiseObject(), - /** Props to be binded to the injected component */ - props: Object, - /** Events to be binded to the injected component */ - events: Object, - /** Width of the Modal */ - width: { - type: [String, Number], - default: () => { - return getValueByPath(getOptions(), 'modal.width', 960) - } - }, - /** Custom animation (transition name) */ - animation: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'modal.animation', 'zoom-out') - } - }, - /** - * Can close Modal by clicking 'X', pressing escape or clicking outside - * @values escape, x, outside, button - */ - canCancel: { - type: [Array, Boolean], - default: () => { - return getValueByPath(getOptions(), 'modal.canCancel', ['escape', 'x', 'outside', 'button']) - } - }, - /** Callback function to call after user canceled (clicked 'X' / pressed escape / clicked outside) */ - onCancel: { - type: Function, - default: () => {} - }, - /** Callback function to call after close (programmatically close or user canceled) */ - onClose: { - type: Function, - default: () => {} - }, - /** - * clip to remove the body scrollbar, keep to have a non scrollable scrollbar to avoid shifting background, but will set body to position fixed, might break some layouts - * @values keep, clip - */ - scroll: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'modal.scroll', 'keep') - } - }, - /** Display modal as full screen */ - fullScreen: Boolean, - /** Trap focus inside the modal. */ - trapFocus: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'modal.trapFocus', true) - } - }, - ariaRole: { - type: String, - validator: (value) => { - return [ 'dialog', 'alertdialog' ].indexOf(value) >= 0 - } - }, - ariaModal: Boolean, - ariaLabel: String, - /** Destroy modal on hide */ - destroyOnHide: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'modal.destroyOnHide', true) - } - }, - /** Automatically focus modal when active */ - autoFocus: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'modal.autoFocus', true) - } - }, - /** Icon name */ - closeIcon: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'modal.closeIcon', 'close') - } - }, - closeIconSize: { - type: String, - default: 'medium' - }, - rootClass: [String, Function, Array], - overlayClass: [String, Function, Array], - contentClass: [String, Function, Array], - closeClass: [String, Function, Array], - fullScreenClass: [String, Function, Array], - mobileClass: [String, Function, Array], - scrollClipClass: [String, Function, Array], - noScrollClass: [String, Function, Array] - }, - data() { - return { - isActive: this.active || false, - savedScrollTop: null, - newWidth: toCssDimension(this.width), - animating: !this.active, - destroyed: !this.active - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-modal'), - { [this.computedClass('mobileClass', 'o-modal--mobile')]: this.isMatchMedia }, - ] - }, - overlayClasses() { - return [ - this.computedClass('overlayClass', 'o-modal__overlay') - ] - }, - contentClasses() { - return [ - this.computedClass('contentClass', 'o-modal__content'), - { [this.computedClass('fullScreenClass', 'o-modal__content--full-screen')]: this.fullScreen } - ] - }, - closeClasses() { - return [ - this.computedClass('closeClass', 'o-modal__close') - ] - }, - scrollClass() { - if (this.scroll === 'clip') { - return this.computedClass('scrollClipClass', 'o-clipped') - } - return this.computedClass('noScrollClass', 'o-noscroll') - }, - cancelOptions() { - return typeof this.canCancel === 'boolean' - ? this.canCancel - ? getValueByPath(getOptions(), 'modal.canCancel', ['escape', 'x', 'outside', 'button']) - : [] - : this.canCancel - }, - showX() { - return this.cancelOptions.indexOf('x') >= 0 - }, - customStyle() { - if (!this.fullScreen) { - return { maxWidth: this.newWidth } - } - return null - } - }, - watch: { - active(value) { - this.isActive = value - }, - isActive(value) { - if (value) this.destroyed = false - this.handleScroll() - this.$nextTick(() => { - if (value && this.$el && this.$el.focus && this.autoFocus) { - this.$el.focus() - } - }) - } - }, - methods: { - handleScroll() { - if (typeof window === 'undefined') return - - if (this.scroll === 'clip') { - if (this.scrollClass) { - if (this.isActive) { - document.documentElement.classList.add(this.scrollClass) - } else { - document.documentElement.classList.remove(this.scrollClass) - } - return - } - } - - this.savedScrollTop = !this.savedScrollTop - ? document.documentElement.scrollTop - : this.savedScrollTop - - if (this.scrollClass) { - if (this.isActive) { - document.body.classList.add(this.scrollClass) - } else { - document.body.classList.remove(this.scrollClass) - } - } - - if (this.isActive) { - document.body.style.top = `-${this.savedScrollTop}px` - return - } - - document.documentElement.scrollTop = this.savedScrollTop - document.body.style.top = null - this.savedScrollTop = null - }, - - /** - * Close the Modal if canCancel and call the onCancel prop (function). - */ - cancel(method) { - if (this.cancelOptions.indexOf(method) < 0) return - - this.onCancel.apply(null, arguments) - this.close({action: 'cancel', method}); - }, - - /** - * Call the onCancel prop (function). - * Emit events, and destroy modal if it's programmatic. - */ - close() { - this.isActive = false - this.$emit('close') - this.$emit('update:active', false) - this.onClose.apply(null, arguments) - - // Waiting for the animation complete before destroying - if (this.programmatic) { - if (this.programmatic.instances) { - this.programmatic.instances.remove(this) - } - if (this.programmatic.resolve) { - this.programmatic.resolve.apply(null, arguments) - } - - window.requestAnimationFrame(() => { - this.$destroy() - removeElement(this.$el) - }) - } - }, - - /** - * Keypress event that is bound to the document. - */ - keyPress({ key }) { - if (this.isActive && (key === 'Escape' || key === 'Esc')) this.cancel('escape') - }, - - /** - * Transition after-enter hook - */ - afterEnter() { - this.animating = false - }, - - /** - * Transition before-leave hook - */ - beforeLeave() { - this.animating = true - }, - - /** - * Transition after-leave hook - */ - afterLeave() { - if (this.destroyOnHide) { - this.destroyed = true - } - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('keyup', this.keyPress) - } - }, - beforeMount() { - // Insert the Modal component in body tag - // only if it's programmatic - this.programmatic && document.body.appendChild(this.$el) - }, - mounted() { - if (this.programmatic) { - if (this.programmatic.instances) { - this.programmatic.instances.add(this) - } - this.isActive = true - } - else if (this.isActive) this.handleScroll() - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('keyup', this.keyPress) - // reset scroll - const savedScrollTop = !this.savedScrollTop - ? document.documentElement.scrollTop - : this.savedScrollTop - if (this.scrollClass) { - document.body.classList.remove(this.scrollClass) - document.documentElement.classList.remove(this.scrollClass) - } - document.documentElement.scrollTop = savedScrollTop - document.body.style.top = null - } - } -} -</script> diff --git a/packages/oruga/src/components/modal/__snapshots__/Modal.spec.js.snap b/packages/oruga/src/components/modal/__snapshots__/Modal.spec.js.snap deleted file mode 100644 index bcecd1968..000000000 --- a/packages/oruga/src/components/modal/__snapshots__/Modal.spec.js.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OModal render correctly 1`] = ` -<transition-stub name="zoom-out"> - <div tabindex="-1" class="o-modal"> - <div class="o-modal__overlay"></div> - <div class="o-modal__content" style="max-width: 960px;"> - <o-icon-stub icon="close" size="medium" clickable="true" both="true" class="o-modal__close"></o-icon-stub> - </div> - </div> -</transition-stub> -`; diff --git a/packages/oruga/src/components/modal/examples/Modal.md b/packages/oruga/src/components/modal/examples/Modal.md deleted file mode 100644 index 61f1c4122..000000000 --- a/packages/oruga/src/components/modal/examples/Modal.md +++ /dev/null @@ -1,365 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <div class="buttons"> - <o-button size="medium" variant="primary" - @click="isImageModalActive = true"> - Open modal - </o-button> - <o-button size="medium" variant="primary" - @click="isCardModalActive = true"> - Open modal (clip scroll) - </o-button> - </div> - - <o-modal :active.sync="isImageModalActive"> - <p style="text-align: center"> - <img src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4"> - </p> - </o-modal> - - <o-modal :active.sync="isCardModalActive" :width="640" scroll="clip"> - <p> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sodales leo nec convallis rutrum. Vivamus pharetra molestie arcu at dictum. Nulla faucibus leo eget enim egestas, in tempus justo venenatis. Duis dictum suscipit erat, a dapibus eros lobortis ac. Praesent tempor rhoncus convallis. Nullam in ipsum convallis, rutrum elit eget, dictum ipsum. Nunc sagittis aliquet massa. Etiam lacus sapien, eleifend non eros quis, finibus ornare nisl. Ut laoreet sit amet lacus non dignissim. Sed convallis mattis enim, sed interdum risus molestie ut. Praesent vel ex hendrerit, cursus lectus a, blandit felis. Nam luctus orci nec varius commodo. - </p> - <p> - Sed vulputate metus purus, ut egestas erat congue et. Donec tellus orci, malesuada eget dolor sed, pellentesque bibendum nunc. In eu egestas diam. Integer sed congue massa. Sed a urna quam. Morbi vulputate dolor eleifend ligula lobortis venenatis. Aenean pellentesque risus sit amet faucibus molestie. Aliquam eu lorem aliquet, aliquam nulla in, vestibulum lorem. Donec mollis mi at sollicitudin tristique. Nullam id nibh pulvinar, dignissim nisl id, gravida risus. Nulla arcu elit, scelerisque in sollicitudin et, laoreet et metus. Aenean placerat turpis nec tincidunt tempus. - </p> - </o-modal> - </section> -</template> - -<script> - export default { - data() { - return { - isImageModalActive: false, - isCardModalActive: false - } - } - } -</script> -``` -::: - -### Programmatically - -::: demo -```html -<template> - <section> - <div class="buttons"> - <o-button size="medium" variant="primary" - @click="imageModal()"> - Open modal (HTML) - </o-button> - <o-button size="medium" variant="primary" - @click="cardModal()"> - Open modal (Component) - </o-button> - </div> - </section> -</template> - -<script> - const ModalForm = { - props: ['email', 'password'], - template: ` - <form action=""> - <div class="modal-card" style="width: auto"> - <header class="modal-card-head"> - <p class="modal-card-title">Login</p> - <o-icon - clickable - native-type="button" - icon="times" - @click.native="$emit('close')"/> - </header> - <section class="modal-card-body"> - <o-field label="Email"> - <o-input - type="email" - :value="email" - placeholder="Your email" - required> - </o-input> - </o-field> - - <o-field label="Password"> - <o-input - type="password" - :value="password" - password-reveal - placeholder="Your password" - required> - </o-input> - </o-field> - - <o-field> - <o-checkbox>Remember me</o-checkbox> - </o-field> - </section> - <footer class="modal-card-foot"> - <o-button type="button" @click="$emit('close')">Close</o-button> - <o-button variant="primary">Login</o-button> - </footer> - </div> - </form> - ` - } - - export default { - methods: { - imageModal() { - const h = this.$createElement - const vnode = h('p', { style: { 'text-align': 'center' }}, [ - h('img', { attrs: { src: 'https://avatars2.githubusercontent.com/u/66300512?s=200&v=4' }}) - ]) - this.$oruga.modal.open({ - content: [ vnode ] - }) - }, - cardModal() { - this.$oruga.modal.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: ModalForm, - trapFocus: true - }) - } - } - } -</script> - -<style> -.modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; -} -@media screen and (min-width: 769px) { - .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; - } -} -.modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; -} -.modal-card-foot, .modal-card-head { - align-items: center; - background-color: #f5f5f5; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; -} -.modal-card-head { - border-bottom: 1px solid #dbdbdb; - border-top-left-radius: 6px; - border-top-right-radius: 6px; -} -.modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: #fff; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; -} -.modal-card-foot { - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; -} -.modal-card-title { - color: #363636; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; - margin: 0; -} -.modal-card-foot .o-button:not(:last-child) { - margin-right: .5em; -} -</style> -``` -::: - -### Programmatically (with promises and async/await) - -::: demo -```html -<template> - <section> - <div class="buttons"> - <o-button size="medium" variant="primary" - @click="promptModal()"> - Open prompt - </o-button> - <o-button size="medium" variant="primary" - @click="promptModalCloseAll()"> - Open prompt (closeAll timeout) - </o-button> - </div> - </section> -</template> - -<script> - const ModalForm = { - props: ['message', 'title'], - template: ` - <form action=""> - <div class="modal-card" style="width: auto"> - <header class="modal-card-head"> - <p class="modal-card-title">{{ title }}</p> - <o-icon - clickable - native-type="button" - icon="times" - @click.native="$emit('close', {action: 'cancel', method: 'x'})"/> - </header> - <section class="modal-card-body"> - <p>{{ message }}</p> - </section> - <footer class="modal-card-foot"> - <o-button @click="$emit('close', {action: 'no'})">No</o-button> - <o-button variant="primary" @click="$emit('close', {action: 'yes'})">Yes</o-button> - </footer> - </div> - </form> - `, - } - - export default { - methods: { - async promptModal() { - const instance = this.$oruga.modal.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: ModalForm, - props: { - title: 'Ship sprockets?', - message: 'Do you really want me to ship the selected sprockets?' - }, - trapFocus: true - }) - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const result = await instance.promise - - this.$oruga.notification.open({ - duration: 5000, - message: 'Modal dialog returned ' + JSON.stringify(result), - variant: 'info', - position: 'top', - closable: true - }) - }, - async promptModalCloseAll() { - const instance = this.$oruga.modal.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: ModalForm, - props: { - title: 'Close All test', - message: 'There is a 3 second timeout that will close all programmatic modals' - }, - trapFocus: true - }) - - setTimeout(() => this.$oruga.modal.closeAll({action:'closeAll'}), 3 * 1000) - - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const result = await instance.promise - - this.$oruga.notification.open({ - duration: 5000, - message: 'Modal dialog returned ' + JSON.stringify(result), - variant: 'info', - position: 'top', - closable: true - }) - }, - } - } -</script> - -<style> -.modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; -} -@media screen and (min-width: 769px) { - .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; - } -} -.modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; -} -.modal-card-foot, .modal-card-head { - align-items: center; - background-color: #f5f5f5; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; -} -.modal-card-head { - border-bottom: 1px solid #dbdbdb; - border-top-left-radius: 6px; - border-top-right-radius: 6px; -} -.modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: #fff; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; -} -.modal-card-foot { - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; -} -.modal-card-title { - color: #363636; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; - margin: 0; -} -.modal-card-foot .o-button:not(:last-child) { - margin-right: .5em; -} -</style> -``` -::: diff --git a/packages/oruga/src/components/modal/index.js b/packages/oruga/src/components/modal/index.js deleted file mode 100644 index 9407faa65..000000000 --- a/packages/oruga/src/components/modal/index.js +++ /dev/null @@ -1,76 +0,0 @@ -import Modal from './Modal' - -import { VueInstance } from '../../utils/config' -import { merge } from '../../utils/helpers' -import { use, registerComponent, registerComponentProgrammatic } from '../../utils/plugins' -import InstanceRegistry from '../../utils/InstanceRegistry' - -let localVueInstance - -let instances = new InstanceRegistry() - -const ModalProgrammatic = { - open(params) { - let parent - if (typeof params === 'string') { - params = { - content: params - } - } - - const defaultParam = { - programmatic: { instances } - } - if (params.parent) { - parent = params.parent - delete params.parent - } - let slot - if (Array.isArray(params.content)) { - slot = params.content - delete params.content - } - const propsData = merge(defaultParam, params) - - if (window.Promise) { - propsData.promise = new Promise((p1, p2) => { - propsData.programmatic.resolve = p1 - propsData.programmatic.reject = p2 - }) - } - - const vm = typeof window !== 'undefined' && window.Vue ? window.Vue : localVueInstance || VueInstance - const ModalComponent = vm.extend(Modal) - const instance = new ModalComponent({ - parent, - el: document.createElement('div'), - propsData - }) - if (slot) { - instance.$slots.default = slot - } - return instance - }, - closeAll() { - instances.walk((entry) => { - entry.close(...arguments) - }) - } -} - -const Plugin = { - install(Vue) { - localVueInstance = Vue - registerComponent(Vue, Modal) - registerComponentProgrammatic(Vue, 'modal', ModalProgrammatic) - } -} - -use(Plugin) - -export default Plugin - -export { - ModalProgrammatic, - Modal as OModal -} diff --git a/packages/oruga/src/components/notification/Inspector.vue b/packages/oruga/src/components/notification/Inspector.vue deleted file mode 100644 index cd27e8bf1..000000000 --- a/packages/oruga/src/components/notification/Inspector.vue +++ /dev/null @@ -1,84 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-notification v-bind="s"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "noticeClass", - description: "Root class of the notice", - nospec: true - }, - { - class: "noticePositionClass", - description: "Class of the notice when positioned", - properties: ["position"], - suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'], - action: (cmp) => { - cmp.data.position = 'top-right'; - }, - nospec: true - }, - { - class: "rootClass", - description: "Class of the root element" - }, - { - class: "closeClass", - description: "Class of the close button container", - properties: ["closable"], - action: (cmp) => { - cmp.data.closable = true; - }, - }, - { - class: "contentClass", - description: "Class of the content element" - }, - { - class: "iconClass", - description: "Class of the icon on the left", - properties: ["type"], - action: (cmp) => { - cmp.data.type = 'info'; - }, - }, - { - class: "positionClass", - description: "Class of the element when positioned", - properties: ["position"], - suffixes: ['top-right', 'top', 'top-left', 'bottom-right', 'bottom', 'bottom-left'], - action: (cmp) => { - cmp.data.position = 'top-right'; - }, - }, - { - class: "wrapperClass", - description: "Class of the wrapper element" - }, - { - class: "variantClass", - description: "Class of the notification variant", - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - }, - }, - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/notification/Notification.spec.js b/packages/oruga/src/components/notification/Notification.spec.js deleted file mode 100644 index d613b296c..000000000 --- a/packages/oruga/src/components/notification/Notification.spec.js +++ /dev/null @@ -1,19 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ONotification from '@components/notification/Notification' - -let wrapper - -describe('ONotification', () => { - beforeEach(() => { - wrapper = shallowMount(ONotification) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('ONotification') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/notification/Notification.vue b/packages/oruga/src/components/notification/Notification.vue deleted file mode 100644 index 89d730107..000000000 --- a/packages/oruga/src/components/notification/Notification.vue +++ /dev/null @@ -1,145 +0,0 @@ -<template> - <transition :name="animation"> - <article - v-show="isActive" - :class="rootClasses"> - <button - v-if="closable" - :class="closeClasses" - type="button" - @click="close({action: 'close', method: 'x'})" - :aria-label="ariaCloseLabel" - > - <o-icon - clickable - :pack="iconPack" - both - :icon="closeIcon" - :size="closeIconSize"/> - </button> - <component - v-if="component" - v-bind="props" - v-on="events" - :is="component" - @close="close"/> - <div :class="wrapperClasses" v-if="$scopedSlots.default || message"> - <o-icon - :icon="computedIcon" - :pack="iconPack" - v-if="computedIcon" - :class="iconClasses" - both - :size="iconSize" - aria-hidden/> - <div :class="contentClasses"> - <template v-if="$scopedSlots.default"> - <slot v-bind:closeNotification="close" /> - </template> - <template v-else> - <span v-html="message" /> - </template> - </div> - </div> - </article> - </transition> -</template> - -<script> -import MessageMixin from '../../utils/MessageMixin.js' -import BaseComponentMixin from '../../utils/BaseComponentMixin.js' -import { getValueByPath } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -/** - * Bold notification blocks to alert your users of something - * @displayName Notification/Toast - * @requires ./NotificationNotice.vue - * @example ./examples/Notification.md - * @style _notification.scss - */ -export default { - name: 'ONotification', - configField: 'notification', - mixins: [BaseComponentMixin, MessageMixin], - props: { - /** - * Which position the notification will appear when programmatically - * @values top-right, top, top-left, bottom-right, bottom, bottom-left - */ - position: String, - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: [String, Object], - /** - * Label for the close button, to be read by accessibility screenreaders. - */ - ariaCloseLabel: String, - /** - * Size of close icon - */ - closeIconSize: { - type: String, - default: 'small' - }, - /** - * Custom animation (transition name). - */ - animation: { - type: String, - default: 'fade' - }, - /** Component to be injected, used to open a component modal programmatically. Close modal within the component by emitting a 'close' event โ this.$emit('close') */ - component: [Object, Function], - /** Props to be binded to the injected component */ - props: Object, - /** Events to be binded to the injected component */ - events: Object, - /** Close icon name */ - closeIcon: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'notification.closeIcon', 'close') - } - }, - rootClass: [String, Function, Array], - closeClass: [String, Function, Array], - contentClass: [String, Function, Array], - iconClass: [String, Function, Array], - positionClass: [String, Function, Array], - variantClass: [String, Function, Array], - wrapperClass: [String, Function, Array], - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-notification'), - { [this.computedClass('variantClass', 'o-notification--', this.variant)]: this.variant }, - { [this.computedClass('positionClass', 'o-notification--', this.position)]: this.position }, - ] - }, - wrapperClasses() { - return [ - this.computedClass('wrapperClass', 'o-notification__wrapper') - ] - }, - iconClasses() { - return [ - this.computedClass('iconClass', 'o-notification__icon') - ] - }, - contentClasses() { - return [ - this.computedClass('contentClass', 'o-notification__content') - ] - }, - closeClasses() { - return [ - this.computedClass('closeClass', 'o-notification__close') - ] - }, - }, -} -</script> diff --git a/packages/oruga/src/components/notification/NotificationNotice.vue b/packages/oruga/src/components/notification/NotificationNotice.vue deleted file mode 100644 index a938416ac..000000000 --- a/packages/oruga/src/components/notification/NotificationNotice.vue +++ /dev/null @@ -1,47 +0,0 @@ -<template> - <o-notification - v-bind="$options.propsData" - ref="notification" - @close="close"> - <slot /> - </o-notification> -</template> - -<script> -import NoticeMixin from '../../utils/NoticeMixin.js' -import BaseComponentMixin from '../../utils/BaseComponentMixin.js' - -/** - * @displayName Notification Notice - */ -export default { - name: 'ONotificationNotice', - configField: 'notification', - mixins: [BaseComponentMixin, NoticeMixin], - props: { - noticeClass: [String, Function, Array], - noticePositionClass: [String, Function, Array], - noticeCustomContainerClass: [String, Function, Array], - }, - methods: { - rootClasses() { - return [ - this.computedClass('noticeClass', 'o-notices'), - ] - }, - positionClasses(position) { - return [ - this.computedClass('noticePositionClass', 'o-notices--', position), - ] - }, - noticeCustomContainerClasses() { - return [ - this.computedClass('noticeCustomContainerClass', 'o-notices__custom-container') - ] - }, - timeoutCallback() { - return this.$refs.notification.close({action: 'close', method: 'timeout'}) - } - } -} -</script> diff --git a/packages/oruga/src/components/notification/__snapshots__/Notification.spec.js.snap b/packages/oruga/src/components/notification/__snapshots__/Notification.spec.js.snap deleted file mode 100644 index 1e23caa4b..000000000 --- a/packages/oruga/src/components/notification/__snapshots__/Notification.spec.js.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ONotification render correctly 1`] = ` -<transition-stub name="fade"> - <article class="o-notification"> - <!----> - <!----> - <!----> - </article> -</transition-stub> -`; diff --git a/packages/oruga/src/components/notification/examples/Notification.md b/packages/oruga/src/components/notification/examples/Notification.md deleted file mode 100644 index 774460614..000000000 --- a/packages/oruga/src/components/notification/examples/Notification.md +++ /dev/null @@ -1,287 +0,0 @@ -## Examples - -### Programmatically opening - -Go to [Notification Notice](#notification-notice) section to see all the available options. - -::: demo -```html -<template> - <section> - <div class="buttons"> - <o-button - label="Launch notification (default)" - size="medium" - @click="simple" /> - <o-button - label="Launch notification (custom)" - variant="success" - size="medium" - @click="success" /> - <hr/> - <o-button - label="Launch toast" - size="medium" - @click="toast" /> - <o-button - label="Launch toast (queued)" - variant="success" - size="medium" - @click="queueToast" /> - <hr/> - <o-button - label="Launch notification (custom)" - variant="danger" - size="medium" - @click="danger" /> - <o-button - label="Launch notification (component)" - variant="warning" - size="medium" - @click="component" /> - <hr/> - <o-button - label="Launch with promise" - size="medium" - @click="promise" /> - <o-button - label="Launch indefinite" - size="medium" - @click="indefinite" /> - <o-button - label="Close all open" - size="medium" - @click="closeAll" /> - </div> - </section> -</template> - -<script> - const NotificationForm = { - props: ['email', 'password'], - template: ` - <form action=""> - <div class="modal-card" style="width: auto"> - <header class="modal-card-head"> - <p class="modal-card-title">Login</p> - </header> - <section class="modal-card-body"> - <o-field label="Email"> - <o-input - type="email" - :value="email" - placeholder="Your email" - required> - </o-input> - </o-field> - - <o-field label="Password"> - <o-input - type="password" - :value="password" - password-reveal - placeholder="Your password" - required> - </o-input> - </o-field> - - <o-field> - <o-checkbox>Remember me</o-checkbox> - </o-field> - </section> - <footer class="modal-card-foot"> - <o-button type="button" @click="$emit('close')">Close</o-button> - <o-button variant="primary">Login</o-button> - </footer> - </div> - </form> - ` - } - export default { - methods: { - simple() { - this.$oruga.notification.open('Something happened') - }, - success() { - this.$oruga.notification.open({ - message: 'Something happened correctly!', - variant: 'success', - closable: true - }) - }, - toast() { - this.$oruga.notification.open({ - message: 'Something happened correctly!', - rootClass: 'toast-notification', - position: 'top' - }) - }, - queueToast() { - this.$oruga.notification.open({ - message: 'Something happened correctly!', - rootClass: 'toast-notification', - position: 'top', - queue: true - }) - }, - danger() { - const notif = this.$oruga.notification.open({ - duration: 5000, - message: `Something's not good, also I'm on <b>bottom</b>`, - position: 'bottom-right', - variant: 'danger', - closable: true, - onClose: () => { - this.$oruga.notification.open('Custom notification closed!') - } - }) - }, - component() { - this.$oruga.notification.open({ - // parent is only for Vue2. in Vue 3 omit this option - parent: this, - component: NotificationForm, - position: 'bottom-right', - variant: 'warning', - indefinite: true - }) - }, - async promise() { - const instance = this.$oruga.notification.open({ - message: 'Notification with promise response. The promise returns how the notification was closed. (value from $emit(\'close\', value)', - position: 'top', - variant: 'info', - duration: 5000, - closable: true - }) - - // Note utilizing the promise requires Promise be supported by the browser - // If you are running Vue 2 on IE 11 this will not be the case unless you - // add a polyfill in your build. - const ret = await instance.promise; - - this.$oruga.notification.open({ - message: 'Notification was resolved with ' + JSON.stringify(ret), - position: 'top', - variant: 'success', - duration: 2000, - }) - }, - indefinite() { - this.$oruga.notification.open({ - message: 'Indefinite sticky notification', - closable: true, - indefinite: true - }) - }, - closeAll() { - // any parameter here is passed to the onClose handler and resolved to the promise - // for each open notification - this.$oruga.notification.closeAll({action: 'closeAll'}); - } - } - } -</script> -<style> -.toast-notification { - margin: .5em 0; - text-align: center; - box-shadow: 0 1px 4px rgb(0 0 0 / 12%), 0 0 6px rgb(0 0 0 / 4%); - border-radius: 2em; - padding: .75em 1.5em; - pointer-events: auto; - color: rgba(0,0,0,.7); - background: #ffdd57; -} -</style> -``` -::: - -### Base - -::: demo -```html -<template> - <section> - <o-notification closable aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification closable variant="info" aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification closable variant="success" aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification - closable - variant="warning" - aria-close-label="Close notification" - role="alert"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - <o-notification - closable - variant="danger" - aria-close-label="Close notification" - role="alert"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - </section> -</template> -<script> - export default { - } -</script> -``` -::: - -### Use types - -::: demo -```html -<template> - <section> - <o-notification - closable - type="info" - variant="info" - aria-close-label="Close notification"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit - </o-notification> - </section> -</template> -<script> - export default { - } -</script> -``` -::: - -### Add custom buttons - -::: demo -```html -<template> - <section> - <o-notification aria-close-label="Close notification" v-slot="{closeNotification}"> - <div class="notification-content"> - <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id fermentum quam. Proin sagittis, nibh id hendrerit imperdiet, elit sapien laoreet elit</span> - <o-button - label="Cancel" - size="small" - @click="closeNotification"/> - </div> - </o-notification> - </section> -</template> -<script> - export default { - } -</script> -<style> - .notification-content { - display: flex; - } -</style> -``` -::: diff --git a/packages/oruga/src/components/notification/index.js b/packages/oruga/src/components/notification/index.js deleted file mode 100644 index ce3b86982..000000000 --- a/packages/oruga/src/components/notification/index.js +++ /dev/null @@ -1,84 +0,0 @@ -import Notification from './Notification' -import NotificationNotice from './NotificationNotice' - -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' -import { merge } from '../../utils/helpers' -import { VueInstance } from '../../utils/config' -import { use, registerComponent, registerComponentProgrammatic } from '../../utils/plugins' -import InstanceRegistry from "../../utils/InstanceRegistry" - -let localVueInstance - -let instances = new InstanceRegistry() - -const NotificationProgrammatic = { - open(params) { - let parent - if (typeof params === 'string') { - params = { - message: params - } - } - - const defaultParam = { - programmatic: { instances }, - position: getValueByPath(getOptions(), 'notification.position', 'top-right'), - closable: params.closable || getValueByPath(getOptions(), 'notification.closable', false) - } - if (params.parent) { - parent = params.parent - delete params.parent - } - let slot - if (Array.isArray(params.message)) { - slot = params.message - delete params.message - } - // fix animation - params.active = false - const propsData = merge(defaultParam, params) - if (window.Promise) { - propsData.promise = new Promise((p1, p2) => { - propsData.programmatic.resolve = p1 - propsData.programmatic.reject = p2 - }) - } - const vm = typeof window !== 'undefined' && window.Vue ? window.Vue : localVueInstance || VueInstance - const NotificationNoticeComponent = vm.extend(NotificationNotice) - const component = new NotificationNoticeComponent({ - parent, - el: document.createElement('div'), - propsData - }) - if (slot) { - component.$slots.default = slot - component.$forceUpdate() - } - // fix animation - component.$children[0].isActive = true - return component - }, - closeAll() { - instances.walk((entry) => { - entry.close(...arguments) - }) - } -} - -const Plugin = { - install(Vue) { - localVueInstance = Vue - registerComponent(Vue, Notification) - registerComponentProgrammatic(Vue, 'notification', NotificationProgrammatic) - } -} - -use(Plugin) - -export default Plugin - -export { - Notification as ONotification, - NotificationProgrammatic, -} diff --git a/packages/oruga/src/components/pagination/Inspector.vue b/packages/oruga/src/components/pagination/Inspector.vue deleted file mode 100644 index 09a52abf2..000000000 --- a/packages/oruga/src/components/pagination/Inspector.vue +++ /dev/null @@ -1,127 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-pagination - v-bind='s' - :total="total" - :current.sync="current" - :range-before="rangeBefore" - :range-after="rangeAfter" - :per-page="perPage" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - icon-prev='chevron-left' - icon-next='chevron-right' - > - </o-pagination> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - total: 200, - current: 10, - perPage: 10, - rangeBefore: 3, - rangeAfter: 1, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "mobileClass", - description: "Class of pagination component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "prevBtnClass", - description: "Class of the prev. button", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "nextBtnClass", - description: "Class of the next button", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "listClass", - description: "Class of the pagination list", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "linkClass", - description: "Class of the link button", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "linkCurrentClass", - description: "Class of the current link", - }, - { - class: "ellipsisClass", - description: "Class of the pagination ellipsis ", - specificity: "when <b>mobileClass</b> is applied", - }, - { - class: "infoClass", - description: "Class of the info in `simple` mode", - properties: ['simple'], - action: (cmp) => { - cmp.data.simple = true; - } - }, - { - class: "orderClass", - description: "Class of the pagination order", - properties: ['order'], - suffixes: ['centered', 'right', 'left'], - action: (cmp) => { - cmp.data.order = 'centered'; - } - }, - { - class: "simpleClass", - description: "Class of the pagination in `simple` mode", - properties: ['simple'], - action: (cmp) => { - cmp.data.simple = true; - } - }, - { - class: "roundedClass", - description: "Class of the pagination when rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - } - }, - { - class: "linkDisabledClass", - description: "Class of the disabled link", - action: () => { - this.current = 20; - } - }, - { - class: "sizeClass", - description: "Class for the pagination size", - properties: ['size'], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'small'; - } - } - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/pagination/Pagination.spec.js b/packages/oruga/src/components/pagination/Pagination.spec.js deleted file mode 100644 index e8364c4c1..000000000 --- a/packages/oruga/src/components/pagination/Pagination.spec.js +++ /dev/null @@ -1,86 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OPagination from '@components/pagination/Pagination' - -let wrapper - -describe('OPagination', () => { - beforeEach(() => { - wrapper = shallowMount(OPagination) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('returns 1 for default firstItem', () => { - expect(wrapper.vm.firstItem).toEqual(1) - }) - - it('returns firstItem accordingly', () => { - wrapper.setProps({current: 0}) - expect(wrapper.vm.firstItem).toEqual(0) - - wrapper.setProps({current: 5}) - const expected = wrapper.vm.current * wrapper.vm.perPage - wrapper.vm.perPage + 1 - expect(wrapper.vm.firstItem).toEqual(expected) - }) - - it('should emit change with value of 1 when calling first', () => { - wrapper.setProps({current: 1}) - wrapper.vm.first() - - wrapper.setProps({current: 5}) - wrapper.vm.first() - expect(wrapper.emitted()['change'][0]).toContainEqual(1) - expect(wrapper.emitted()['update:current'][0]).toContainEqual(1) - }) - - it('should emit change with value of pageCount when calling last', (done) => { - const event = { - target: { - focus: jest.fn() - } - } - - wrapper.setProps({current: 5}) - wrapper.vm.last(event) - expect(wrapper.emitted()['change'][0]).toContainEqual(wrapper.vm.pageCount) - expect(wrapper.emitted()['update:current'][0]).toContainEqual(wrapper.vm.pageCount) - - wrapper.vm.$nextTick(() => { - expect(event.target.focus).toHaveBeenCalled() - done() - }) - }) - - it('should emit change when calling prev', () => { - wrapper.setProps({current: 5}) - wrapper.vm.prev() - expect(wrapper.emitted()['change'][0]).toContainEqual(4) - expect(wrapper.emitted()['update:current'][0]).toContainEqual(4) - }) - - it('should emit change when calling next', () => { - wrapper.setProps({total: 100, current: 2}) - wrapper.vm.next() - expect(wrapper.emitted()['change'][0]).toContainEqual(3) - expect(wrapper.emitted()['update:current'][0]).toContainEqual(3) - }) - - it('set current to last if page count is smaller than current', async () => { - wrapper.vm.last = jest.fn() - wrapper.setProps({total: 100, current: 3}) - wrapper.setProps({total: 40}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.last).toHaveBeenCalled() - }) - - it('return no pages in range when simple', () => { - wrapper.setProps({simple: true}) - expect(wrapper.pagesInRange).toBeUndefined() - }) -}) diff --git a/packages/oruga/src/components/pagination/Pagination.vue b/packages/oruga/src/components/pagination/Pagination.vue deleted file mode 100644 index 56edb652c..000000000 --- a/packages/oruga/src/components/pagination/Pagination.vue +++ /dev/null @@ -1,436 +0,0 @@ -<template> - <nav :class="rootClasses"> - <slot - v-if="hasPreviousSlot" - name="previous" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="getPage(current - 1, { - class: prevBtnClasses, - 'aria-label': ariaPreviousLabel - })"> - <o-icon - :icon="iconPrev" - :pack="iconPack" - both - aria-hidden="true"/> - </slot> - <o-pagination-button - v-else - :class="prevBtnClasses" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="getPage(current - 1)"> - <o-icon - :icon="iconPrev" - :pack="iconPack" - both - aria-hidden="true"/> - </o-pagination-button> - <slot - v-if="hasNextSlot" - name="next" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="getPage(current + 1, { - class: nextBtnClasses, - 'aria-label': ariaNextLabel, - })"> - <o-icon - :icon="iconNext" - :pack="iconPack" - both - aria-hidden="true"/> - </slot> - <o-pagination-button - v-else - :class="nextBtnClasses" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="getPage(current + 1)"> - <o-icon - :icon="iconNext" - :pack="iconPack" - both - aria-hidden="true"/> - </o-pagination-button> - - <small :class="infoClasses" v-if="simple"> - <template v-if="perPage == 1"> - {{ firstItem }} / {{ total }} - </template> - <template v-else> - {{ firstItem }}-{{ Math.min(current * perPage, total) }} / {{ total }} - </template> - </small> - <ul :class="listClasses" v-else> - <!--First--> - <li v-if="hasFirst"> - <slot - v-if="hasDefaultSlot" - :page="getPage(1)" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - /> - <o-pagination-button - v-else - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="getPage(1)" /> - </li> - <li v-if="hasFirstEllipsis"><span :class="ellipsisClasses">…</span></li> - - <!--Pages--> - <li v-for="page in pagesInRange" :key="page.number"> - <slot - v-if="hasDefaultSlot" - :page="page" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - /> - <o-pagination-button - v-else - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="page" /> - </li> - - <!--Last--> - <li v-if="hasLastEllipsis"><span :class="ellipsisClasses">…</span></li> - <li v-if="hasLast"> - <slot - v-if="hasDefaultSlot" - :page="getPage(pageCount)" - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - /> - <o-pagination-button - v-else - :linkClass="linkClasses" - :linkCurrentClass="linkCurrentClasses" - :page="getPage(pageCount)" /> - </li> - </ul> - </nav> -</template> - -<script> -import PaginationButton from './PaginationButton' -import Icon from '../icon/Icon' - -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -/** - * A responsive and flexible pagination - * @displayName Pagination - * @example ./examples/Pagination.md - * @style _pagination.scss - */ -export default { - name: 'OPagination', - components: { - [Icon.name]: Icon, - [PaginationButton.name]: PaginationButton - }, - configField: 'pagination', - mixins: [BaseComponentMixin, MatchMediaMixin], - provide() { - return { - $pagination: this - } - }, - props: { - /** Total count of items */ - total: [Number, String], - /** Items count for each page */ - perPage: { - type: [Number, String], - default: () => { return getValueByPath(getOptions(), 'pagination.perPage', 20) } - }, - /** Current page number, use the .sync modifier (Vue 2.x) or v-model:current (Vue 3.x) to make it two-way binding */ - current: { - type: [Number, String], - default: 1 - }, - /** Number of pagination items to show before current page */ - rangeBefore: { - type: [Number, String], - default: 1 - }, - /** Number of pagination items to show after current page */ - rangeAfter: { - type: [Number, String], - default: 1 - }, - /** - * Pagination size, optional - * @values small, medium, large - */ - size: String, - /** Simple style */ - simple: Boolean, - /** Rounded button styles */ - rounded: Boolean, - /** - * Buttons order, optional - * @values centered, right, left - */ - order: { - type: String, - default: () => { return getValueByPath(getOptions(), 'pagination.order', 'right') } - }, - /** - * Icon pack to use - * @values mdi, fa, fas and any other custom icon pack - */ - iconPack: String, - /** Icon to use for previous button */ - iconPrev: { - type: String, - default: () => { return getValueByPath(getOptions(), 'pagination.iconPrev', 'chevron-left') } - }, - /** Icon to use for next button */ - iconNext: { - type: String, - default: () => { return getValueByPath(getOptions(), 'pagination.iconNext', 'chevron-right') } - }, - ariaNextLabel: String, - ariaPreviousLabel: String, - ariaPageLabel: String, - ariaCurrentLabel: String, - rootClass: [String, Function, Array], - prevBtnClass: [String, Function, Array], - nextBtnClass: [String, Function, Array], - listClass: [String, Function, Array], - linkClass: [String, Function, Array], - linkCurrentClass: [String, Function, Array], - ellipsisClass: [String, Function, Array], - infoClass: [String, Function, Array], - orderClass: [String, Function, Array], - simpleClass: [String, Function, Array], - roundedClass: [String, Function, Array], - linkDisabledClass: [String, Function, Array], - sizeClass: [String, Function, Array], - mobileClass: [String, Function, Array] - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-pag'), - { [this.computedClass('orderClass', 'o-pag--', this.order)]: this.order }, - { [this.computedClass('sizeClass', 'o-pag--', this.size)]: this.size }, - { [this.computedClass('simpleClass', 'o-pag--simple')]: this.simple }, - { [this.computedClass('mobileClass', 'o-pag--mobile')]: this.isMatchMedia }, - ] - }, - prevBtnClasses() { - return [ - this.computedClass('prevBtnClass', 'o-pag__previous'), - { [this.computedClass('linkDisabledClass', 'o-pag__link--disabled')]: !this.hasPrev } - ] - }, - nextBtnClasses() { - return [ - this.computedClass('nextBtnClass', 'o-pag__next'), - { [this.computedClass('linkDisabledClass', 'o-pag__link--disabled')]: !this.hasNext } - ] - }, - infoClasses() { - return [ - this.computedClass('infoClass', 'o-pag__info') - ] - }, - ellipsisClasses() { - return [ - this.computedClass('ellipsisClass', 'o-pag__ellipsis') - ] - }, - listClasses() { - return [ - this.computedClass('listClass', 'o-pag__list') - ] - }, - linkClasses() { - return [ - this.computedClass('linkClass', 'o-pag__link'), - { [this.computedClass('roundedClass', 'o-pag__link--rounded')]: this.rounded } - ] - }, - linkCurrentClasses() { - return [ - this.computedClass('linkCurrentClass', 'o-pag__link--current'), - ] - }, - - beforeCurrent() { - return parseInt(this.rangeBefore) - }, - - afterCurrent() { - return parseInt(this.rangeAfter) - }, - - /** - * Total page size (count). - */ - pageCount() { - return Math.ceil(this.total / this.perPage) - }, - - /** - * First item of the page (count). - */ - firstItem() { - const firstItem = this.current * this.perPage - this.perPage + 1 - return firstItem >= 0 ? firstItem : 0 - }, - - /** - * Check if previous button is available. - */ - hasPrev() { - return this.current > 1 - }, - - /** - * Check if first page button should be visible. - */ - hasFirst() { - return this.current >= (2 + this.beforeCurrent) - }, - - /** - * Check if first ellipsis should be visible. - */ - hasFirstEllipsis() { - return this.current >= (this.beforeCurrent + 4) - }, - - /** - * Check if last page button should be visible. - */ - hasLast() { - return this.current <= this.pageCount - (1 + this.afterCurrent) - }, - - /** - * Check if last ellipsis should be visible. - */ - hasLastEllipsis() { - return this.current < this.pageCount - (2 + this.afterCurrent) - }, - - /** - * Check if next button is available. - */ - hasNext() { - return this.current < this.pageCount - }, - - /** - * Get near pages, 1 before and 1 after the current. - * Also add the click event to the array. - */ - pagesInRange() { - if (this.simple) return - - let left = Math.max(1, this.current - this.beforeCurrent) - if (left - 1 === 2) { - left-- // Do not show the ellipsis if there is only one to hide - } - let right = Math.min(this.current + this.afterCurrent, this.pageCount) - if (this.pageCount - right === 2) { - right++ // Do not show the ellipsis if there is only one to hide - } - - const pages = [] - for (let i = left; i <= right; i++) { - pages.push(this.getPage(i)) - } - return pages - }, - - hasDefaultSlot() { - return this.$scopedSlots.default - }, - hasPreviousSlot() { - return this.$scopedSlots.previous - }, - hasNextSlot() { - return this.$scopedSlots.next - } - }, - watch: { - /** - * If current page is trying to be greater than page count, set to last. - */ - pageCount(value) { - if (this.current > value) this.last() - } - }, - methods: { - /** - * Previous button click listener. - */ - prev(event) { - this.changePage(this.current - 1, event) - }, - /** - * Next button click listener. - */ - next(event) { - this.changePage(this.current + 1, event) - }, - /** - * First button click listener. - */ - first(event) { - this.changePage(1, event) - }, - /** - * Last button click listener. - */ - last(event) { - this.changePage(this.pageCount, event) - }, - - changePage(num, event) { - if (this.current === num || num < 1 || num > this.pageCount) return - this.$emit('change', num) - this.$emit('update:current', num) - - // Set focus on element to keep tab order - if (event && event.target) { - this.$nextTick(() => event.target.focus()) - } - }, - - getPage(num, options = {}) { - return { - number: num, - isCurrent: this.current === num, - click: (event) => this.changePage(num, event), - disabled: options.disabled || false, - class: options.class || '', - 'aria-label': options['aria-label'] || this.getAriaPageLabel(num, this.current === num) - } - }, - - /** - * Get text for aria-label according to page number. - */ - getAriaPageLabel(pageNumber, isCurrent) { - if (this.ariaPageLabel && (!isCurrent || !this.ariaCurrentLabel)) { - return this.ariaPageLabel + ' ' + pageNumber + '.' - } else if (this.ariaPageLabel && isCurrent && this.ariaCurrentLabel) { - return this.ariaCurrentLabel + ', ' + this.ariaPageLabel + ' ' + pageNumber + '.' - } - return null - } - } -} -</script> diff --git a/packages/oruga/src/components/pagination/PaginationButton.spec.js b/packages/oruga/src/components/pagination/PaginationButton.spec.js deleted file mode 100644 index e19f5224f..000000000 --- a/packages/oruga/src/components/pagination/PaginationButton.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -import { mount } from '@vue/test-utils' -import OPagination from '@components/pagination/Pagination' -import OPaginationButton from '@components/pagination/PaginationButton' - -let wrapper -let wrapperParent - -const WrapperComp = { - template: ` - <OPagination> - <OPaginationButton ref="nextBtn" slot="next" slot-scope="props" :page="props.page"/> - </OPagination>`, - components: { - OPagination, OPaginationButton - } -} - -describe('OPaginationButton', () => { - beforeEach(() => { - wrapperParent = mount(WrapperComp) - wrapper = wrapperParent.find({ ref: 'nextBtn' }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/pagination/PaginationButton.vue b/packages/oruga/src/components/pagination/PaginationButton.vue deleted file mode 100644 index 97d899717..000000000 --- a/packages/oruga/src/components/pagination/PaginationButton.vue +++ /dev/null @@ -1,62 +0,0 @@ -<template> - <component - :is="tag" - role="button" - :href="href" - :disabled="isDisabled" - :class="linkClasses" - v-bind="$attrs" - @click.prevent="page.click" - :aria-label="page['aria-label']" - :aria-current="page.isCurrent"> - <slot>{{ page.number }}</slot> - </component> -</template> - -<script> -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -export default { - name: 'OPaginationButton', - inject: { - $pagination: { name: '$pagination' } - }, - configField: 'pagination', - props: { - page: { - type: Object, - required: true - }, - tag: { - type: String, - default: 'a', - validator: (value) => getValueByPath(getOptions(), 'linkTags', ['a', 'button', 'input', 'router-link', 'nuxt-link']).indexOf(value) >= 0 - }, - disabled: { - type: Boolean, - default: false - }, - linkClass: [String, Array, Object], - linkCurrentClass: [String, Array, Object] - }, - computed: { - linkClasses() { - return [ - this.linkClass || [...this.$pagination.linkClasses], - this.page.class, - { [this.linkCurrentClass || this.$pagination.linkCurrentClasses]: this.page.isCurrent } - ] - }, - href() { - if (this.tag === 'a') { - return '#' - } - return '' - }, - isDisabled() { - return this.disabled || this.page.disabled - } - } -} -</script> diff --git a/packages/oruga/src/components/pagination/__snapshots__/Pagination.spec.js.snap b/packages/oruga/src/components/pagination/__snapshots__/Pagination.spec.js.snap deleted file mode 100644 index c05581121..000000000 --- a/packages/oruga/src/components/pagination/__snapshots__/Pagination.spec.js.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OPagination render correctly 1`] = ` -<nav class="o-pag"> - <o-pagination-button-stub page="[object Object]" tag="a" linkclass="o-pag__link,[object Object]" linkcurrentclass="o-pag__link--current" class="o-pag__previous o-pag__link--disabled"> - <o-icon-stub icon="chevron-left" both="true" aria-hidden="true"></o-icon-stub> - </o-pagination-button-stub> - <o-pagination-button-stub page="[object Object]" tag="a" linkclass="o-pag__link,[object Object]" linkcurrentclass="o-pag__link--current" class="o-pag__next o-pag__link--disabled"> - <o-icon-stub icon="chevron-right" both="true" aria-hidden="true"></o-icon-stub> - </o-pagination-button-stub> - <ul class="o-pag__list"> - <!----> - <!----> - <!----> - <!----> - </ul> -</nav> -`; diff --git a/packages/oruga/src/components/pagination/__snapshots__/PaginationButton.spec.js.snap b/packages/oruga/src/components/pagination/__snapshots__/PaginationButton.spec.js.snap deleted file mode 100644 index 0ad9165ea..000000000 --- a/packages/oruga/src/components/pagination/__snapshots__/PaginationButton.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OPaginationButton render correctly 1`] = `<a role="button" href="#" class="o-pag__link o-pag__next o-pag__link--disabled">2</a>`; diff --git a/packages/oruga/src/components/pagination/examples/Pagination.md b/packages/oruga/src/components/pagination/examples/Pagination.md deleted file mode 100644 index 18c1e8eee..000000000 --- a/packages/oruga/src/components/pagination/examples/Pagination.md +++ /dev/null @@ -1,182 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <o-field label="Total"> - <o-input type="number" v-model="total"></o-input> - </o-field> - <o-field label="Items per page"> - <o-input type="number" v-model="perPage"></o-input> - </o-field> - </o-field> - <o-field grouped group-multiline> - <o-field label="Show buttons before current"> - <o-input type="number" v-model="rangeBefore" min="0"></o-input> - </o-field> - <o-field label="Show buttons after current"> - <o-input type="number" v-model="rangeAfter" min="0"></o-input> - </o-field> - </o-field> - <o-field grouped group-multiline> - <o-field label="Order"> - <o-select v-model="order"> - <option value="">default</option> - <option value="centered">centered</option> - <option value="right">right</option> - </o-select> - </o-field> - <o-field label="Size"> - <o-select v-model="size"> - <option value="">default</option> - <option value="small">small</option> - <option value="medium">medium</option> - <option value="large">large</option> - </o-select> - </o-field> - </o-field> - <o-field grouped group-multiline> - <o-field label="Previous icon"> - <o-select v-model="prevIcon"> - <option value="chevron-left">Chevron</option> - <option value="arrow-left">Arrow</option> - </o-select> - </o-field> - <o-field label="Next icon"> - <o-select v-model="nextIcon"> - <option value="chevron-right">Chevron</option> - <option value="arrow-right">Arrow</option> - </o-select> - </o-field> - </o-field> - <div class="block"> - <o-switch v-model="isSimple">Simple</o-switch> - <o-switch v-model="isRounded">Rounded</o-switch> - </div> - - <hr> - <o-pagination - :total="total" - :current.sync="current" - :range-before="rangeBefore" - :range-after="rangeAfter" - :order="order" - :size="size" - :simple="isSimple" - :rounded="isRounded" - :per-page="perPage" - :icon-prev="prevIcon" - :icon-next="nextIcon" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page"> - </o-pagination> - </section> -</template> - -<script> - export default { - data() { - return { - total: 200, - current: 10, - perPage: 10, - rangeBefore: 3, - rangeAfter: 1, - order: '', - size: '', - isSimple: false, - isRounded: false, - prevIcon: 'chevron-left', - nextIcon: 'chevron-right' - } - } - } -</script> -``` -::: - -### Slots - -::: demo -```html -<template> - <section> - <o-pagination - :total="200" - :current.sync="current" - :per-page="10"> - - <o-pagination-button - slot-scope="props" - :page="props.page" - :id="`page${props.page.number}`"> - {{ convertToRoman(props.page.number) }} - </o-pagination-button> - - <o-pagination-button - slot="previous" - slot-scope="props" - :page="props.page"> - Previous - </o-pagination-button> - - <o-pagination-button - slot="next" - slot-scope="props" - :page="props.page"> - Next - </o-pagination-button> - - </o-pagination> - </section> -</template> - -<script> - export default { - data() { - return { - current: 10, - basicRomanNumeral: ['', - 'I','II','III','IV','V','VI','VII','VIII','IX','', - 'X','XX','XXX','XL','L','LX','LXX','LXXX','XC','', - 'C','CC','CCC','CD','D','DC','DCC','DCCC','CM','', - 'M','MM','MMM' - ] - } - }, - methods: { - convertToRoman(num) { - const numArray = num.toString().split(''); - const base = numArray.length; - let count = base-1; - const convertedRoman = numArray.reduce((roman, digit) => { - const digitRoman = this.basicRomanNumeral[+digit + count*10]; - const result = roman + digitRoman; - count -= 1; - return result; - },''); - return convertedRoman; - } - }, - /* - watch: { - $route: { - immediate: true, - handler(newVal, oldVal) { - if (newVal.hash) { - this.current = parseInt(newVal.hash.replace(/\#page/g, '')) - } - }, - }, - } - */ - } -</script> -``` -::: diff --git a/packages/oruga/src/components/pagination/index.js b/packages/oruga/src/components/pagination/index.js deleted file mode 100644 index 9fc6e967c..000000000 --- a/packages/oruga/src/components/pagination/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import Pagination from './Pagination' -import PaginationButton from './PaginationButton' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Pagination) - registerComponent(Vue, PaginationButton) - } -} - -use(Plugin) - -export default Plugin - -export { - Pagination as OPagination, - PaginationButton as OPaginationButton -} diff --git a/packages/oruga/src/components/plugins.js b/packages/oruga/src/components/plugins.js deleted file mode 100644 index 0706f781e..000000000 --- a/packages/oruga/src/components/plugins.js +++ /dev/null @@ -1,63 +0,0 @@ -import Autocomplete from './autocomplete' -import Button from './button' -import Carousel from './carousel' -import Checkbox from './checkbox' -import Collapse from './collapse' -import Datepicker from './datepicker' -import Datetimepicker from './datetimepicker' -import Dropdown from './dropdown' -import Field from './field' -import Icon from './icon' -import Input from './input' -import Inputitems from './inputitems' -import Loading from './loading' -import Notification from './notification' -import NotificationNotice from './notification' -import Modal from './modal' -import Menu from './menu' -import Pagination from './pagination' -import Radio from './radio' -import Select from './select' -import Skeleton from './skeleton' -import Sidebar from './sidebar' -import Slider from './slider' -import Steps from './steps' -import Switch from './switch' -import Table from './table' -import Tabs from './tabs' -import Timepicker from './timepicker' -import Tooltip from './tooltip' -import Upload from './upload' - -export { - Autocomplete, - Button, - Carousel, - Checkbox, - Collapse, - Datepicker, - Datetimepicker, - Dropdown, - Field, - Icon, - Input, - Inputitems, - Loading, - Modal, - Menu, - Notification, - NotificationNotice, - Pagination, - Radio, - Select, - Skeleton, - Sidebar, - Slider, - Steps, - Switch, - Table, - Tabs, - Timepicker, - Tooltip, - Upload -} diff --git a/packages/oruga/src/components/radio/Inspector.vue b/packages/oruga/src/components/radio/Inspector.vue deleted file mode 100644 index 0400b39cb..000000000 --- a/packages/oruga/src/components/radio/Inspector.vue +++ /dev/null @@ -1,74 +0,0 @@ -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-radio v-model="s.checkbox" native-value="default" v-bind="s">Radio</o-radio> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - -export default { - data() { - return { - inspectData: [ - { - class: 'rootClass', - description : 'Class of the root element' - }, - { - class: 'labelClass', - description : 'Class of the radio label' - }, - { - class: 'checkClass', - description : 'Class of the native radio element' - }, - { - class: 'checkedClass', - description : 'Class of the root element when checked', - action: (cmp) => { - cmp.data.checkbox = 'default'; - } - }, - { - class: 'checkCheckedClass', - description : 'Class of the native radio element when checked', - action: (cmp) => { - cmp.data.checkbox = 'default'; - } - }, - { - class: 'sizeClass', - description : 'Class of the radio size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: 'disabledClass', - description : 'Class when radio is disabled', - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: 'variantClass', - description : 'Class of the radio variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - } - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/radio/Radio.spec.js b/packages/oruga/src/components/radio/Radio.spec.js deleted file mode 100644 index 8d957befe..000000000 --- a/packages/oruga/src/components/radio/Radio.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import ORadio from '@components/radio/Radio' - -let wrapper - -describe('ORadio', () => { - beforeEach(() => { - wrapper = shallowMount(ORadio) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('has an input radio', () => { - expect(wrapper.contains('label input[type=radio]')).toBeTruthy() - }) - - it('emit input event with value when value change', async () => { - wrapper.setProps({ value: true }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedValue).toBeTruthy() - - wrapper.vm.computedValue = false - await wrapper.vm.$nextTick() - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(false) - }) - - it('method focus() gives focus to the input element', (done) => { - wrapper.vm.$refs.input.focus = jest.fn() - wrapper.vm.focus() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.$refs.input.focus).toHaveBeenCalled() - done() - }) - }) -}) diff --git a/packages/oruga/src/components/radio/Radio.vue b/packages/oruga/src/components/radio/Radio.vue deleted file mode 100644 index 57a6e2c6d..000000000 --- a/packages/oruga/src/components/radio/Radio.vue +++ /dev/null @@ -1,72 +0,0 @@ -<template> - <label - :class="rootClasses" - ref="label" - :disabled="disabled" - @click.stop="focus" - @keydown.prevent.enter="$refs.label.click()"> - <input - v-model="computedValue" - type="radio" - ref="input" - @click.stop - :class="checkClasses" - :disabled="disabled" - :required="required" - :name="name" - :value="nativeValue"> - <span :class="labelClasses"><slot/></span> - </label> -</template> - -<script> -import CheckRadioMixin from '../../utils/CheckRadioMixin' -import BaseComponentMixin from '../../utils/BaseComponentMixin' - -/** - * Select an option from a set - * @displayName Radio - * @example ./examples/Radio.md - * @style _radio.scss - */ -export default { - name: 'ORadio', - mixins: [BaseComponentMixin, CheckRadioMixin], - configField: 'radio', - props: { - rootClass: [String, Function, Array], - disabledClass: [String, Function, Array], - checkedClass: [String, Function, Array], - checkCheckedClass: [String, Function, Array], - checkClass: [String, Function, Array], - labelClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array] - }, - computed: { - isChecked() { - return this.value === this.nativeValue - }, - rootClasses() { - return [ - this.computedClass('rootClass', 'o-radio'), - { [this.computedClass('sizeClass', 'o-radio--', this.size)]: this.size }, - { [this.computedClass('checkedClass', 'o-radio--checked')]: this.isChecked }, - { [this.computedClass('disabledClass', 'o-radio--disabled')]: this.disabled }, - { [this.computedClass('variantClass', 'o-radio--', this.variant)]: this.variant } - ] - }, - checkClasses() { - return [ - this.computedClass('checkClass', 'o-radio__check'), - { [this.computedClass('checkCheckedClass', 'o-radio__check--checked')]: this.isChecked }, - ] - }, - labelClasses() { - return [ - this.computedClass('labelClass', 'o-radio__label') - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/radio/__snapshots__/Radio.spec.js.snap b/packages/oruga/src/components/radio/__snapshots__/Radio.spec.js.snap deleted file mode 100644 index 04f5cc7bd..000000000 --- a/packages/oruga/src/components/radio/__snapshots__/Radio.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ORadio render correctly 1`] = `<label class="o-radio o-radio--checked"><input type="radio" class="o-radio__check o-radio__check--checked" value="false"> <span class="o-radio__label"></span></label>`; diff --git a/packages/oruga/src/components/radio/examples/Radio.md b/packages/oruga/src/components/radio/examples/Radio.md deleted file mode 100644 index ee9f004e0..000000000 --- a/packages/oruga/src/components/radio/examples/Radio.md +++ /dev/null @@ -1,104 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <div class="block"> - <o-radio v-model="radio" - name="name" - native-value="Flint"> - Flint - </o-radio> - <o-radio v-model="radio" - name="name" - native-value="Silver"> - Silver - </o-radio> - <o-radio v-model="radio" - name="name" - native-value="Jack"> - Jack - </o-radio> - <o-radio v-model="radio" - name="name" - native-value="Vane" - disabled> - Vane - </o-radio> - </div> - <p class="content"> - <b>Selection:</b> - {{ radio }} - </p> - </section> -</template> - -<script> - export default { - data() { - return { - radio: 'Jack' - } - } - } -</script> -``` -::: - -### Variants - -::: demo -```html -<template> - <section> - <div class="field"> - <o-radio v-model="radio" - native-value="default"> - Default - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" - native-value="info" - variant="info"> - Info - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" - native-value="success" - variant="success"> - Success - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" - native-value="danger" - variant="danger"> - Danger - </o-radio> - </div> - <div class="field"> - <o-radio v-model="radio" - native-value="warning" - variant="warning"> - Warning - </o-radio> - </div> - </section> -</template> - -<script> - export default { - data() { - return { - radio: 'default' - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/radio/index.js b/packages/oruga/src/components/radio/index.js deleted file mode 100644 index 74edd303e..000000000 --- a/packages/oruga/src/components/radio/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Radio from './Radio' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Radio) - } -} - -use(Plugin) - -export default Plugin - -export { - Radio as ORadio -} diff --git a/packages/oruga/src/components/select/Inspector.vue b/packages/oruga/src/components/select/Inspector.vue deleted file mode 100644 index 97f04c5e4..000000000 --- a/packages/oruga/src/components/select/Inspector.vue +++ /dev/null @@ -1,148 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field :variant="s.fieldvariant" :message="s.fieldmessage"> - <o-select placeholder="Select a character" v-bind="s" v-model="selectedOptions"> - <optgroup label="Black Sails"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - <option value="vane">Vane</option> - <option value="billy">Billy</option> - <option value="jack">Jack</option> - </optgroup> - <optgroup label="Breaking Bad"> - <option value="heisenberg">Heisenberg</option> - <option value="jesse">Jesse</option> - <option value="saul">Saul</option> - <option value="mike">Mike</option> - </optgroup> - </o-select> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - selectedOptions: null, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: () => { - this.selectedOptions = null; - } - }, - { - class: "iconLeftSpaceClass", - description: "Class of the left icon space inside the select", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - this.selectedOptions = null; - } - }, - { - class: "iconRightSpaceClass", - description: "Class of the right icon space inside the select", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - this.selectedOptions = null; - } - }, - { - class: "roundedClass", - description: "Class of select when rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - this.selectedOptions = null; - } - }, - { - class: "multipleClass", - description: "Class of the select when multiple mode is active", - properties: ['multiple'], - action: (cmp) => { - cmp.data.multiple = true; - this.selectedOptions = []; - } - }, - { - class: "expandedClass", - description: "Class of select when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - this.selectedOptions = null; - } - }, - { - class: "iconLeftClass", - description: "Class of the left icon", - properties: ['icon'], - action: (cmp) => { - cmp.data.icon = "envelope"; - this.selectedOptions = null; - } - }, - { - class: "iconRightClass", - description: "Class of the right icon", - properties: ['iconRight'], - action: (cmp) => { - cmp.data.iconRight = "times-circle"; - this.selectedOptions = null; - } - }, - { - class: "sizeClass", - description: "Class of the select size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - this.selectedOptions = null; - } - }, - { - class: "variantClass", - description : 'Class of the select variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.fieldvariant = 'info'; - cmp.data.fieldmessage = "Info for this field" - this.selectedOptions = null; - } - }, - { - class: "selectClass", - description: "Class of the native select element" - }, - { - class: "placeholderClass", - description: "Class of the select placeholder", - action: () => { - this.selectedOptions = null; - } - }, - { - class: "arrowClass", - description: "Class of the select arrow", - warning: "It applies the arrow icon using background-image and background-position on select element. An alternative to override it is iconRight prop (globally or not)", - action: () => { - this.selectedOptions = null; - } - } - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/select/Select.spec.js b/packages/oruga/src/components/select/Select.spec.js deleted file mode 100644 index 97516f2f3..000000000 --- a/packages/oruga/src/components/select/Select.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OSelect from '@components/select/Select' - -let wrapper - -describe('OSelect', () => { - beforeEach(() => { - wrapper = shallowMount(OSelect) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('has a select element', () => { - expect(wrapper.contains('select')).toBeTruthy() - }) - - it('emit input event with value when value change', async () => { - wrapper.setProps({ value: true }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedValue).toBeTruthy() - - wrapper.vm.computedValue = false - await wrapper.vm.$nextTick() - const valueEmitted = wrapper.emitted()['input'][0] - expect(valueEmitted).toContainEqual(false) - }) -}) diff --git a/packages/oruga/src/components/select/Select.vue b/packages/oruga/src/components/select/Select.vue deleted file mode 100644 index 250938e57..000000000 --- a/packages/oruga/src/components/select/Select.vue +++ /dev/null @@ -1,184 +0,0 @@ -<template> - <div :class="rootClasses"> - <select - :class="selectClasses" - v-model="computedValue" - ref="select" - :autocomplete="autocomplete" - :multiple="multiple" - :size="nativeSize" - v-bind="$attrs" - @blur="onBlur" - @focus="onFocus" - @invalid="onInvalid"> - - <template v-if="placeholder"> - <option - v-if="placeholderVisible" - :value="null" - disabled - hidden> - {{ placeholder }} - </option> - </template> - - <slot/> - - </select> - - <o-icon - v-if="icon" - :class="iconLeftClasses" - :icon="icon" - :pack="iconPack" - :size="size" /> - - <o-icon - v-if="iconRight" - :class="iconRightClasses" - :icon="iconRight" - :pack="iconPack" - :size="size" /> - </div> -</template> - -<script> -import Icon from '../icon/Icon' - -import FormElementMixin from '../../utils/FormElementMixin' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { getValueByPath } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -/** - * Select an item in a dropdown list. Use with Field to access all functionalities - * @displayName Select - * @example ./examples/Select.md - * @style _select.scss - */ -export default { - name: 'OSelect', - components: { - [Icon.name]: Icon - }, - mixins: [BaseComponentMixin, FormElementMixin], - configField: 'select', - inheritAttrs: false, - props: { - /** @model */ - value: { - type: [String, Number, Boolean, Object, Array], - default: null - }, - /** - * Vertical size of input, optional - * @values small, medium, large - */ - size: String, - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** - * Icon pack to use - * @values mdi, fa, fas and any other custom icon pack - */ - iconPack: { - type: String, - default: () => { return getValueByPath(getOptions(), 'select.iconPack', undefined) } - }, - /** - * Icon name to be added on the right side - */ - iconRight: { - type: String, - default: () => { return getValueByPath(getOptions(), 'select.iconRight', undefined) } - }, - /** Text when nothing is selected */ - placeholder: String, - multiple: Boolean, - /** Same as native size */ - nativeSize: [String, Number], - rootClass: [String, Function, Array], - selectClass: [String, Function, Array], - iconLeftSpaceClass: [String, Function, Array], - iconRightSpaceClass: [String, Function, Array], - roundedClass: [String, Function, Array], - multipleClass: [String, Function, Array], - expandedClass: [String, Function, Array], - iconLeftClass: [String, Function, Array], - iconRightClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array], - placeholderClass: [String, Function, Array], - arrowClass: [String, Function, Array] - }, - data() { - return { - selected: this.value - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-ctrl-sel'), - { [this.computedClass('expandedClass', 'o-ctrl-sel--expanded')]: this.expanded }, - ] - }, - selectClasses() { - return [ - this.computedClass('selectClass', 'o-sel'), - { [this.computedClass('roundedClass', 'o-sel--rounded')]: this.rounded }, - { [this.computedClass('multipleClass', 'o-sel--multiple')]: this.multiple }, - { [this.computedClass('sizeClass', 'o-sel--', this.size)]: this.size }, - { [this.computedClass('variantClass', 'o-sel--', (this.statusVariant || this.variant))]: (this.statusVariant || this.variant) }, - { [this.computedClass('iconLeftSpaceClass', 'o-sel-iconspace-left')]: this.icon }, - { [this.computedClass('iconRightSpaceClass', 'o-sel-iconspace-right')]: this.iconRight }, - { [this.computedClass('placeholderClass', 'o-sel--placeholder')]: this.placeholderVisible }, - { [this.computedClass('arrowClass', 'o-sel-arrow')]: !this.iconRight && !this.multiple } - ] - }, - iconLeftClasses() { - return [ - this.computedClass('iconLeftClass', 'o-sel__icon-left') - ] - }, - iconRightClasses() { - return [ - this.computedClass('iconRightClass', 'o-sel__icon-right') - ] - }, - placeholderVisible() { - return this.computedValue === null - }, - computedValue: { - get() { - return this.selected - }, - set(value) { - this.selected = value - this.$emit('input', value) - this.syncFilled(this.selected) - !this.isValid && this.checkHtml5Validity() - } - }, - - $elementRef() { - return 'select' - } - }, - watch: { - /** - * When v-model is changed: - * 1. Set the selected option. - * 2. If it's invalid, validate again. - */ - value(value) { - this.selected = value - this.syncFilled(this.selected) - !this.isValid && this.checkHtml5Validity() - } - } -} -</script> diff --git a/packages/oruga/src/components/select/__snapshots__/Select.spec.js.snap b/packages/oruga/src/components/select/__snapshots__/Select.spec.js.snap deleted file mode 100644 index a15da9b83..000000000 --- a/packages/oruga/src/components/select/__snapshots__/Select.spec.js.snap +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSelect render correctly 1`] = ` -<div class="o-ctrl-sel"><select class="o-sel o-sel--placeholder o-sel-arrow"> - <!----> - </select> - <!----> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/select/examples/Select.md b/packages/oruga/src/components/select/examples/Select.md deleted file mode 100644 index fbc6e7704..000000000 --- a/packages/oruga/src/components/select/examples/Select.md +++ /dev/null @@ -1,118 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field label="Simple"> - <o-select placeholder="Select a name"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Grouped"> - <o-select placeholder="Select a character" icon="user"> - <optgroup label="Black Sails"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - <option value="vane">Vane</option> - <option value="billy">Billy</option> - <option value="jack">Jack</option> - </optgroup> - - <optgroup label="Breaking Bad"> - <option value="heisenberg">Heisenberg</option> - <option value="jesse">Jesse</option> - <option value="saul">Saul</option> - <option value="mike">Mike</option> - </optgroup> - - <optgroup label="Game of Thrones"> - <option value="tyrion-lannister">Tyrion Lannister</option> - <option value="jamie-lannister">Jamie Lannister</option> - <option value="daenerys-targaryen">Daenerys Targaryen</option> - <option value="jon-snow">Jon Snow</option> - </optgroup> - </o-select> - </o-field> - - <o-field - label="Error" - variant="danger" - message="Something went wrong with this field"> - <o-select placeholder="Select a character"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Rounded"> - <o-select placeholder="Select a character" rounded> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Disabled"> - <o-select placeholder="Select a character" disabled> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Disabled option"> - <o-select placeholder="Select a character"> - <option value="flint">Flint</option> - <option value="silver" disabled>Silver</option> - </o-select> - </o-field> - - <o-field label="Expanded"> - <o-select placeholder="Select a character" expanded> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Size 'large'"> - <o-select - placeholder="Large" - size="large"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - </o-select> - </o-field> - - <o-field label="Multiple"> - <o-select - multiple - native-size="8" - v-model="selectedOptions"> - <option value="flint">Flint</option> - <option value="silver">Silver</option> - <option value="vane">Vane</option> - <option value="billy">Billy</option> - <option value="jack">Jack</option> - <option value="heisenberg">Heisenberg</option> - <option value="jesse">Jesse</option> - <option value="saul">Saul</option> - <option value="mike">Mike</option> - </o-select> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - selectedOptions: [] - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/select/index.js b/packages/oruga/src/components/select/index.js deleted file mode 100644 index 54a500abb..000000000 --- a/packages/oruga/src/components/select/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Select from './Select' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Select) - } -} - -use(Plugin) - -export default Plugin - -export { - Select as OSelect -} diff --git a/packages/oruga/src/components/sidebar/Inspector.vue b/packages/oruga/src/components/sidebar/Inspector.vue deleted file mode 100644 index 36e207f60..000000000 --- a/packages/oruga/src/components/sidebar/Inspector.vue +++ /dev/null @@ -1,189 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <div class="sidebar-page"> - <section class="sidebar-layout" v-if="position === 'static'"> - <o-sidebar v-bind="s" position="static" open> - <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" /> - <section style="padding: 1em"> - <h5>Example 1</h5> - <h5>Example 2</h5> - <h5>Example 3</h5> - <h5>Example 4</h5> - <h5>Example 5</h5> - </section> - </o-sidebar> - </section> - <section class="sidebar-layout" v-if="position !== 'static'"> - <o-sidebar v-bind="s" :position="position" :open.sync="open" variant="primary" style="--oruga-sidebar-zindex: 50"> - <img width="128" src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" alt="Lightweight UI components for Vue.js" /> - <section style="padding: 1em"> - <h5>Example 1</h5> - <h5>Example 2</h5> - <h5>Example 3</h5> - <h5>Example 4</h5> - <h5>Example 5</h5> - </section> - </o-sidebar> - </section> - </div> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - position: 'static', - open: false, - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - action: () => { - this.position = 'static'; - } - }, - { - class: "mobileClass", - description: "Class of sidebar component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "overlayClass", - description: "Class of the sidebar overlay", - action: (cmp) => { - this.position = 'fixed'; - setTimeout(() => { - this.open = true; - cmp.data.overlay = true - cmp.data.fullheight = true - }, 400) - } - }, - { - class: "contentClass", - description: "Class of the sidebar content", - action: () => { - this.position = 'static'; - } - }, - { - class: "fixedClass", - description: "Class of the sidebar when its position is fixed", - properties: ['position'], - action: (cmp) => { - this.position = 'fixed'; - setTimeout(() => { - this.open = true; - cmp.data.overlay = true - cmp.data.fullheight = true - }, 400) - } - }, - { - class: "staticClass", - description: "Class of the sidebar when its position is static", - properties: ['position'], - action: () => { - this.position = 'static'; - } - }, - { - class: "absoluteClass", - description: "Class of the sidebar when its position is absolute", - properties: ['position'], - warning: "Scroll to the top of this page to see the sidebar", - action: (cmp) => { - this.position = 'absolute'; - setTimeout(() => { - cmp.data.fullheight = true - this.open = true; - }, 400) - } - }, - { - class: "fullheightClass", - description: "Class of the sidebar when is fullheight", - properties: ['fullheight'], - action: (cmp) => { - this.position = 'static'; - cmp.data.fullheight = true; - } - }, - { - class: "fullwidthClass", - description: "Class of the sidebar when is fullwidth", - properties: ['fullwidth'], - action: (cmp) => { - this.position = 'static'; - cmp.data.fullwidth = true; - } - }, - { - class: "rightClass", - description: "Class of the sidebar when is positioned on the right", - properties: ['right'], - action: (cmp) => { - this.position = 'static'; - cmp.data.right = true; - } - }, - { - class: "reduceClass", - description: "Class of the sidebar when reduced", - properties: ['reduce'], - action: (cmp) => { - this.position = 'static'; - cmp.data.reduce = true; - } - }, - { - class: "expandOnHoverClass", - description: "Class of the sidebar when expanded on hover", - properties: ['expandOnHover'], - action: (cmp) => { - this.position = 'static'; - cmp.data.expandOnHover = true; - } - }, - { - class: "expandOnHoverFixedClass", - description: "Class of the sidebar when expanded on hover and its position is fixed", - properties: ['expandOnHover', 'expandOnHoverFixed'], - action: (cmp) => { - this.position = 'fixed'; - setTimeout(() => { - cmp.data.expandOnHover = true; - cmp.data.expandOnHoverFixed = true; - this.open = true; - }, 400) - } - }, - { - class: "variantClass", - description : 'Class of the sidebar variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - this.position = 'static'; - cmp.data.variant = 'warning'; - } - }, - { - class: "visibleClass", - description : 'Class of the sidebar when sidebar is visible', - }, - { - class: "hiddenClass", - description : 'Class of the sidebar when sidebar is hidden', - }, - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/sidebar/Sidebar.spec.js b/packages/oruga/src/components/sidebar/Sidebar.spec.js deleted file mode 100644 index 9f6614411..000000000 --- a/packages/oruga/src/components/sidebar/Sidebar.spec.js +++ /dev/null @@ -1,92 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OSidebar from '@components/sidebar/Sidebar' - -let wrapper - -describe('OSidebar', () => { - beforeEach(() => { - wrapper = shallowMount(OSidebar) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - describe('open', () => { - beforeEach(() => { - wrapper.setProps({open: true}) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('changes isOpen when open prop is modified', async () => { - wrapper.setProps({open: false}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.isOpen).toBeFalsy() - expect(wrapper.vm.transitionName).toBe('slide-prev') - - wrapper.setProps({open: true}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.isOpen).toBeTruthy() - expect(wrapper.vm.transitionName).toBe('slide-next') - }) - - it('close on cancel', () => { - wrapper.setProps({canCancel: true}) - wrapper.vm.isOpen = true - wrapper.vm.close = jest.fn(() => wrapper.vm.close) - wrapper.vm.cancel('outside') - - wrapper.setProps({canCancel: false}) - wrapper.vm.cancel('outside') - - expect(wrapper.vm.close).toHaveBeenCalledTimes(1) - }) - - it('close on escape', () => { - wrapper.setProps({open: true}) - wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel) - const event = new KeyboardEvent('keyup', {'key': 'Escape'}) - wrapper.vm.keyPress({}) - wrapper.vm.keyPress(event) - - wrapper.setProps({position: 'static'}) - wrapper.vm.keyPress(event) - - expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1) - }) - - it('emit events on close', () => { - wrapper.vm.close() - expect(wrapper.emitted()['close']).toBeTruthy() - expect(wrapper.emitted()['update:open']).toBeTruthy() - }) - }) - - const component = document.createElement('div') - describe('with a container', () => { - beforeEach(() => { - component.appendChild = jest.fn() - wrapper = shallowMount(OSidebar, { - propsData: { - container: component - }, - attachToDocument: true - }) - }) - - it('Is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - }) -}) diff --git a/packages/oruga/src/components/sidebar/Sidebar.vue b/packages/oruga/src/components/sidebar/Sidebar.vue deleted file mode 100644 index a969109d5..000000000 --- a/packages/oruga/src/components/sidebar/Sidebar.vue +++ /dev/null @@ -1,357 +0,0 @@ -<template> - <div - :class="rootClasses" - v-show="!hideOnMobile"> - <div - :class="overlayClasses" - v-if="overlay && isOpen" - /> - <transition - :name="transitionName" - @before-enter="beforeEnter" - @after-enter="afterEnter"> - <div - v-show="isOpen" - ref="sidebarContent" - :class="contentClasses"> - <slot /> - </div> - </transition> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import { getOptions } from '../../utils/config' -import { removeElement, getValueByPath } from '../../utils/helpers' - -/** - * A sidebar to use as left/right overlay or static - * @displayName Sidebar - * @example ./examples/Sidebar.md - * @style _sidebar.scss - */ -export default { - name: 'OSidebar', - mixins: [BaseComponentMixin, MatchMediaMixin], - configField: 'sidebar', - props: { - /** To control the behaviour of the sidebar programmatically, use the .sync modifier (Vue 2.x) or v-model:open (Vue 3.x) to make it two-way binding */ - open: Boolean, - /** - * Color of the sidebar, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: [String, Object], - /** Show an overlay like modal */ - overlay: Boolean, - /** - * Skeleton position in relation to the window - * @values fixed, absolute, static - */ - position: { - type: String, - default: () => { return getValueByPath(getOptions(), 'sidebar.position', 'fixed') }, - validator: (value) => { - return [ - 'fixed', - 'absolute', - 'static' - ].indexOf(value) >= 0 - } - }, - /** Show sidebar in fullheight */ - fullheight: Boolean, - /** Show sidebar in fullwidth */ - fullwidth: Boolean, - /** Show the sidebar on right */ - right: Boolean, - /** - * Custom layout on mobile - * @values fullwidth, reduced, hidden - */ - mobile: { - type: String, - validator: (value) => { - return [ - '', - 'fullwidth', - 'reduced', - 'hidden' - ].indexOf(value) >= 0 - } - }, - /** Show a small sidebar */ - reduce: Boolean, - /** Expand sidebar on hover when reduced or mobile is reduce */ - expandOnHover: Boolean, - /** Expand sidebar on hover with fixed position when reduced or mobile is reduce */ - expandOnHoverFixed: Boolean, - /** - * Sidebar cancel options - * @values true, false, 'escape', 'outside' - */ - canCancel: { - type: [Array, Boolean], - default: () => { return getValueByPath(getOptions(), 'sidebar.canCancel', ['escape', 'outside']) } - }, - /** - * Callback on cancel - */ - onCancel: { - type: Function, - default: () => {} - }, - scroll: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'sidebar.scroll', 'clip') - }, - validator: (value) => { - return [ - 'clip', - 'keep' - ].indexOf(value) >= 0 - } - }, - rootClass: [String, Function, Array], - overlayClass: [String, Function, Array], - contentClass: [String, Function, Array], - fixedClass: [String, Function, Array], - staticClass: [String, Function, Array], - absoluteClass: [String, Function, Array], - fullheightClass: [String, Function, Array], - fullwidthClass: [String, Function, Array], - rightClass: [String, Function, Array], - reduceClass: [String, Function, Array], - expandOnHoverClass: [String, Function, Array], - expandOnHoverFixedClass: [String, Function, Array], - variantClass: [String, Function, Array], - mobileClass: [String, Function, Array], - scrollClipClass: [String, Function, Array], - noScrollClass: [String, Function, Array], - hiddenClass: [String, Function, Array], - visibleClass: [String, Function, Array] - }, - data() { - return { - isOpen: this.open, - transitionName: null, - animating: true, - savedScrollTop: null - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-side'), - { [this.computedClass('mobileClass', 'o-side--mobile')]: this.isMatchMedia }, - ] - }, - overlayClasses() { - return [ - this.computedClass('overlayClass', 'o-side__overlay') - ] - }, - contentClasses() { - return [ - this.computedClass('contentClass', 'o-side__content'), - { [this.computedClass('variantClass', 'o-side__content--', this.variant)]: this.variant }, - { [this.computedClass('fixedClass', 'o-side__content--fixed')]: this.isFixed }, - { [this.computedClass('staticClass', 'o-side__content--static')]: this.isStatic }, - { [this.computedClass('absoluteClass', 'o-side__content--absolute')]: this.isAbsolute }, - { [this.computedClass('fullheightClass', 'o-side__content--fullheight')]: this.fullheight }, - { [this.computedClass('fullwidthClass', 'o-side__content--fullwidth')]: this.fullwidth || (this.mobile === 'fullwidth' && this.isMatchMedia) }, - { [this.computedClass('rightClass', 'o-side__content--right')]: this.right }, - { [this.computedClass('reduceClass', 'o-side__content--mini')]: this.reduce || (this.mobile === 'reduced' && this.isMatchMedia) }, - { [this.computedClass('expandOnHoverClass', 'o-side__content--mini-expand')]: (this.expandOnHover && this.mobile !== 'fullwidth') }, - { [this.computedClass('expandOnHoverFixedClass', 'o-side__content--expand-mini-hover-fixed')]: (this.expandOnHover && this.expandOnHoverFixed && this.mobile !== 'fullwidth') }, - { [this.computedClass('visibleClass', 'o-side__content--visible')]: this.isOpen }, - { [this.computedClass('hiddenClass', 'o-side__content--hidden')]: !this.isOpen }, - ] - }, - scrollClass() { - if (this.scroll === 'clip') { - return this.computedClass('scrollClipClass', 'o-clipped') - } - return this.computedClass('noScrollClass', 'o-noscroll') - }, - cancelOptions() { - return typeof this.canCancel === 'boolean' - ? this.canCancel - ? getValueByPath(getOptions(), 'sidebar.canCancel', ['escape', 'outside']) - : [] - : this.canCancel - }, - isStatic() { - return this.position === 'static' - }, - isFixed() { - return this.position === 'fixed' - }, - isAbsolute() { - return this.position === 'absolute' - }, - hideOnMobile() { - return this.mobile === 'hidden' && this.isMatchMedia - } - }, - watch: { - open: { - handler(value) { - this.isOpen = value - if (this.overlay) { - this.handleScroll() - } - const open = this.right ? !value : value - this.transitionName = !open ? 'slide-prev' : 'slide-next' - }, - immediate: true - } - }, - methods: { - /** - * White-listed items to not close when clicked. - * Add sidebar content and all children. - */ - whiteList() { - const whiteList = [] - whiteList.push(this.$refs.sidebarContent) - // Add all chidren from dropdown - if (this.$refs.sidebarContent !== undefined) { - const children = this.$refs.sidebarContent.querySelectorAll('*') - for (const child of children) { - whiteList.push(child) - } - } - return whiteList - }, - /** - * Keypress event that is bound to the document. - */ - keyPress({ key }) { - if (this.isFixed) { - if (this.isOpen && (key === 'Escape' || key === 'Esc')) this.cancel('escape') - } - }, - - /** - * Close the Sidebar if canCancel and call the onCancel prop (function). - */ - cancel(method) { - if (this.cancelOptions.indexOf(method) < 0) return - if (this.isStatic) return - - this.onCancel.apply(null, arguments) - this.close() - }, - - /** - * Call the onCancel prop (function) and emit events - */ - close() { - this.isOpen = false - this.$emit('close') - this.$emit('update:open', false) - }, - - /** - * Close fixed sidebar if clicked outside. - */ - clickedOutside(event) { - if (this.isFixed) { - if (this.isOpen && !this.animating) { - if (this.whiteList().indexOf(event.target) < 0) { - this.cancel('outside') - } - } - } - }, - - /** - * Transition before-enter hook - */ - beforeEnter() { - this.animating = true - }, - - /** - * Transition after-leave hook - */ - afterEnter() { - this.animating = false - }, - - handleScroll() { - if (typeof window === 'undefined') return - - if (this.scroll === 'clip') { - if (this.scrollClass) { - if (this.open) { - document.documentElement.classList.add(this.scrollClass) - } else { - document.documentElement.classList.remove(this.scrollClass) - } - return - } - } - this.savedScrollTop = !this.savedScrollTop - ? document.documentElement.scrollTop - : this.savedScrollTop - if (this.scrollClass) { - if (this.open) { - document.body.classList.add(this.scrollClass) - } else { - document.body.classList.remove(this.scrollClass) - } - } - if (this.open) { - document.body.style.top = `-${this.savedScrollTop}px` - return - } - document.documentElement.scrollTop = this.savedScrollTop - document.body.style.top = null - this.savedScrollTop = null - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('keyup', this.keyPress) - document.addEventListener('click', this.clickedOutside) - } - }, - mounted() { - if (typeof window !== 'undefined') { - if (this.isFixed) { - document.body.appendChild(this.$el) - } - if (this.overlay && this.open) { - this.handleScroll() - } - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('keyup', this.keyPress) - document.removeEventListener('click', this.clickedOutside) - if (this.overlay) { - // reset scroll - const savedScrollTop = !this.savedScrollTop - ? document.documentElement.scrollTop - : this.savedScrollTop - if (this.scrollClass) { - document.body.classList.remove(this.scrollClass) - document.documentElement.classList.remove(this.scrollClass) - } - document.documentElement.scrollTop = savedScrollTop - document.body.style.top = null - } - } - if (this.isFixed) { - removeElement(this.$el) - } - } -} -</script> diff --git a/packages/oruga/src/components/sidebar/__snapshots__/Sidebar.spec.js.snap b/packages/oruga/src/components/sidebar/__snapshots__/Sidebar.spec.js.snap deleted file mode 100644 index 4767f173e..000000000 --- a/packages/oruga/src/components/sidebar/__snapshots__/Sidebar.spec.js.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSidebar open render correctly 1`] = ` -<div class="o-side"> - <!----> - <transition-stub name="slide-next"> - <div class="o-side__content o-side__content--fixed" style=""></div> - </transition-stub> -</div> -`; - -exports[`OSidebar render correctly 1`] = ` -<div class="o-side"> - <!----> - <transition-stub name="slide-prev"> - <div class="o-side__content o-side__content--fixed" style="display: none;"></div> - </transition-stub> -</div> -`; diff --git a/packages/oruga/src/components/sidebar/examples/Sidebar.md b/packages/oruga/src/components/sidebar/examples/Sidebar.md deleted file mode 100644 index 3aa941970..000000000 --- a/packages/oruga/src/components/sidebar/examples/Sidebar.md +++ /dev/null @@ -1,131 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-sidebar - :fullheight="fullheight" - :fullwidth="fullwidth" - :overlay="overlay" - :right="right" - :open.sync="open" - > - <o-button v-if="fullwidth" icon-left="times" label="Close" @click="open = false" /> - <img - width="128" - src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" - alt="Lightweight UI components for Vue.js" - /> - <h3>Example</h3> - - </o-sidebar> - <div class="block"> - <o-field grouped group-multiline> - <o-switch v-model="overlay">Overlay</o-switch> - <o-switch v-model="fullheight">Fullheight</o-switch> - <o-switch v-model="fullwidth">Fullwidth</o-switch> - <o-switch v-model="right">Right</o-switch> - </o-field> - </div> - - <br> - - <o-button @click="open = true">Show</o-button> - </section> -</template> - -<script> -export default { - data() { - return { - open: false, - overlay: true, - fullheight: true, - fullwidth: false, - right: false - } - } -} -</script> -``` -::: - -### Static - -::: demo -```html -<template> - <div class="sidebar-page"> - <section class="sidebar-layout"> - <o-sidebar - position="static" - :mobile="mobile" - :expand-on-hover="expandOnHover" - :reduce="reduce" - open - > - <img - width="128" - src="https://avatars2.githubusercontent.com/u/66300512?s=200&v=4" - alt="Lightweight UI components for Vue.js" - /> - <section style="padding: 1em"> - <h5>Example 1</h5> - <h5>Example 2</h5> - <h5>Example 3</h5> - <h5>Example 4</h5> - <h5>Example 5</h5> - </section> - </o-sidebar> - - <div style="padding: 1em"> - <o-field> - <o-switch v-model="reduce">Reduced</o-switch> - </o-field> - <o-field> - <o-switch v-model="expandOnHover">Expand on hover</o-switch> - </o-field> - <br> - <o-field label="Mobile Layout"> - <o-select v-model="mobile"> - <option :value="null"></option> - <option value="reduced">Reduced</option> - <option value="hidden">Hidden</option> - <option value="fullwidth">Fullwidth</option> - </o-select> - </o-field> - </div> - </section> - </div> -</template> - -<script> -export default { - data() { - return { - expandOnHover: false, - mobile: "reduced", - reduce: false - } - } -} -</script> - -<style> -.sidebar-page { - display: flex; - flex-direction: column; - width: 100%; - min-height: 100%; -} -.sidebar-layout { - display: flex; - flex-direction: row; - min-height: 100%; -} -</style> -``` -::: diff --git a/packages/oruga/src/components/sidebar/index.js b/packages/oruga/src/components/sidebar/index.js deleted file mode 100644 index d13827352..000000000 --- a/packages/oruga/src/components/sidebar/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Sidebar from './Sidebar' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Sidebar) - } -} - -use(Plugin) - -export default Plugin - -export { - Sidebar as OSidebar -} diff --git a/packages/oruga/src/components/skeleton/Inspector.vue b/packages/oruga/src/components/skeleton/Inspector.vue deleted file mode 100644 index 90a5ca6c8..000000000 --- a/packages/oruga/src/components/skeleton/Inspector.vue +++ /dev/null @@ -1,64 +0,0 @@ -<template> - <div class="field"> - <doc-wrapper> - <template v-slot:default="s"> - <o-skeleton v-bind="s" width="264px" :count="2"></o-skeleton> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> - -export default { - data() { - return { - inspectData: [ - { - class: 'rootClass', - description : 'Class of the root element' - }, - { - class: 'animationClass', - description : 'Class of the skeleton animation', - - action: (cmp) => { - cmp.data.animated = true; - } - }, - { - class: 'positionClass', - description : 'Class of the skeleton position', - properties: ['position'], - suffixes: ['left', 'centered', 'right'], - action: (cmp) => { - cmp.data.position = 'centered'; - } - }, - { - class: 'itemClass', - description : 'Class of the skeleton item' - }, - { - class: 'itemRoundedClass', - description : 'Class of the skeleton item rounded', - properties: ['rounded'], - action: (cmp) => { - cmp.data.rounded = true; - } - }, - { - class: 'sizeClass', - description : 'Class of the skeleton size', - properties: ['size'], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - } - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/skeleton/Skeleton.spec.js b/packages/oruga/src/components/skeleton/Skeleton.spec.js deleted file mode 100644 index 74e650b87..000000000 --- a/packages/oruga/src/components/skeleton/Skeleton.spec.js +++ /dev/null @@ -1,14 +0,0 @@ -import { mount } from '@vue/test-utils' -import OSkeleton from '@components/skeleton/Skeleton' - -let wrapper - -describe('OSkeleton', () => { - beforeEach(() => { - wrapper = mount(OSkeleton) - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/skeleton/Skeleton.vue b/packages/oruga/src/components/skeleton/Skeleton.vue deleted file mode 100644 index dd259d95f..000000000 --- a/packages/oruga/src/components/skeleton/Skeleton.vue +++ /dev/null @@ -1,103 +0,0 @@ -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { toCssDimension } from '../../utils/helpers' - -/** - * A placeholder for content to load - * @displayName Skeleton - * @example ./examples/Skeleton.md - * @style _skeleton.scss - */ -export default { - name: 'OSkeleton', - mixins: [BaseComponentMixin], - configField: 'skeleton', - props: { - /** Show or hide loader */ - active: { - type: Boolean, - default: true - }, - /** Show a loading animation */ - animated: { - type: Boolean, - default: true - }, - /** Custom width */ - width: [Number, String], - /** Custom height */ - height: [Number, String], - /** Show a circle shape */ - circle: Boolean, - /** Rounded style */ - rounded: { - type: Boolean, - default: true - }, - /** Number of shapes to display */ - count: { - type: Number, - default: 1 - }, - /** - * Skeleton position in relation to the element - * @values left, centered, right - */ - position: { - type: String, - default: 'left', - validator(value) { - return [ - 'left', - 'centered', - 'right' - ].indexOf(value) > -1 - } - }, - /** - * Size of skeleton - * @values small, medium, large - */ - size: String, - rootClass: [String, Function, Array], - animationClass: [String, Function, Array], - positionClass: [String, Function, Array], - itemClass: [String, Function, Array], - itemRoundedClass: [String, Function, Array], - sizeClass: [String, Function, Array] - }, - render(h) { - if (!this.active) return - const items = [] - const width = this.width - const height = this.height - for (let i = 0; i < this.count; i++) { - items.push(h('div', - { - staticClass: this.computedClass('itemClass', 'o-sklt__item'), - class: [ - { [this.computedClass('itemRoundedClass', 'o-sklt__item--rounded')]: this.rounded }, - { [this.computedClass('animationClass', 'o-sklt__item--animated')]: this.animated }, - { [this.computedClass('sizeClass', 'o-sklt__item--', this.size)]: this.size }, - ], - key: i, - style: { - height: toCssDimension(height), - width: toCssDimension(width), - borderRadius: this.circle ? '50%' : null - } - } - )) - } - return h('div', - { - staticClass: this.computedClass('rootClass', 'o-sklt'), - class: [ - { [this.computedClass('positionClass', 'o-sklt--', this.position)]: this.position } - ] - }, - items - ) - } -} -</script> diff --git a/packages/oruga/src/components/skeleton/__snapshots__/Skeleton.spec.js.snap b/packages/oruga/src/components/skeleton/__snapshots__/Skeleton.spec.js.snap deleted file mode 100644 index 5b0a670a4..000000000 --- a/packages/oruga/src/components/skeleton/__snapshots__/Skeleton.spec.js.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSkeleton render correctly 1`] = ` -<div class="o-sklt o-sklt--left"> - <div class="o-sklt__item o-sklt__item--rounded o-sklt__item--animated"></div> -</div> -`; diff --git a/packages/oruga/src/components/skeleton/examples/Skeleton.md b/packages/oruga/src/components/skeleton/examples/Skeleton.md deleted file mode 100644 index 493f0faec..000000000 --- a/packages/oruga/src/components/skeleton/examples/Skeleton.md +++ /dev/null @@ -1,38 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <o-switch v-model="animated">Animated</o-switch> - </o-field> - - <o-skeleton width="20%" :animated="animated"></o-skeleton> - - <o-skeleton width="40%" :animated="animated"></o-skeleton> - - <o-skeleton width="80%" :animated="animated"></o-skeleton> - - <o-skeleton :animated="animated"></o-skeleton> - - <o-skeleton :animated="animated" circle width="64px" height="64px"></o-skeleton> - - <o-skeleton :animated="animated" size="large" :count="2"></o-skeleton> - - </section> -</template> - -<script> -export default { - data() { - return { - animated: true - } - } -} -</script> -``` -::: \ No newline at end of file diff --git a/packages/oruga/src/components/skeleton/index.js b/packages/oruga/src/components/skeleton/index.js deleted file mode 100644 index d27d4d29d..000000000 --- a/packages/oruga/src/components/skeleton/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Skeleton from './Skeleton' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Skeleton) - } -} - -use(Plugin) - -export default Plugin - -export { - Skeleton as OSkeleton -} diff --git a/packages/oruga/src/components/slider/Inspector.vue b/packages/oruga/src/components/slider/Inspector.vue deleted file mode 100644 index 4d5ee49b8..000000000 --- a/packages/oruga/src/components/slider/Inspector.vue +++ /dev/null @@ -1,107 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-slider v-bind="s" :min="1" :max="10" :value="4"> - <template v-for="val in [1, 2, 3, 4, 5, 6, 7, 8, 9]"> - <o-slider-tick v-bind="s" :value="val" :key="val">{{ val }}</o-slider-tick> - </template> - </o-slider> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - subitem: "slider-tick", - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "trackClass", - description: "Class of the slider track", - action: () => { - } - }, - { - class: "fillClass", - description: "Class of the filled part of the slider", - action: () => { - } - }, - { - class: "thumbRoundedClass", - description: "Class when the slider is rounded", - properties: ["rounded"], - action: (cmp) => { - cmp.data.rounded = true - } - }, - { - class: "thumbDraggingClass", - description: "Class when the thumb gets dragged", - warning: "Drag the thumb to see it in action!", - action: () => { - } - }, - { - class: "disabledClass", - description: "Class when slider is disabled", - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "thumbWrapperClass", - description: "Class of the thumb wrapper", - action: (cmp) => { - cmp.data.fullScreen = true; - } - }, - { - class: "thumbClass", - description: "Class of the thumb", - action: (cmp) => { - cmp.data.fullScreen = true; - } - }, - { - class: "variantClass", - description : 'Class of the slider variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - this.position = 'static'; - cmp.data.variant = 'warning'; - } - }, - { - class: "tickClass", - description: "Class of slider tick", - properties: ["ticks"], - subitem: true, - }, - { - class: "tickHiddenClass", - description: "Class when slider tick is hidden", - properties: ["ticks"], - subitem: true, - }, - { - class: "tickLabelClass", - description: "Class of tick label", - properties: ["ticks"], - subitem: true, - } - ] - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/slider/Slider.spec.js b/packages/oruga/src/components/slider/Slider.spec.js deleted file mode 100644 index 7d757edad..000000000 --- a/packages/oruga/src/components/slider/Slider.spec.js +++ /dev/null @@ -1,47 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OSlider from '@components/slider/Slider' - -let wrapper - -describe('OSlider', () => { - beforeEach(() => { - wrapper = shallowMount(OSlider) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage props correctly', async () => { - const newVariant = 'is-info' - expect(wrapper.vm.newTooltipVariant).toBe(wrapper.vm.variant) - wrapper.setProps({ tooltipVariant: newVariant }) - expect(wrapper.vm.newTooltipVariant).toBe(newVariant) - - const value1 = 3 - const value2 = 5 - const value = [value1, value2] - const min = 1 - const max = 7 - wrapper.setProps({ value, min, max }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.value1).toBe(value1) - expect(wrapper.vm.value2).toBe(value2) - expect(wrapper.vm.minValue).toBe(value1) - expect(wrapper.vm.maxValue).toBe(value2) - - expect(wrapper.vm.tickValues).toEqual([]) - wrapper.setProps({ ticks: true }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.tickValues).toEqual([2, 3, 4, 5, 6]) - - expect(wrapper.vm.precision).toBe(0) - wrapper.setProps({ step: 0.5 }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.precision).toBe(1) - }) -}) diff --git a/packages/oruga/src/components/slider/Slider.vue b/packages/oruga/src/components/slider/Slider.vue deleted file mode 100644 index d43b28d29..000000000 --- a/packages/oruga/src/components/slider/Slider.vue +++ /dev/null @@ -1,387 +0,0 @@ -<template> - <div - @click="onSliderClick" - :class="rootClasses"> - <div - :class="trackClasses" - ref="slider"> - <div - :class="fillClasses" - :style="barStyle"/> - <template v-if="ticks"> - <o-slider-tick - v-for="(val, key) in tickValues" - :key="key" - :value="val"/> - </template> - <slot/> - <o-slider-thumb - v-model="value1" - :variant="newTooltipVariant" - :tooltip="tooltip" - :custom-formatter="customFormatter" - :indicator="indicator" - ref="button1" - role="slider" - :format="format" - :locale="locale" - :tooltip-always="tooltipAlways" - :aria-valuenow="value1" - :aria-valuemin="min" - :aria-valuemax="max" - aria-orientation="horizontal" - :aria-label="Array.isArray(ariaLabel) ? ariaLabel[0] : ariaLabel" - :aria-disabled="disabled" - @dragstart="onDragStart" - @dragend="onDragEnd" /> - <o-slider-thumb - v-model="value2" - :variant="newTooltipVariant" - :tooltip="tooltip" - :custom-formatter="customFormatter" - :indicator="indicator" - ref="button2" - v-if="isRange" - role="slider" - :format="format" - :locale="locale" - :tooltip-always="tooltipAlways" - :aria-valuenow="value2" - :aria-valuemin="min" - :aria-valuemax="max" - aria-orientation="horizontal" - :aria-label="Array.isArray(ariaLabel) ? ariaLabel[1] : ''" - :aria-disabled="disabled" - @dragstart="onDragStart" - @dragend="onDragEnd" /> - </div> - </div> -</template> - -<script> -import SliderThumb from './SliderThumb' -import SliderTick from './SliderTick' - -import { getOptions } from '../../utils/config' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { getValueByPath } from '../../utils/helpers' - -/** - * A slider to select a value or range from a given range - * @displayName Slider - * @requires ./SliderTick.vue - * @example ./examples/Slider.md - * @style _slider.scss - */ -export default { - name: 'OSlider', - components: { - [SliderThumb.name]: SliderThumb, - [SliderTick.name]: SliderTick - }, - configField: 'slider', - mixins: [BaseComponentMixin], - provide() { - return { - $slider: this - } - }, - props: { - /** @model */ - value: { - type: [Number, Array], - default: 0 - }, - /** Minimum value */ - min: { - type: Number, - default: 0 - }, - /** Maximum value */ - max: { - type: Number, - default: 100 - }, - /** Step interval of ticks */ - step: { - type: Number, - default: 1 - }, - /** - * Color of the slider - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: { - type: String - }, - /** - * Vertical size of slider, optional - * @values small, medium, large - */ - size: String, - /** Show tick marks */ - ticks: { - type: Boolean, - default: false - }, - /** Show tooltip when thumb is being dragged */ - tooltip: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'slider.tooltip', true) - } - }, - /** - * Color of the tooltip - * @values primary, info, success, warning, danger, and any other custom color - */ - tooltipVariant: String, - /** Rounded thumb */ - rounded: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'slider.rounded', false) - } - }, - disabled: { - type: Boolean, - default: false - }, - /** Update v-model only when dragging is finished */ - lazy: { - type: Boolean, - default: false - }, - /** Function to format the tooltip label for display */ - customFormatter: Function, - ariaLabel: [String, Array], - /** Increases slider size on focus */ - biggerSliderFocus: { - type: Boolean, - default: false - }, - indicator: { - type: Boolean, - default: false - }, - format: { - type: String, - default: 'raw', - validator: (value) => { - return [ - 'raw', - 'percent' - ].indexOf(value) >= 0 - } - }, - locale: { - type: [String, Array], - default: () => { - return getValueByPath(getOptions(), 'locale') - } - }, - /** Tooltip displays always */ - tooltipAlways: { - type: Boolean, - default: false - }, - rootClass: [String, Function, Array], - sizeClass: [String, Function, Array], - trackClass: [String, Function, Array], - fillClass: [String, Function, Array], - thumbRoundedClass: [String, Function, Array], - thumbDraggingClass: [String, Function, Array], - disabledClass: [String, Function, Array], - thumbWrapperClass: [String, Function, Array], - thumbClass: [String, Function, Array], - variantClass: [String, Function, Array] - }, - data() { - return { - value1: null, - value2: null, - dragging: false, - isRange: false - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-slide'), - { [this.computedClass('sizeClass', 'o-slide--', this.size)]: this.size }, - { [this.computedClass('disabledClass', 'o-slide--disabled')]: this.disabled }, - ] - }, - trackClasses() { - return [ - this.computedClass('trackClass', 'o-slide__track'), - ] - }, - fillClasses() { - return [ - this.computedClass('fillClass', 'o-slide__fill'), - { [this.computedClass('variantClass', 'o-slide__fill--', this.variant)]: this.variant }, - ] - }, - thumbClasses() { - return [ - this.computedClass('thumbClass', 'o-slide__thumb'), - { [this.computedClass('thumbDraggingClass', 'o-slide__thumb--dragging')]: this.dragging }, - { [this.computedClass('thumbRoundedClass', 'o-slide__thumb--rounded')]: this.rounded }, - - ] - }, - thumbWrapperClasses() { - return [ - this.computedClass('thumbWrapperClass', 'o-slide__thumb-wrapper'), - ] - }, - newTooltipVariant() { - return this.tooltipVariant ? this.tooltipVariant : this.variant - }, - tickValues() { - if (!this.ticks || this.min > this.max || this.step === 0) return [] - const result = [] - for (let i = this.min + this.step; i < this.max; i = i + this.step) { - result.push(i) - } - return result - }, - minValue() { - return Math.min(this.value1, this.value2) - }, - maxValue() { - return Math.max(this.value1, this.value2) - }, - barSize() { - return this.isRange - ? `${100 * (this.maxValue - this.minValue) / (this.max - this.min)}%` - : `${100 * (this.value1 - this.min) / (this.max - this.min)}%` - }, - barStart() { - return this.isRange - ? `${100 * (this.minValue - this.min) / (this.max - this.min)}%` - : '0%' - }, - precision() { - const precisions = [this.min, this.max, this.step].map((item) => { - const decimal = ('' + item).split('.')[1] - return decimal ? decimal.length : 0 - }) - return Math.max(...precisions) - }, - barStyle() { - return { - width: this.barSize, - left: this.barStart - } - } - }, - watch: { - value1() { - this.onInternalValueUpdate() - }, - value2() { - this.onInternalValueUpdate() - }, - min() { - this.setValues(this.value) - }, - max() { - this.setValues(this.value) - }, - /** - * When v-model is changed set the new active step. - */ - value(value) { - this.setValues(value) - } - }, - methods: { - setValues(newValue) { - if (this.min > this.max) { - return - } - if (Array.isArray(newValue)) { - this.isRange = true - const smallValue = typeof newValue[0] !== 'number' || isNaN(newValue[0]) - ? this.min - : Math.min(Math.max(this.min, newValue[0]), this.max) - const largeValue = typeof newValue[1] !== 'number' || isNaN(newValue[1]) - ? this.max - : Math.max(Math.min(this.max, newValue[1]), this.min) - this.value1 = this.isThumbReversed ? largeValue : smallValue - this.value2 = this.isThumbReversed ? smallValue : largeValue - } else { - this.isRange = false - this.value1 = isNaN(newValue) - ? this.min - : Math.min(this.max, Math.max(this.min, newValue)) - this.value2 = null - } - }, - onInternalValueUpdate() { - if (this.isRange) { - this.isThumbReversed = this.value1 > this.value2 - } - if (!this.lazy || !this.dragging) { - this.emitValue('input') - } - if (this.dragging) { - this.emitValue('dragging') - } - }, - sliderSize() { - return this.$refs.slider.getBoundingClientRect().width - }, - onSliderClick(event) { - if (this.disabled || this.isTrackClickDisabled) return - const sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left - const percent = (event.clientX - sliderOffsetLeft) / this.sliderSize() * 100 - const targetValue = this.min + percent * (this.max - this.min) / 100 - const diffFirst = Math.abs(targetValue - this.value1) - if (!this.isRange) { - if (diffFirst < this.step / 2) return - this.$refs.button1.setPosition(percent) - } else { - const diffSecond = Math.abs(targetValue - this.value2) - if (diffFirst <= diffSecond) { - if (diffFirst < this.step / 2) return - this.$refs['button1'].setPosition(percent) - } else { - if (diffSecond < this.step / 2) return - this.$refs['button2'].setPosition(percent) - } - } - this.emitValue('change') - }, - onDragStart() { - this.dragging = true - this.$emit('dragstart') - }, - onDragEnd() { - this.isTrackClickDisabled = true - setTimeout(() => { - // avoid triggering onSliderClick after dragend - this.isTrackClickDisabled = false - }, 0) - this.dragging = false - this.$emit('dragend') - if (this.lazy) { - this.emitValue('input') - } - }, - emitValue(event) { - const val = this.isRange - ? [this.minValue, this.maxValue] - : this.value1 - this.$emit(event, val) - } - }, - created() { - this.isThumbReversed = false - this.isTrackClickDisabled = false - this.setValues(this.value) - } -} -</script> diff --git a/packages/oruga/src/components/slider/SliderThumb.spec.js b/packages/oruga/src/components/slider/SliderThumb.spec.js deleted file mode 100644 index ec8740585..000000000 --- a/packages/oruga/src/components/slider/SliderThumb.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -import { mount } from '@vue/test-utils' -import OSlider from '@components/slider/Slider' - -let wrapper -let wrapperParent - -describe('OSliderThumb', () => { - beforeEach(() => { - wrapperParent = mount(OSlider, { - propsData: { - step: 5, - } - }) - wrapper = wrapperParent.find({ ref: 'button1' }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('inherits parent properties', () => { - expect(wrapper.vm.step).toBe(5) - }) - - it('manage focus', () => { - wrapper.vm.onFocus() - expect(wrapper.vm.isFocused).toBeTruthy() - - wrapper.vm.onBlur() - expect(wrapper.vm.isFocused).toBeFalsy() - }) -}) diff --git a/packages/oruga/src/components/slider/SliderThumb.vue b/packages/oruga/src/components/slider/SliderThumb.vue deleted file mode 100644 index 0d9fd2312..000000000 --- a/packages/oruga/src/components/slider/SliderThumb.vue +++ /dev/null @@ -1,230 +0,0 @@ -<template> - <div - :class="$slider.thumbWrapperClasses" - :style="wrapperStyle"> - <o-tooltip - :label="formattedValue" - :variant="variant" - :always="dragging || isFocused || tooltipAlways" - :active="!disabled && tooltip"> - <div - :class="$slider.thumbClasses" - :tabindex="disabled ? false : 0" - v-bind="$attrs" - @mousedown="onButtonDown" - @touchstart="onButtonDown" - @focus="onFocus" - @blur="onBlur" - @keydown.left.prevent="onLeftKeyDown" - @keydown.right.prevent="onRightKeyDown" - @keydown.down.prevent="onLeftKeyDown" - @keydown.up.prevent="onRightKeyDown" - @keydown.home.prevent="onHomeKeyDown" - @keydown.end.prevent="onEndKeyDown"> - <span v-if="indicator">{{ formattedValue }}</span> - </div> - </o-tooltip> - </div> -</template> - -<script> -import Tooltip from '../tooltip/Tooltip' - -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -export default { - name: 'OSliderThumb', - components: { - [Tooltip.name]: Tooltip - }, - configField: 'slider', - inheritAttrs: false, - inject: { - $slider: { name: '$slider' } - }, - props: { - value: { - type: Number, - default: 0 - }, - variant: { - type: String, - default: '' - }, - tooltip: { - type: Boolean, - default: true - }, - indicator: { - type: Boolean, - default: false - }, - customFormatter: Function, - format: { - type: String, - default: 'raw', - validator: (value) => { - return [ - 'raw', - 'percent' - ].indexOf(value) >= 0 - } - }, - locale: { - type: [String, Array], - default: () => { - return getValueByPath(getOptions(), 'locale') - } - }, - tooltipAlways: { - type: Boolean, - default: false - } - }, - data() { - return { - isFocused: false, - dragging: false, - startX: 0, - startPosition: 0, - newPosition: null, - oldValue: this.value - } - }, - computed: { - disabled() { - return this.$parent.disabled - }, - max() { - return this.$parent.max - }, - min() { - return this.$parent.min - }, - step() { - return this.$parent.step - }, - precision() { - return this.$parent.precision - }, - currentPosition() { - return `${(this.value - this.min) / (this.max - this.min) * 100}%` - }, - wrapperStyle() { - return { left: this.currentPosition } - }, - formattedValue() { - if (typeof this.customFormatter !== 'undefined') { - return this.customFormatter(this.value) - } - if (this.format === 'percent') { - return new Intl.NumberFormat( - this.locale, - { - style: 'percent' - } - ).format(((this.value - this.min)) / (this.max - this.min)) - } - return new Intl.NumberFormat(this.locale).format(this.value) - } - }, - methods: { - onFocus() { - this.isFocused = true - }, - onBlur() { - this.isFocused = false - }, - onButtonDown(event) { - if (this.disabled) return - event.preventDefault() - this.onDragStart(event) - if (typeof window !== 'undefined') { - document.addEventListener('mousemove', this.onDragging) - document.addEventListener('touchmove', this.onDragging) - document.addEventListener('mouseup', this.onDragEnd) - document.addEventListener('touchend', this.onDragEnd) - document.addEventListener('contextmenu', this.onDragEnd) - } - }, - onLeftKeyDown() { - if (this.disabled || this.value === this.min) return - this.newPosition = parseFloat(this.currentPosition) - - this.step / (this.max - this.min) * 100 - this.setPosition(this.newPosition) - this.$parent.emitValue('change') - }, - onRightKeyDown() { - if (this.disabled || this.value === this.max) return - this.newPosition = parseFloat(this.currentPosition) + - this.step / (this.max - this.min) * 100 - this.setPosition(this.newPosition) - this.$parent.emitValue('change') - }, - onHomeKeyDown() { - if (this.disabled || this.value === this.min) return - this.newPosition = 0 - this.setPosition(this.newPosition) - this.$parent.emitValue('change') - }, - onEndKeyDown() { - if (this.disabled || this.value === this.max) return - this.newPosition = 100 - this.setPosition(this.newPosition) - this.$parent.emitValue('change') - }, - onDragStart(event) { - this.dragging = true - this.$emit('dragstart') - if (event.type === 'touchstart') { - event.clientX = event.touches[0].clientX - } - this.startX = event.clientX - this.startPosition = parseFloat(this.currentPosition) - this.newPosition = this.startPosition - }, - onDragging(event) { - if (this.dragging) { - if (event.type === 'touchmove') { - event.clientX = event.touches[0].clientX - } - const diff = (event.clientX - this.startX) / this.$parent.sliderSize() * 100 - this.newPosition = this.startPosition + diff - this.setPosition(this.newPosition) - } - }, - onDragEnd() { - this.dragging = false - this.$emit('dragend') - if (this.value !== this.oldValue) { - this.$parent.emitValue('change') - } - this.setPosition(this.newPosition) - if (typeof window !== 'undefined') { - document.removeEventListener('mousemove', this.onDragging) - document.removeEventListener('touchmove', this.onDragging) - document.removeEventListener('mouseup', this.onDragEnd) - document.removeEventListener('touchend', this.onDragEnd) - document.removeEventListener('contextmenu', this.onDragEnd) - } - }, - setPosition(percent) { - if (percent === null || isNaN(percent)) return - if (percent < 0) { - percent = 0 - } else if (percent > 100) { - percent = 100 - } - const stepLength = 100 / ((this.max - this.min) / this.step) - const steps = Math.round(percent / stepLength) - let value = steps * stepLength / 100 * (this.max - this.min) + this.min - value = parseFloat(value.toFixed(this.precision)) - this.$emit('input', value) - if (!this.dragging && value !== this.oldValue) { - this.oldValue = value - } - } - } -} -</script> diff --git a/packages/oruga/src/components/slider/SliderTick.spec.js b/packages/oruga/src/components/slider/SliderTick.spec.js deleted file mode 100644 index be52d59e6..000000000 --- a/packages/oruga/src/components/slider/SliderTick.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -import { mount } from '@vue/test-utils' -import OSlider from '@components/slider/Slider' -import OSliderTick from '@components/slider/SliderTick' - -let wrapper -let wrapperParent - -const WrapperComp = { - template: ` - <OSlider> - <OSliderTick ref="tick" /> - </OSlider>`, - components: { - OSlider, OSliderTick - } -} - -describe('OSliderTick', () => { - beforeEach(() => { - wrapperParent = mount(WrapperComp) - wrapper = wrapperParent.find({ ref: 'tick' }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/slider/SliderTick.vue b/packages/oruga/src/components/slider/SliderTick.vue deleted file mode 100644 index 0d3b40e43..000000000 --- a/packages/oruga/src/components/slider/SliderTick.vue +++ /dev/null @@ -1,64 +0,0 @@ -<template> - <div - :class="rootClasses" - :style="tickStyle"> - <span v-if="$slots.default" :class="tickLabelClasses"> - <slot/> - </span> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' - -/** - * @displayName Slider Tick - */ -export default { - name: 'OSliderTick', - mixins: [BaseComponentMixin], - configField: 'slider', - inject: { - $slider: { name: '$slider' } - }, - props: { - /** Value of single tick */ - value: { - variant: Number, - default: 0 - }, - tickClass: [String, Function, Array], - tickHiddenClass: [String, Function, Array], - tickLabelClass: [String, Function, Array] - }, - computed: { - rootClasses() { - return [ - this.computedClass('tickClass', 'o-slide__tick'), - { [this.computedClass('tickHiddenClass', 'o-slide__tick--hidden')]: this.hidden }, - ] - }, - tickLabelClasses() { - return [ - this.computedClass('tickLabelClass', 'o-slide__tick-label') - ] - }, - position() { - const pos = (this.value - this.$parent.min) / - (this.$parent.max - this.$parent.min) * 100 - return (pos >= 0 && pos <= 100) ? pos : 0 - }, - hidden() { - return this.value === this.$parent.min || this.value === this.$parent.max - }, - tickStyle() { - return { 'left': this.position + '%' } - } - }, - created() { - if (!this.$slider) { - throw new Error('You should wrap oSliderTick on a oSlider') - } - } -} -</script> diff --git a/packages/oruga/src/components/slider/__snapshots__/Slider.spec.js.snap b/packages/oruga/src/components/slider/__snapshots__/Slider.spec.js.snap deleted file mode 100644 index 8e3479725..000000000 --- a/packages/oruga/src/components/slider/__snapshots__/Slider.spec.js.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSlider render correctly 1`] = ` -<div class="o-slide"> - <div class="o-slide__track"> - <div class="o-slide__fill" style="width: 0%; left: 0%;"></div> - <!----> - <o-slider-thumb-stub value="0" variant="" tooltip="true" format="raw" role="slider" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-orientation="horizontal"></o-slider-thumb-stub> - <!----> - </div> -</div> -`; diff --git a/packages/oruga/src/components/slider/__snapshots__/SliderThumb.spec.js.snap b/packages/oruga/src/components/slider/__snapshots__/SliderThumb.spec.js.snap deleted file mode 100644 index aed5f53f4..000000000 --- a/packages/oruga/src/components/slider/__snapshots__/SliderThumb.spec.js.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSliderThumb render correctly 1`] = ` -<div class="o-slide__thumb-wrapper" style="left: 0%;"> - <div class="o-tip"> - <div class="o-tip__content o-tip__content--top" style="display: none;"><span class="o-tip__arrow o-tip__arrow--top"></span> 0</div> - <div class="o-tip__trigger"> - <div tabindex="0" role="slider" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-orientation="horizontal" class="o-slide__thumb"> - <!----> - </div> - </div> - </div> -</div> -`; diff --git a/packages/oruga/src/components/slider/__snapshots__/SliderTick.spec.js.snap b/packages/oruga/src/components/slider/__snapshots__/SliderTick.spec.js.snap deleted file mode 100644 index 338bd3320..000000000 --- a/packages/oruga/src/components/slider/__snapshots__/SliderTick.spec.js.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSliderTick render correctly 1`] = ` -<div class="o-slide__tick o-slide__tick--hidden" style="left: 0%;"> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/slider/examples/Slider.md b/packages/oruga/src/components/slider/examples/Slider.md deleted file mode 100644 index 8e32c8223..000000000 --- a/packages/oruga/src/components/slider/examples/Slider.md +++ /dev/null @@ -1,152 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field label="Simple"> - <o-slider v-model="value"></o-slider> - </o-field> - - <o-field label="Warning"> - <o-slider v-model="value" variant="warning"></o-slider> - </o-field> - - <o-field label="Large"> - <o-slider v-model="value" size="large"></o-slider> - </o-field> - - <o-field label="Disabled"> - <o-slider :value="30" disabled></o-slider> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - value: 5 - } - } - } -</script> -``` -::: - -### Customize - -::: demo -```html -<template> - <section> - <o-field label="Tooltip type"> - <o-slider v-model="sliderValue" :tooltip-variant="sliderType"></o-slider> - </o-field> - - <o-field label="Hide tooltip"> - <o-slider :tooltip="false"></o-slider> - </o-field> - - <o-field label="Custom tooltip label"> - <o-slider :custom-formatter="val => val + '%'"></o-slider> - </o-field> - - <o-field label="Rounded thumb"> - <o-slider rounded></o-slider> - </o-field> - </section> -</template> - -<script> - export default { - data() { - return { - sliderValue: 0 - } - }, - computed:{ - sliderType(){ - if (this.sliderValue > 25 && this.sliderValue < 75){ - return "warning"; - } else if (this.sliderValue >= 75){ - return "success"; - } - return "danger"; - } - } - } -</script> -``` -::: - -### Tick and label - -::: demo -```html -<template> - <section> - <o-field label="Show ticks"> - <o-slider :min="1" :max="10" ticks></o-slider> - </o-field> - - <o-field label="Custom tick and label"> - <o-slider size="medium" :min="0" :max="10"> - <template v-for="val in [3, 5, 8]"> - <o-slider-tick :value="val" :key="val">{{ val }}</o-slider-tick> - </template> - </o-slider> - </o-field> - - <o-field label="Fan"> - <o-slider :min="0" :max="3" aria-label="Fan" :tooltip="false"> - <o-slider-tick :value="0">Off</o-slider-tick> - <o-slider-tick :value="1">Low</o-slider-tick> - <o-slider-tick :value="2">High</o-slider-tick> - <o-slider-tick :value="3">Auto</o-slider-tick> - </o-slider> - </o-field> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - - -### Range - -::: demo -```html -<template> - <section> - <o-field> - <o-slider v-model="numbers" :min="1" :max="15" :step="0.5" ticks> - </o-slider> - </o-field> - - <o-field> - <o-slider v-model="numbers2" variant="danger" :min="-2" :max="8" :step="2"> - </o-slider> - </o-field> - - </section> -</template> - -<script> - export default { - data() { - return { - numbers: [2, 5], - numbers2: [2, 6] - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/slider/index.js b/packages/oruga/src/components/slider/index.js deleted file mode 100644 index 7d88e8c60..000000000 --- a/packages/oruga/src/components/slider/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import Slider from './Slider' -import SliderTick from './SliderTick' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Slider) - registerComponent(Vue, SliderTick) - } -} - -use(Plugin) - -export default Plugin - -export { - Slider as OSlider, - SliderTick as OSliderTick -} diff --git a/packages/oruga/src/components/steps/Inspector.vue b/packages/oruga/src/components/steps/Inspector.vue deleted file mode 100644 index 769aee692..000000000 --- a/packages/oruga/src/components/steps/Inspector.vue +++ /dev/null @@ -1,193 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-steps v-bind="s" v-model="activeStep"> - <o-step-item v-bind="s" label="Account" icon="user-lock" step="1"> - <h1 class="title has-text-centered">Account</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - <o-step-item v-bind="s" label="Profile" icon="user" clickable step="2"> - <h1 class="title has-text-centered">Profile</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - <o-step-item v-bind="s" label="Social" icon="user-plus" step="3"> - <h1 class="title has-text-centered">Social</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - </o-steps> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - activeStep: 1, - subitem: 'step-item', - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "mobileClass", - description: "Class of steps component when on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "sizeClass", - description: "Size of the steps", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: "verticalClass", - description: "Class of the tooltip trigger", - properties: ['vertical'], - action: (cmp) => { - cmp.data.vertical = true - } - }, - { - class: "positionClass", - description: "Class of the Steps component when is vertical and its position changes", - properties: ['position', 'vertical'], - suffixes: ['bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.vertical = true - cmp.data.position = 'right' - } - }, - { - class: "itemClass", - description: "Class of the content item", - subitem: true - }, - { - class: "itemHeaderClass", - description: "Class of the nav item", - specificity: "when <b>positionClass</b> is applied", - subitem: true - }, - { - class: "itemHeaderActiveClass", - description: "Class of the nav item when active", - subitem: true - }, - { - class: "itemHeaderPreviousClass", - description: "Class of the nav item behind the active one", - subitem: true, - action: () => { - this.activeStep = 2; - } - }, - { - class: "itemHeaderVariantClass", - description: "Class of the nav item with variant (default value by parent steps component)", - subitem: true, - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - }, - { - class: "stepsClass", - description: "Class of the steps container", - specificity: "when <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "animatedClass", - description: "Class of Steps component when animation gets triggered", - properties: ['animated'], - action: (cmp) => { - cmp.data.animated = true - } - }, - { - class: "stepMarkerRoundedClass", - description: "Class of the Steps markers trigger when are rounded", - properties: ['rounded'], - action: (cmp) => { - cmp.data.position = 'right' - } - }, - { - class: "stepDividerClass", - description: "Class of the Steps component dividers", - specificity: "when <b>mobileClass</b> or <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> or <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "stepMarkerClass", - description: "Class of the Steps component marker", - specificity: "when <b>itemHeaderActiveClass</b> or <b>itemHeaderPreviousClass</b> is applied", - action: () => { - } - }, - { - class: "stepContentClass", - description: "Class of the Steps component content", - specificity: "when <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "stepContentTransitioningClass", - description: "Class of the Steps component content when transition is happening", - warning: "Click on a marker to see it in action", - action: () => { - } - }, - { - class: "stepNavigationClass", - description: "Class of the Steps component navigation element", - specificity: "when <b>positionClass</b> is applied", - action: () => { - } - }, - { - class: "stepLinkLabelClass", - description: "Class of the Step component link label", - action: () => { - } - }, - { - class: "stepLinkClass", - description: "Class of the Steps component link", - specificity: "when <b>itemHeaderActiveClass</b> is applied", - action: () => { - } - }, - { - class: "stepLinkClickableClass", - description: "Class of the Steps component link when clickable", - properties: ["clickable"], - action: () => { - } - }, - { - class: "stepLinkLabelPositionClass", - description: "Class of the Step component link label when positioned", - properties: ['labelPosition'], - suffixes: ['bottom', 'right', 'left'], - action: (cmp) => { - cmp.data.labelPosition = "right" - } - } - ] - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/steps/StepItem.spec.js b/packages/oruga/src/components/steps/StepItem.spec.js deleted file mode 100644 index 9386221f8..000000000 --- a/packages/oruga/src/components/steps/StepItem.spec.js +++ /dev/null @@ -1,79 +0,0 @@ -import {mount} from '@vue/test-utils' -import OSteps from '@components/steps/Steps' -import OStepItem from '@components/steps/StepItem' - -let wrapper - -const WrapperComp = { - template: ` - <OSteps> - <OStepItem/> - <OStepItem ref="testItem"/> - <OStepItem :visible="false"/> - </OSteps>`, - components: { - OSteps, OStepItem - } -} - -describe('OStepItem', () => { - beforeEach(() => { - wrapper = mount(WrapperComp, { sync: false }).find({ ref: 'testItem' }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('computes its position correctly', () => { - expect(wrapper.vm.index).toBe(1) - }) - - it('transition correctly when activate is called', () => { - wrapper.vm.activate(0) - expect(wrapper.vm.transitionName).toBe('slide-prev') - - wrapper.vm.activate(2) - expect(wrapper.vm.transitionName).toBe('slide-next') - }) - - it('transition correctly when deactivate is called', () => { - wrapper.vm.deactivate(2) - expect(wrapper.vm.transitionName).toBe('slide-prev') - - wrapper.vm.deactivate(0) - expect(wrapper.vm.transitionName).toBe('slide-next') - }) - - it('emits an activate event', async () => { - await wrapper.vm.activate(1) - const activateEmitted = wrapper.emitted()['activate'] - expect(activateEmitted).toBeTruthy() - }) - - /* - it('doesn\'t mount when it has no parent', () => { - const spy = jest.spyOn(global.console, 'error').mockImplementation(() => {}) - - try { - wrapper = mount({ - template: `<OStepItem/>`, - components: { - OStepItem - }, - destroyed() { - spy() - } - }) - } catch (error) { - expect(error.message).stringMatching(/You should wrap/) - } finally { - spy.mockRestore() - } - }) - */ -}) diff --git a/packages/oruga/src/components/steps/StepItem.vue b/packages/oruga/src/components/steps/StepItem.vue deleted file mode 100644 index a87a23368..000000000 --- a/packages/oruga/src/components/steps/StepItem.vue +++ /dev/null @@ -1,45 +0,0 @@ -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin.js' -import TabbedChildMixin from '../../utils/TabbedChildMixin.js' - -/** - * @displayName Step Item - */ -export default { - name: 'OStepItem', - mixins: [BaseComponentMixin, TabbedChildMixin('step')], - configField: 'steps', - props: { - /** Step marker content (when there is no icon) */ - step: [String, Number], - /** Default style for the step, optional This will override parent type. Could be used to set a completed step to "success" for example */ - variant: [String, Object], - /** Item can be used directly to navigate. If undefined, previous steps are clickable while the others are not */ - clickable: { - type: Boolean, - default: undefined - }, - itemClass: [String, Function, Array], - itemHeaderClass: [String, Function, Array], - itemHeaderActiveClass: [String, Function, Array], - itemHeaderPreviousClass: [String, Function, Array], - itemHeaderVariantClass: [String, Function, Array] - }, - computed: { - elementClasses() { - return [ - this.computedClass('itemClass', 'o-steps__item') - ] - }, - itemClasses() { - return [ - this.headerClass, - this.computedClass('itemHeaderClass', 'o-steps__nav-item'), - { [this.computedClass('itemHeaderVariantClass', 'o-steps__nav-item--', this.variant || this.parent.variant)]: this.variant || this.parent.variant }, - { [this.computedClass('itemHeaderActiveClass', 'o-steps__nav-item-active')]: this.isActive }, - { [this.computedClass('itemHeaderPreviousClass', 'o-steps__nav-item-previous')]: this.parent.activeItem.index > this.index } - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/steps/Steps.spec.js b/packages/oruga/src/components/steps/Steps.spec.js deleted file mode 100644 index c0bb1b689..000000000 --- a/packages/oruga/src/components/steps/Steps.spec.js +++ /dev/null @@ -1,132 +0,0 @@ -import { mount } from '@vue/test-utils' -import OSteps from '@components/steps/Steps' -import OStepItem from '@components/steps/StepItem' - -let wrapper - -const WrapperComp = { - template: ` - <OSteps :value="1"> - <OStepItem></OStepItem> - <OStepItem :visible="false"></OStepItem> - <OStepItem :clickable="false"></OStepItem> - </OSteps>`, - components: { - OSteps, OStepItem - } -} - -describe('OSteps', () => { - beforeEach(() => { - wrapper = mount(WrapperComp, { sync: false }).find(OSteps) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - /* - it('emit input event with value when active step is modified', async () => { - wrapper.vm.activeId = wrapper.vm.items[0].value - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - const valueEmitted = wrapper.emitted().input - - expect(valueEmitted).toBeTruthy() - expect(valueEmitted.length).toBe(1) - expect(valueEmitted[0][0]).toBe(0) - }) - */ - - it('manage next/previous listener', async () => { - // First input - wrapper.setProps({value: 0}) - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - expect(wrapper.vm.value).toBe(0) - - expect(wrapper.vm.hasNext).toBeTruthy() - wrapper.vm.next() - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - // Simulate v-model - wrapper.setProps( - {value: wrapper.emitted().input[wrapper.emitted().input.length - 1][0]} - ) - - const emitted = wrapper.emitted().input - - expect(emitted).toBeTruthy() - expect(emitted.length).toBe(1) - expect(emitted[0][0]).toBe(3) - - expect(wrapper.vm.hasNext).toBeFalsy() - - wrapper.vm.next() - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - // Simulate v-model - wrapper.setProps( - {value: wrapper.emitted().input[wrapper.emitted().input.length - 1][0]} - ) - - expect(wrapper.emitted().input.length).toBe(1) // To still be - - expect(wrapper.vm.hasPrev).toBeTruthy() - wrapper.vm.prev() - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - // Simulate v-model - wrapper.setProps( - {value: wrapper.emitted().input[wrapper.emitted().input.length - 1][0]} - ) - - expect(wrapper.emitted().input.length).toBe(2) - expect(wrapper.emitted().input[1][0]).toBe(1) - expect(wrapper.vm.hasPrev).toBeFalsy() - - wrapper.vm.prev() - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - expect(wrapper.emitted().input.length).toBe(2) // To still be - }) - - it('manage wrapper classes as expected', () => { - expect(wrapper.vm.wrapperClasses[2]['o-steps__wrapper-vertical']).toBeFalsy() - - wrapper.setProps({vertical: true}) - expect(wrapper.vm.wrapperClasses[2]['o-steps__wrapper-vertical']).toBeTruthy() - - wrapper.setProps({position: 'right'}) - expect(wrapper.vm.wrapperClasses[3]['o-steps__wrapper-position-right']).toBeTruthy() - }) - - it('throws an error when there is no item', () => { - const spy = jest.spyOn(global.console, 'error').mockImplementation(() => {}) - - try { - wrapper = mount({ - template: `<OSteps/>`, - components: { - OSteps - }, - destroyed() { - spy() - } - }) - } catch (error) { - expect(error.message).stringMatching(/item inside/) - } finally { - spy.mockRestore() - } - }) -}) diff --git a/packages/oruga/src/components/steps/Steps.vue b/packages/oruga/src/components/steps/Steps.vue deleted file mode 100644 index ac635ba1a..000000000 --- a/packages/oruga/src/components/steps/Steps.vue +++ /dev/null @@ -1,305 +0,0 @@ -<template> - <div :class="wrapperClasses"> - <nav :class="mainClasses"> - <div - v-for="(childItem, index) in items" - :key="childItem.newValue" - v-show="childItem.visible" - :class="childItem.itemClasses" - > - <span - v-if="index > 0" - :class="stepDividerClasses"> - </span> - <a - :class="stepLinkClasses(childItem)" - @click="isItemClickable(childItem) && childClick(childItem)"> - <div :class="stepMarkerClasses"> - <o-icon - v-if="childItem.icon" - :icon="childItem.icon" - :pack="childItem.iconPack" - :size="size"/> - <span v-else-if="childItem.step">{{ childItem.step }}</span> - </div> - <div :class="stepLinkLabelClasses">{{ childItem.label }}</div> - </a> - </div> - </nav> - <section :class="stepContentClasses"> - <slot/> - </section> - <slot - name="navigation" - :previous="navigationProps.previous" - :next="navigationProps.next"> - <nav v-if="hasNavigation" :class="stepNavigationClasses"> - <o-button - role="button" - :icon-left="iconPrev" - :icon-pack="iconPack" - icon-both - :disabled="navigationProps.previous.disabled" - @click.prevent="navigationProps.previous.action" - :aria-label="ariaPreviousLabel"> - </o-button> - <o-button - role="button" - :icon-left="iconNext" - :icon-pack="iconPack" - icon-both - :disabled="navigationProps.next.disabled" - @click.prevent="navigationProps.next.action" - :aria-label="ariaNextLabel"> - </o-button> - </nav> - </slot> - </div> -</template> - -<script> -import Button from '../button/Button' -import Icon from '../icon/Icon' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import TabbedMixin from '../../utils/TabbedMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -/** - * Responsive horizontal process steps - * @displayName Steps - * @requires ./StepItem.vue - * @example ./examples/Steps.md - * @style _steps.scss - */ -export default { - name: 'OSteps', - components: { - [Button.name]: Button, - [Icon.name]: Icon - }, - configField: 'steps', - mixins: [BaseComponentMixin, MatchMediaMixin, TabbedMixin('step')], - props: { - /** - * Icon pack to use for the navigation - * @values mdi, fa, fas and any other custom icon pack - */ - iconPack: String, - /** Icon to use for navigation button */ - iconPrev: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'steps.iconPrev', 'chevron-left') - } - }, - /** Icon to use for navigation button */ - iconNext: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'steps.iconNext', 'chevron-right') - } - }, - /** - * Next and previous buttons below the component. You can use this property if you want to use your own custom navigation items. - */ - hasNavigation: { - type: Boolean, - default: true - }, - /** - * Step navigation is animated - */ - animated: { - type: Boolean, - default: true - }, - /** - * Position of the marker label, optional - * @values bottom, right, left - */ - labelPosition: { - type: String, - validator(value) { - return [ - 'bottom', - 'right', - 'left' - ].indexOf(value) > -1 - }, - default: 'bottom' - }, - /** Rounded step markers */ - rounded: { - type: Boolean, - default: true - }, - ariaNextLabel: String, - ariaPreviousLabel: String, - rootClass: [String, Function, Array], - sizeClass: [String, Function, Array], - verticalClass: [String, Function, Array], - positionClass: [String, Function, Array], - stepsClass: [String, Function, Array], - variantClass: [String, Function, Array], - animatedClass: [String, Function, Array], - stepMarkerRoundedClass: [String, Function, Array], - stepDividerClass: [String, Function, Array], - stepMarkerClass: [String, Function, Array], - stepContentClass: [String, Function, Array], - stepContentTransitioningClass: [String, Function, Array], - stepNavigationClass: [String, Function, Array], - stepLinkClass: [String, Function, Array], - stepLinkClickableClass: [String, Function, Array], - stepLinkLabelClass: [String, Function, Array], - stepLinkLabelPositionClass: [String, Function, Array], - mobileClass: [String, Function, Array], - }, - computed: { - wrapperClasses() { - return [ - this.computedClass('rootClass', 'o-steps__wrapper'), - { [this.computedClass('sizeClass', 'o-steps--', this.size)]: this.size }, - { [this.computedClass('verticalClass', 'o-steps__wrapper-vertical')]: this.vertical }, - { [this.computedClass('positionClass', 'o-steps__wrapper-position-', this.position)]: this.position && this.vertical }, - { [this.computedClass('mobileClass', 'o-steps--mobile')]: this.isMatchMedia }, - ] - }, - mainClasses() { - return [ - this.computedClass('stepsClass', 'o-steps'), - { [this.computedClass('animatedClass', 'o-steps--animated')]: this.animated } - ] - }, - stepDividerClasses() { - return [ - this.computedClass('stepDividerClass', 'o-steps__divider') - ] - }, - stepMarkerClasses() { - return [ - this.computedClass('stepMarkerClass', 'o-steps__marker'), - { [this.computedClass('stepMarkerRoundedClass', 'o-steps__marker--rounded')]: this.rounded } - ] - }, - stepContentClasses() { - return [ - this.computedClass('stepContentClass', 'o-steps__content'), - { [this.computedClass('stepContentTransitioningClass', 'o-steps__content-transitioning')]: this.isTransitioning } - ] - }, - stepNavigationClasses() { - return [ - this.computedClass('stepNavigationClass', 'o-steps__navigation') - ] - }, - stepLinkLabelClasses() { - return [ - this.computedClass('stepLinkLabelClass', 'o-steps__title') - ] - }, - - // Override mixin implementation to always have a value - activeItem() { - return this.childItems.filter((i) => i.newValue === this.activeId)[0] || this.items[0] - }, - - /** - * Check if previous button is available. - */ - hasPrev() { - return !!this.prevItem - }, - - /** - * Retrieves the next visible item - */ - nextItem() { - let nextItem = null - let idx = this.activeItem ? this.items.indexOf(this.activeItem) + 1 : 0 - for (; idx < this.items.length; idx++) { - if (this.items[idx].visible) { - nextItem = this.items[idx] - break - } - } - return nextItem - }, - - /** - * Retrieves the previous visible item - */ - prevItem() { - if (!this.activeItem) { return null } - - let prevItem = null - for (let idx = this.items.indexOf(this.activeItem) - 1; idx >= 0; idx--) { - if (this.items[idx].visible) { - prevItem = this.items[idx] - break - } - } - return prevItem - }, - - /** - * Check if next button is available. - */ - hasNext() { - return !!this.nextItem - }, - - navigationProps() { - return { - previous: { - disabled: !this.hasPrev, - action: this.prev - }, - next: { - disabled: !this.hasNext, - action: this.next - } - } - } - }, - methods: { - stepLinkClasses(childItem) { - return [ - this.computedClass('stepLinkClass', 'o-steps__link'), - { [this.computedClass('stepLinkLabelPositionClass', 'o-steps__link-label-', this.labelPosition)]: this.labelPosition }, - { [this.computedClass('stepLinkClickableClass', 'o-steps__link-clickable')]: this.isItemClickable(childItem) } - ] - }, - /** - * Return if the step should be clickable or not. - */ - isItemClickable(stepItem) { - if (stepItem.clickable === undefined) { - return stepItem.index < this.activeItem.index - } - return stepItem.clickable - }, - - /** - * Previous button click listener. - */ - prev() { - if (this.hasPrev) { - this.childClick(this.prevItem) - } - }, - - /** - * Previous button click listener. - */ - next() { - if (this.hasNext) { - this.childClick(this.nextItem) - } - } - } -} -</script> diff --git a/packages/oruga/src/components/steps/__snapshots__/StepItem.spec.js.snap b/packages/oruga/src/components/steps/__snapshots__/StepItem.spec.js.snap deleted file mode 100644 index da10c8749..000000000 --- a/packages/oruga/src/components/steps/__snapshots__/StepItem.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OStepItem render correctly 1`] = `<div class="o-steps__item" id="step-2" style="display: none;"></div>`; diff --git a/packages/oruga/src/components/steps/__snapshots__/Steps.spec.js.snap b/packages/oruga/src/components/steps/__snapshots__/Steps.spec.js.snap deleted file mode 100644 index 394261a53..000000000 --- a/packages/oruga/src/components/steps/__snapshots__/Steps.spec.js.snap +++ /dev/null @@ -1,40 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSteps render correctly 1`] = ` -<div class="o-steps__wrapper"> - <nav class="o-steps o-steps--animated"> - <div class="o-steps__nav-item o-steps__nav-item-active"> - <!----> <a class="o-steps__link o-steps__link-label-bottom"> - <div class="o-steps__marker o-steps__marker--rounded"> - <!----> - </div> - <div class="o-steps__title"></div> - </a> - </div> - <div class="o-steps__nav-item" style="display: none;"><span class="o-steps__divider"></span> <a class="o-steps__link o-steps__link-label-bottom"> - <div class="o-steps__marker o-steps__marker--rounded"> - <!----> - </div> - <div class="o-steps__title"></div> - </a></div> - <div class="o-steps__nav-item"><span class="o-steps__divider"></span> <a class="o-steps__link o-steps__link-label-bottom"> - <div class="o-steps__marker o-steps__marker--rounded"> - <!----> - </div> - <div class="o-steps__title"></div> - </a></div> - </nav> - <section class="o-steps__content"> - <div class="o-steps__item" id="step-1"></div> - <div class="o-steps__item" id="step-2" style="display: none;"></div> - <div class="o-steps__item" id="step-3" style="display: none;"></div> - </section> - <nav class="o-steps__navigation"><button type="button" disabled="disabled" role="button" class="o-btn o-btn--disabled"><span class="o-btn__wrapper"><span class="o-icon o-btn__icon o-btn__icon-left"><i class="mdi mdi-chevron-left mdi-24px"></i></span> - <!----> - <!----></span> - </button> <button type="button" role="button" class="o-btn"><span class="o-btn__wrapper"><span class="o-icon o-btn__icon o-btn__icon-left"><i class="mdi mdi-chevron-right mdi-24px"></i></span> - <!----> - <!----></span> - </button></nav> -</div> -`; diff --git a/packages/oruga/src/components/steps/examples/Steps.md b/packages/oruga/src/components/steps/examples/Steps.md deleted file mode 100644 index b8908c59e..000000000 --- a/packages/oruga/src/components/steps/examples/Steps.md +++ /dev/null @@ -1,251 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <p> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="showSocial"> Show Social step </o-switch> - </div> - <div class="control"> - <o-switch v-model="isAnimated"> Animated </o-switch> - </div> - <div class="control"> - <o-switch v-model="isRounded"> Rounded </o-switch> - </div> - <div class="control"> - <o-switch v-model="isStepsClickable"> Clickable Marker </o-switch> - </div> - </o-field> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="hasNavigation"> Navigation Buttons </o-switch> - </div> - <div class="control"> - <o-switch v-model="customNavigation"> Custom Navigation </o-switch> - </div> - <div class="control"> - <o-switch v-model="isProfileSuccess"> Set <code>success</code> for profile </o-switch> - </div> - <div class="control"> - <o-switch v-model="enableProfileActivateEvent"> Enable profile activate event </o-switch> - </div> - </o-field> - <o-field v-if="hasNavigation" grouped group-multiline> - <o-field label="Prev icon"> - <o-select v-model="prevIcon"> - <option value="chevron-left">Chevron</option> - <option value="arrow-left">Arrow</option> - </o-select> - </o-field> - <o-field label="Next icon"> - <o-select v-model="nextIcon"> - <option value="chevron-right">Chevron</option> - <option value="arrow-right">Arrow</option> - </o-select> - </o-field> - <o-field label="Label position"> - <o-select v-model="labelPosition"> - <option value="bottom">Bottom</option> - <option value="right">Right</option> - <option value="left">Left</option> - </o-select> - </o-field> - </o-field> - </p> - <o-steps - v-model="activeStep" - :animated="isAnimated" - :rounded="isRounded" - :has-navigation="hasNavigation" - :icon-prev="prevIcon" - :icon-next="nextIcon" - :label-position="labelPosition"> - <o-step-item step="1" label="Account" :clickable="isStepsClickable"> - <h1 class="title has-text-centered">Account</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item step="2" label="Profile" :clickable="isStepsClickable" :variant="isProfileSuccess ? 'success': ''" @activate="onProfileActivate"> - <h1 class="title has-text-centered">Profile</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item step="3" :visible="showSocial" label="Social" :clickable="isStepsClickable"> - <h1 class="title has-text-centered">Social</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item :step="showSocial ? '4' : '3'" label="Finish" :clickable="isStepsClickable" disabled> - <h1 class="title has-text-centered">Finish</h1> - Lorem ipsum dolor sit amet. - </o-step-item> - - <template - v-if="customNavigation" - slot="navigation" - slot-scope="{previous, next}"> - <o-button - outlined - variant="danger" - icon-pack="fas" - icon-left="backward" - :disabled="previous.disabled" - @click.prevent="previous.action"> - Previous - </o-button> - <o-button - outlined - variant="success" - icon-pack="fas" - icon-right="forward" - :disabled="next.disabled" - @click.prevent="next.action"> - Next - </o-button> - </template> - </o-steps> - </section> -</template> - -<script> - export default { - data() { - return { - activeStep: 1, - - showSocial: false, - isAnimated: true, - isRounded: true, - isStepsClickable: false, - - hasNavigation: true, - customNavigation: false, - isProfileSuccess: false, - enableProfileActivateEvent: false, - - prevIcon: 'chevron-left', - nextIcon: 'chevron-right', - labelPosition: 'bottom' - } - }, - methods: { - onProfileActivate() { - if (this.enableProfileActivateEvent) { - alert('Profile Activated') - } - } - } - } -</script> -``` -::: - -### Variants - -::: demo -```html -<template> - <section> - <h4>Warning</h4> - <o-steps variant="warning"> - <o-step-item label="Account" icon="user-lock"></o-step-item> - <o-step-item label="Profile" icon="user"></o-step-item> - <o-step-item label="Social" icon="user-plus"></o-step-item> - </o-steps> - - <h4>Info</h4> - <o-steps variant="info"> - <o-step-item label="Account" icon="user-lock"></o-step-item> - <o-step-item label="Profile" icon="user"></o-step-item> - <o-step-item label="Social" icon="user-plus"></o-step-item> - </o-steps> - - <h4>Success</h4> - <o-steps variant="success"> - <o-step-item label="Account" icon="user-lock"></o-step-item> - <o-step-item label="Profile" icon="user"></o-step-item> - <o-step-item label="Social" icon="user-plus"></o-step-item> - </o-steps> - </section> -</template> - -<script> - export default { } -</script> -``` -::: - -### Vertical - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="position" true-value="right"> Right position </o-switch> - </div> - <o-field label="Size"> - <o-select v-model="size" placeholder="Size"> - <option :value="null">Default</option> - <option value="small">Small</option> - <option value="medium">Medium</option> - <option value="large">Large</option> - </o-select> - </o-field> - <o-field label="Label position" label-position="on-border"> - <o-select v-model="labelPosition"> - <option value="bottom">Bottom</option> - <option value="right">Right</option> - <option value="left">Left</option> - </o-select> - </o-field> - </o-field> - - <o-steps - :position="position" - :label-position="labelPosition" - :size="size" - vertical> - <o-step-item label="Account" icon="user-lock"> - Account: Lorem ipsum dolor sit amet. <br /> - Account: Lorem ipsum dolor sit amet. <br /> - Account: Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item label="Profile" icon="user"> - Profile: Lorem ipsum dolor sit amet. <br /> - Profile: Lorem ipsum dolor sit amet.? <br /> - Profile: Lorem ipsum dolor sit amet. <br /> - Profile: Lorem ipsum dolor sit amet. - </o-step-item> - - <o-step-item label="Social" icon="user-plus" disabled> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. <br /> - Social: Lorem ipsum dolor sit amet. - </o-step-item> - </o-steps> - </section> -</template> - -<script> - export default { - data() { - return { - labelPosition: 'bottom', - position: null, - size: null, - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/steps/index.js b/packages/oruga/src/components/steps/index.js deleted file mode 100644 index eccdff617..000000000 --- a/packages/oruga/src/components/steps/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import Steps from './Steps' -import StepItem from './StepItem' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Steps) - registerComponent(Vue, StepItem) - } -} - -use(Plugin) - -export default Plugin - -export { - Steps as OSteps, - StepItem as OStepItem -} diff --git a/packages/oruga/src/components/switch/Inspector.vue b/packages/oruga/src/components/switch/Inspector.vue deleted file mode 100644 index b4f7493d4..000000000 --- a/packages/oruga/src/components/switch/Inspector.vue +++ /dev/null @@ -1,104 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-switch v-bind="s" v-model="checkValue">Switch</o-switch> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - checkValue: true, - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "inputClass", - description: "Root class of the native input checkbox", - }, - { - class: "checkClass", - description: "Class of the switch check", - action: () => { - } - }, - { - class: "checkCheckedClass", - description: "Class of the switch check when checked", - action: () => { - this.checkValue = true; - } - }, - { - class: "checkSwitchClass", - description: "Class of the switch check", - }, - { - class: "roundedClass", - description: "Class of the switch when rounded", - properties: ["rounded"], - action: (cmp) => { - cmp.data.rounded = true - } - }, - { - class: "disabledClass", - description: "Class when slider is disabled", - properties: ["disabled"], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "labelClass", - description: "Class of the switch label" - }, - { - class: "positionClass", - description: "Class of switch label position", - properties: ["position"], - action: (cmp) => { - cmp.data.position = 'left'; - } - }, - { - class: 'sizeClass', - description : 'Class of the switch size', - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: 'variantClass', - description : 'Class of the switch variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - this.checkValue = true; - } - }, - { - class: "passiveVariantClass", - description : 'Class of the switch passive variant', - properties: ["passiveVariant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.passiveVariant = 'danger'; - this.checkValue = false; - } - } - ], - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/switch/Switch.spec.js b/packages/oruga/src/components/switch/Switch.spec.js deleted file mode 100644 index 8455ed991..000000000 --- a/packages/oruga/src/components/switch/Switch.spec.js +++ /dev/null @@ -1,75 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OSwitch from '@components/switch/Switch' - -let wrapper - -describe('OSwitch', () => { - beforeEach(() => { - wrapper = shallowMount(OSwitch) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('renders input element by default', () => { - expect(wrapper.contains('input')).toBeTruthy() - expect(wrapper.classes()).toContain('o-switch') - }) - - it('updates internal value when v-model is changed', async () => { - const newValue = 'switch value' - wrapper.setProps({ value: newValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.newValue).toBe(newValue) - }) - - it('emit input event when computedValue is set', () => { - const newValue = 'switch value' - wrapper.vm.computedValue = newValue - const valueEmitted = wrapper.emitted()['input'][0] - expect(wrapper.vm.newValue).toBe(newValue) - expect(valueEmitted).toContainEqual(newValue) - }) - - it('method focus() gives focus to the input element', async () => { - wrapper.vm.$refs.input.focus = jest.fn() - wrapper.vm.focus() - await wrapper.vm.$nextTick() - expect(wrapper.vm.$refs.input.focus).toHaveBeenCalled() - }) - - it('applies passiveVariant prop properly', async () => { - const passiveVariant = 'danger' - const value = false - wrapper.setProps({ passiveVariant, value }) - await wrapper.vm.$nextTick() - const switchCheckElement = wrapper.find('.o-switch__check') - expect(switchCheckElement.classes()).not.toContain('o-switch__check--checked') - const switchElement = wrapper.find('.o-switch') - expect(switchElement.classes()).toContain('o-switch--danger-passive') - }) - - it('does not have a label at left by default', () => { - const value = false - wrapper.setProps({ value }) - expect(wrapper.classes()).not.toContain('o-switch--left') - }) - - it('has label at left', async () => { - const value = false - wrapper.setProps({ position: 'left', value }) - await wrapper.vm.$nextTick() - const rootElement = wrapper.find('.o-switch') - expect(rootElement.classes()).toContain('o-switch--left') - }) - - it('has role switch', async () => { - const switchElement = wrapper.find('input') - expect(switchElement.attributes().role).toBe('switch') - }) -}) diff --git a/packages/oruga/src/components/switch/Switch.vue b/packages/oruga/src/components/switch/Switch.vue deleted file mode 100644 index 338ae321b..000000000 --- a/packages/oruga/src/components/switch/Switch.vue +++ /dev/null @@ -1,180 +0,0 @@ -<template> - <label - :class="rootClasses" - ref="label" - :disabled="disabled" - @click="focus" - @keydown.prevent.enter="$refs.label.click()" - @mousedown="isMouseDown = true" - @mouseup="isMouseDown = false" - @mouseout="isMouseDown = false" - @blur="isMouseDown = false"> - <input - v-model="computedValue" - type="checkbox" - ref="input" - role="switch" - :class="inputClasses" - @click.stop - :disabled="disabled" - :name="name" - :required="required" - :value="nativeValue" - :true-value="trueValue" - :false-value="falseValue" - :aria-labelledby="ariaLabelledby"> - <span :class="checkClasses"> - <span :class="checkSwitchClasses"></span> - </span> - <span - :id="ariaLabelledby" - :class="labelClasses"> - <slot/> - </span> - </label> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' - -/** - * Switch between two opposing states - * @displayName Switch - * @example ./examples/Switch.md - * @style _switch.scss - */ -export default { - name: 'OSwitch', - mixins: [BaseComponentMixin], - configField: 'switch', - props: { - /** @model */ - value: [String, Number, Boolean], - /** - * Same as native value - */ - nativeValue: [String, Number, Boolean], - disabled: Boolean, - /** - * Color of the switch, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** - * Color of the switch when is passive, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - passiveVariant: String, - /** Name attribute on native checkbox */ - name: String, - required: Boolean, - /** - * Vertical size of switch, optional - * @values small, medium, large - */ - size: String, - /** - * Overrides the returned value when it's checked - */ - trueValue: { - type: [String, Number, Boolean], - default: true - }, - /** - * Overrides the returned value when it's not checked - */ - falseValue: { - type: [String, Number, Boolean], - default: false - }, - /** Rounded style */ - rounded: { - type: Boolean, - default: true - }, - /** Label position */ - position: { - type: String, - default: 'right' - }, - /** Accessibility label to establish relationship between the switch and control label' */ - ariaLabelledby: String, - rootClass: [String, Function, Array], - disabledClass: [String, Function, Array], - checkClass: [String, Function, Array], - checkCheckedClass: [String, Function, Array], - checkSwitchClass: [String, Function, Array], - roundedClass: [String, Function, Array], - labelClass: [String, Function, Array], - sizeClass: [String, Function, Array], - variantClass: [String, Function, Array], - passiveVariantClass: [String, Function, Array], - positionClass: [String, Function, Array], - inputClass: [String, Function, Array] - }, - data() { - return { - newValue: this.value, - isMouseDown: false - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-switch'), - { [this.computedClass('sizeClass', 'o-switch--', this.size)]: this.size }, - { [this.computedClass('disabledClass', 'o-switch--disabled')]: this.disabled }, - { [this.computedClass('variantClass', 'o-switch--', this.variant)]: this.variant }, - { [this.computedClass('positionClass', 'o-switch--', this.position)]: this.position }, - { [this.computedClass('passiveVariantClass', 'o-switch--', this.passiveVariant + '-passive')]: this.passiveVariant } - ] - }, - inputClasses() { - return [ - this.computedClass('inputClass', 'o-switch__input') - ] - }, - checkClasses() { - return [ - this.computedClass('checkClass', 'o-switch__check'), - { [this.computedClass('checkCheckedClass', 'o-switch__check--checked')]: (this.newValue === this.trueValue)}, - { [this.computedClass('roundedClass', 'o-switch--rounded')]: this.rounded }, - ] - }, - checkSwitchClasses() { - return [ - this.computedClass('checkSwitchClass', 'o-switch__check-switch'), - { [this.computedClass('roundedClass', 'o-switch--rounded')]: this.rounded }, - ] - }, - labelClasses() { - return [ - this.computedClass('labelClass', 'o-switch__label') - ] - }, - computedValue: { - get() { - return this.newValue - }, - set(value) { - this.newValue = value - this.$emit('input', this.newValue) - } - } - }, - watch: { - /** - * When v-model change, set internal value. - */ - value(value) { - this.newValue = value - } - }, - methods: { - focus() { - // MacOS FireFox and Safari do not focus when clicked - this.$refs.input.focus() - } - } -} -</script> diff --git a/packages/oruga/src/components/switch/__snapshots__/Switch.spec.js.snap b/packages/oruga/src/components/switch/__snapshots__/Switch.spec.js.snap deleted file mode 100644 index 8e8e0a0a4..000000000 --- a/packages/oruga/src/components/switch/__snapshots__/Switch.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OSwitch render correctly 1`] = `<label class="o-switch o-switch--right"><input type="checkbox" role="switch" true-value="true" class="o-switch__input" value="false"> <span class="o-switch__check o-switch--rounded"><span class="o-switch__check-switch o-switch--rounded"></span></span> <span class="o-switch__label"></span></label>`; diff --git a/packages/oruga/src/components/switch/examples/Switch.md b/packages/oruga/src/components/switch/examples/Switch.md deleted file mode 100644 index cb19a4a1f..000000000 --- a/packages/oruga/src/components/switch/examples/Switch.md +++ /dev/null @@ -1,177 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-field> - <o-switch>Default</o-switch> - </o-field> - <o-field> - <o-switch v-model="isSwitched"> - {{ isSwitched }} - </o-switch> - </o-field> - <o-field> - <o-switch v-model="isSwitchedCustom" - true-value="Yes" - false-value="No"> - {{ isSwitchedCustom }} - </o-switch> - </o-field> - <o-field> - <o-switch disabled>Disabled</o-switch> - </o-field> - </section> -</template> - -<script> -export default { - data() { - return { - isSwitched: false, - isSwitchedCustom: 'Yes' - } - } -} -</script> -``` -::: - -### Variants - -::: demo -```html -<template> - <section> - <o-field> - <o-switch :value="true"> - Default - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" - variant="info"> - Info - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" - variant="success"> - Success - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" - variant="danger"> - Danger - </o-switch> - </o-field> - <o-field> - <o-switch :value="true" - variant="warning"> - Warning - </o-switch> - </o-field> - </section> -</template> - -<script> -export default { -} -</script> -``` -::: - -### Sizes - -::: demo -```html -<template> - <section> - <o-field> - <o-switch size="small">Small</o-switch> - </o-field> - <o-field> - <o-switch>Default</o-switch> - </o-field> - <o-field> - <o-switch size="medium">Medium</o-switch> - </o-field> - <o-field> - <o-switch size="large">Large</o-switch> - </o-field> - </section> -</template> - -<script> -export default { -} -</script> -``` -::: - -### Style variants - -::: demo -```html -<template> - <section> - <o-field grouped> - <o-switch v-model="isRounded">Rounded</o-switch> - <o-switch v-model="position" - true-value="left" - false-value="right">Label on left</o-switch> - </o-field> - <o-field label="Variant"> - <o-select expanded v-model="variant" placeholder="Variant"> - <option value="null">Default</option> - <option value="primary">Primary</option> - <option value="success">Success</option> - <option value="warning">Warning</option> - <option value="danger">Danger</option> - </o-select> - </o-field> - <o-field label="Passive Variant"> - <o-select expanded v-model="passive" placeholder="Passive Variant"> - <option value="null">Default</option> - <option value="primary">Primary</option> - <option value="success">Success</option> - <option value="warning">Warning</option> - <option value="danger">Danger</option> - </o-select> - </o-field> - <o-field label="Size"> - <o-select expanded v-model="size"> - <option value="">Default</option> - <option value="small">small</option> - <option value="medium">medium</option> - <option value="large">large</option> - </o-select> - </o-field> - <o-switch - :rounded="isRounded" - :position="position" - :size="size" - :variant="variant" - :passive-variant="passive">Sample</o-switch> - </section> -</template> - -<script> - export default { - data() { - return { - size: '', - variant: null, - passive: null, - isRounded: false, - position: 'right' - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/switch/index.js b/packages/oruga/src/components/switch/index.js deleted file mode 100644 index eda58a338..000000000 --- a/packages/oruga/src/components/switch/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Switch from './Switch' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Switch) - } -} - -use(Plugin) - -export default Plugin - -export { - Switch as OSwitch -} diff --git a/packages/oruga/src/components/table/Inspector.vue b/packages/oruga/src/components/table/Inspector.vue deleted file mode 100644 index ae1e52c37..000000000 --- a/packages/oruga/src/components/table/Inspector.vue +++ /dev/null @@ -1,388 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-table v-bind="s" :data="s.isEmpty ? [] : data" :columns="columns" :selected.sync="selected" detailed> - <template slot="footer"> This is the footer </template> - <template slot="detail"> - DETAILS - </template> - </o-table> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - selected: null, - data: [ - { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male', - }, - { - id: 2, - first_name: 'John', - last_name: 'Jacobs', - date: '2016-12-15 06:00:53', - gender: 'Male' - }, - { - id: 3, - first_name: 'Tina', - last_name: 'Gilbert', - date: '2016-04-26 06:26:28', - gender: 'Female' - }, - { - id: 4, - first_name: 'Clarence', - last_name: 'Flores', - date: '2016-04-10 10:28:46', - gender: 'Male' - }, - { - id: 5, - first_name: 'Brandon', - last_name: 'Lee', - date: '2016-12-06 14:38:38', - gender: 'Female' - }, - { - id: 6, - first_name: 'Anne', - last_name: 'Straus', - date: '2017-12-06 14:38:38', - gender: 'Female' - }, - { - id: 7, - first_name: 'Mark', - last_name: 'Knopfler', - date: '2018-12-06 14:38:38', - gender: 'Male' - }, - { - id: 8, - first_name: 'Craig', - last_name: 'David', - date: '2019-12-06 14:38:38', - gender: 'Male' - }, - { - id: 9, - first_name: 'Dave', - last_name: 'Copperfield', - date: '2020-12-06 14:38:38', - gender: 'Male' - }, - { - id: 10, - first_name: 'Hilary', - last_name: 'Nelson', - date: '2021-12-06 14:38:38', - gender: 'Female' - } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name', - searchable: true, - sortable: true - }, - { - field: 'last_name', - label: 'Last Name', - searchable: true - }, - { - field: 'date', - label: 'Date', - sticky: true, - position: 'centered' - }, - { - field: 'gender', - label: 'Gender' - }, - { - field: 'id', - label: 'Column A' - }, - { - field: 'id', - label: 'Column B' - }, - { - field: 'id', - label: 'Column C' - }, - { - field: 'id', - label: 'Column D' - }, - { - field: 'id', - label: 'Column E' - }, - { - field: 'id', - label: 'Column F' - }, - { - field: 'id', - label: 'Column G' - }, - { - field: 'id', - label: 'Column H' - }, - { - field: 'id', - label: 'Column I' - }, - { - field: 'id', - label: 'Column L' - }, - { - field: 'id', - label: 'Column M' - }, - { - field: 'id', - label: 'Column N' - }, - { - field: 'id', - label: 'Column O' - } - ], - inspectData: [ - { - class: "rootClass", - description: "Class of Table root element" - }, - { - class: "tableClass", - description: "Class of the Table" - }, - { - class: "borderedClass", - properties: ["bordered"], - description: "Class of the Table when is bordered", - action: (cmp) => { - cmp.data.bordered = true; - } - }, - { - class: "stripedClass", - properties: ["striped"], - description: "Class of the Table when rows are striped", - action: (cmp) => { - cmp.data.striped = true; - } - }, - { - class: "narrowedClass", - properties: ["narrowed"], - description: "Class of the Table when rows are narrowed", - action: (cmp) => { - cmp.data.narrowed = true; - } - }, - { - class: "hoverableClass", - properties: ["hoverable or focusable"], - description: "Class of the Table when is hoverable", - action: (cmp) => { - cmp.data.hoverable = true; - } - }, - { - class: "emptyClass", - description: "Class of the Table when is empty", - action: (cmp) => { - cmp.data.isEmpty = true - } - }, - { - class: "wrapperClass", - description: "Class of the Table wrapper" - }, - { - class: "stickyHeaderClass", - properties: ["sticky-header"], - description: "Class of the Table wrapper when header is sticky", - action: (cmp) => { - cmp.data.stickyHeader = true; - } - }, - { - class: "scrollableClass", - properties: ["scrollable"], - description: "Class of the Table wrapper when its content is scrollable", - action: (cmp) => { - cmp.data.scrollable = true; - } - }, - { - class: "footerClass", - description: "Class of the Table footer", - action: (cmp) => { - cmp.data.tableClass = 'inspector_table' - } - }, - { - class: "thClass", - description: "Class of the Table `th` element" - }, - { - class: "tdClass", - description: "Class of the Table `td` element" - }, - { - class: "thCheckboxClass", - description: "Class of the Table `th` element when is checkable", - properties: ["checkable"], - action: (cmp) => { - cmp.data.checkable = true - } - }, - { - class: "thDetailedClass", - description: "Class of the Table `th` element of the detail column of triggers", - properties: ["detailed"], - action: (cmp) => { - cmp.data.detailed = true; - } - }, - { - class: "tdCheckboxClass", - description: "Class of the Table `td` element when is checkable", - properties: ["checkable"], - action: (cmp) => { - cmp.data.checkable = true - } - }, - { - class: "detailedClass", - description: "Class of the Table row detail", - properties: ["detailed"], - warning: "Expand details to see it in action!", - action: (cmp) => { - cmp.data.tableClass = 'inspector_table' - cmp.data.mobileCards = true; - } - }, - { - class: "tdDetailedChevronClass", - properties: ["detailed"], - description: "Class of the Table `td` element that contains the chevron to trigger details", - action: (cmp) => { - cmp.data.mobileCards = true; - } - }, - { - class: "thCurrentSortClass", - description: "Class of the Table `th` element currently sorted", - warning: "Click on 'First Name' header to sort elements and see it in action!", - }, - { - class: "thSortableClass", - description: "Class of the sortable Table `th` element", - properties: ['sortable'] - }, - { - class: "thUnselectableClass", - description: "Class of the Table `th` element that is unsortable", - properties: ["!headerSelectable and sortable"] - }, - { - class: "thPositionClass", - description: "Class of the Table `th` element when component is positioned", - suffixes: ['left', 'centered', 'right'], - properties: ["position"] - }, - { - class: "thStickyClass", - description: "Class of the Table `th` element when component is sticky", - properties: ['sticky'] - }, - { - class: "trSelectedClass", - description: "Class of the Table row when selected", - warning: "Select a row of the table to see it in action!", - action: (cmp) => { - cmp.data.tableClass = 'inspector_table' - } - }, - { - class: "trCheckedClass", - description: "Class of the Table row when checkable and checked", - warning: "Select a row of the table to see it in action!", - properties: ["checkable"], - action: (cmp) => { - cmp.data.checkable = true - } - }, - { - class: "thSortIconClass", - description: "Class of the Table sort icon in the header", - warning: "Click on 'First Name' header to sort elements and see it in action!", - }, - { - class: "tdPositionClass", - description: "Class of the Table `td` element when component is positioned", - suffixes: ['left', 'centered', 'right'], - properties: ["position"] - }, - { - class: "tdStickyClass", - description: "Class of the Table `td` element when component is sticky", - properties: ['sticky'] - }, - { - class: "mobileSortClass", - description: "Class of the sortable form wrapper on mobile", - warning: "Switch to mobile view to see it in action!", - }, - { - class: "mobileClass", - description: "Class of the Table component when on mobile", - warning: "Switch to mobile view to see it in action!" - }, - { - class: "paginationWrapperClass", - description: "Class of the Table pagination wrapper", - properties: ["paginated"], - action: (cmp) => { - cmp.data.paginated = true - cmp.data.paginationSimple = true - cmp.data.perPage = 2 - } - } - ], - }; - }, -}; -</script> -<style> -.inspector_table { - border-collapse: collapse; -} -</style> diff --git a/packages/oruga/src/components/table/Table.spec.js b/packages/oruga/src/components/table/Table.spec.js deleted file mode 100644 index 878082412..000000000 --- a/packages/oruga/src/components/table/Table.spec.js +++ /dev/null @@ -1,240 +0,0 @@ -import Vue from 'vue' -import { shallowMount } from '@vue/test-utils' -import { useFakeTimers } from 'sinon' -import OInput from '@components/input/Input' -import OTable from '@components/table/Table' -import { setVueInstance } from '../../utils/config' - -describe('OTable', () => { - setVueInstance(Vue) - - let wrapper - beforeEach(() => { - wrapper = shallowMount(OTable) - }) - - const tableCols = shallowMount(OTable, { - propsData: { - columns: [ - { label: 'default', width: '100px' }, - { label: 'pecent', width: '50%' }, - { label: 'fixed_num', width: 100 }, - { label: 'fixed_str', width: '100' } - ] - } - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('has the filter row visible when searchable', () => { - wrapper.setProps({ - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - } - ] - }) - // Don't show if no searchable column - expect(wrapper.vm.hasSearchablenewColumns).toBe(false) - // Show if one or more searchable column - wrapper.setProps({ - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true, - searchable: true - } - ] - }) - expect(wrapper.vm.hasSearchablenewColumns).toBe(true) - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('holds columns', () => { - const headers = tableCols.findAll('th') - - expect(headers.length).toBeGreaterThanOrEqual(4) - - const cols = headers.filter((th) => { - return th.find('span') - }) - - expect(cols.length).toBe(4) - expect(cols.at(0).attributes('style')).toBe('width: 100px;') - expect(cols.at(1).attributes('style')).toBe('width: 50%;') - expect(cols.at(2).attributes('style')).toBe('width: 100px;') - expect(cols.at(3).attributes('style')).toBe('width: 100px;') - }) - - describe('Searchable', () => { - const data = [ - { id: 1, name: 'Jesse' }, - { id: 2, name: 'Joรฃo' }, - { id: 3, name: 'Tina' }, - { id: 4, name: 'Anne' }, - { id: 5, name: 'Clarence' } - ] - let headRows - let bodyRows - let searchInput - - beforeEach(() => { - wrapper = shallowMount(OTable, { - propsData: { - columns: [ - { label: 'ID', field: 'id', numeric: true }, - { label: 'Name', field: 'name', searchable: true } - ], - data - } - }) - headRows = wrapper.findAll('thead tr') - bodyRows = wrapper.findAll('tbody tr') - searchInput = wrapper.find(OInput) - }) - - it('displays filter row when at least one column is searchable', () => { - expect(headRows).toHaveLength(2) - }) - - it('displays filter input only on searchable columns', () => { - const filterCells = headRows.at(1).findAll('th') - - expect(filterCells.at(0).isEmpty()).toBe(true) // ID column is not searchable - expect(filterCells.at(1).contains(OInput)).toBe(true) // Name column is searchable - }) - - it('displays all data', () => { - expect(bodyRows).toHaveLength(5) - }) - - it('displays filtered data when searching', async () => { - searchInput.vm.$emit('input', 'J') - await wrapper.vm.$nextTick() - - bodyRows = wrapper.findAll('tbody tr') - expect(bodyRows).toHaveLength(2) // Jesse and Joรฃo - }) - - it('displays filtered data when searching and updating data', async () => { - searchInput.vm.$emit('input', 'J') - wrapper.setProps({ - data: [ - ...data, - { id: 6, name: 'Justin' } - ] - }) - await wrapper.vm.$nextTick() - - bodyRows = wrapper.findAll('tbody tr') - expect(bodyRows).toHaveLength(3) // Jesse, Joรฃo and Justin - }) - - it('displays filtered data when searching by name without accent', async () => { - searchInput.vm.$emit('input', 'Joao') - await wrapper.vm.$nextTick() - bodyRows = wrapper.findAll('tbody tr') - expect(bodyRows).toHaveLength(1) // Joรฃo - }) - - it('displays filtered data when searching by name with accent', async () => { - searchInput.vm.$emit('input', 'Joรฃo') - await wrapper.vm.$nextTick() - bodyRows = wrapper.findAll('tbody tr') - expect(bodyRows).toHaveLength(1) // Joรฃo - }) - - it('debounce search filtering when debounce-search is defined', () => { - const clock = useFakeTimers() - wrapper.setProps({ - debounceSearch: 1000 - }) - for (let i = 0; i < 10; i++) { - searchInput.vm.$emit('input', 'J'.repeat(10 - i)) - clock.tick(500) - bodyRows = wrapper.findAll('tbody tr') - expect(bodyRows).toHaveLength(5) // No filtering yet - } - clock.tick(1000) - bodyRows = wrapper.findAll('tbody tr') - expect(bodyRows).toHaveLength(5) // Filtering after debounce - }) - - it('tests checkRow method',()=>{ - const shiftCheckRow = jest.spyOn(wrapper.vm,'shiftCheckRow') - const isRowChecked = jest.spyOn(wrapper.vm,'isRowChecked') - const removeCheckedRow = jest.spyOn(wrapper.vm,'removeCheckedRow') - const checkRow = jest.spyOn(wrapper.vm,'checkRow') - shiftCheckRow.mockImplementationOnce(()=>{}) - isRowChecked.mockImplementationOnce(()=>false) - removeCheckedRow.mockImplementationOnce(()=>{}) - const index = 0 - let event = { - shiftKey:true - } - wrapper.vm.lastCheckedRowIndex = 1 - const row = { - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male' - } - wrapper.vm.checkRow(row,index,event) - expect(checkRow).toHaveBeenCalledWith(row, 0, event) - expect(wrapper.emitted().check[0]).toEqual([[],row]) - expect(wrapper.emitted()["update:checkedRows"][0]).toEqual([[]]) - event = { - shiftKey:false - } - wrapper.vm.checkRow(row,index,event) - expect(checkRow).toHaveBeenCalledWith(row, 0, event) - expect(wrapper.emitted().check[0]).toEqual([[row],row]) - expect(wrapper.emitted()["update:checkedRows"][0]).toEqual([[row]]) - isRowChecked.mockImplementationOnce(()=>true) - wrapper.vm.checkRow(row,index,event) - expect(removeCheckedRow).toHaveBeenCalledWith(row) - }) - - it('tests isAllUncheckable method',async()=>{ - await wrapper.setProps({ - paginated:false, - data:[{ - id: 1, - first_name: 'Jesse', - last_name: 'Simmons', - date: '2016-10-15 13:43:27', - gender: 'Male' - }] - }) - const isRowCheckable = jest.spyOn(wrapper.vm,'isRowCheckable') - isRowCheckable.mockImplementationOnce(()=>true) - expect(wrapper.vm.isAllUncheckable).toEqual(false) - }) - - it('tests total watcher ',async()=>{ - await wrapper.setProps({ - backendPagination:true, - total:100 - }) - expect(wrapper.vm.newDataTotal).toEqual(100) - }) - - it('tests currentPage watcher ',async()=>{ - await wrapper.setProps({ - currentPage:5 - }) - expect(wrapper.vm.newCurrentPage).toEqual(5) - }) - }) -}) diff --git a/packages/oruga/src/components/table/Table.vue b/packages/oruga/src/components/table/Table.vue deleted file mode 100644 index e6fa79a21..000000000 --- a/packages/oruga/src/components/table/Table.vue +++ /dev/null @@ -1,1495 +0,0 @@ -<template> - <div :class="rootClasses"> - - <div ref="slot" style="display:none"> - <slot /> - </div> - - <o-table-mobile-sort - v-if="isMobile && hasSortablenewColumns" - :current-sort-column="currentSortColumn" - :columns="newColumns" - :placeholder="mobileSortPlaceholder" - :icon-pack="iconPack" - :sort-icon="sortIcon" - :sort-icon-size="sortIconSize" - :is-asc="isAsc" - @sort="(column, event) => sort(column, null, event)" - /> - - <template v-if="paginated && (paginationPosition === 'top' || paginationPosition === 'both')"> - <slot name="pagination"> - <o-table-pagination - v-bind="$attrs" - :per-page="perPage" - :paginated="paginated" - :total="newDataTotal" - :current-page="newCurrentPage" - @update:currentPage="newCurrentPage = $event" - :root-class="paginationWrapperClasses" - :icon-pack="iconPack" - :rounded="paginationRounded" - :paginationSize="paginationSize" - @page-change="(event) => $emit('page-change', event)" - :aria-next-label="ariaNextLabel" - :aria-previous-label="ariaPreviousLabel" - :aria-page-label="ariaPageLabel" - :aria-current-label="ariaCurrentLabel" - > - <slot name="top-left"/> - </o-table-pagination> - </slot> - </template> - - <div - :class="tableWrapperClasses" - :style="tableWrapperStyle"> - <table - :class="tableClasses" - :tabindex="!focusable ? false : 0" - @keydown.self.prevent.up="pressedArrow(-1)" - @keydown.self.prevent.down="pressedArrow(1)"> - <caption v-if="$slots.caption"> - <slot name="caption" /> - </caption> - <thead v-if="newColumns.length && showHeader"> - <slot name="preheader" /> - <tr> - <th v-if="showDetailRowIcon" :class="thDetailedClasses"/> - <th :class="thCheckboxClasses" v-if="checkable && checkboxPosition === 'left'"> - <template v-if="headerCheckable"> - <o-checkbox - autocomplete="off" - :value="isAllChecked" - :disabled="isAllUncheckable" - @change.native="checkAll"/> - </template> - </th> - <th - v-for="(column, index) in visibleColumns" - :key="column.newKey + ':' + index + 'header'" - v-bind="column.thAttrs(column)" - :class="thClasses(column)" - :style="column.style" - @click.stop="sort(column, null, $event)" - :draggable="canDragColumn" - @dragstart="handleColumnDragStart($event, column, index)" - @dragend="handleColumnDragEnd($event, column, index)" - @drop="handleColumnDrop($event, column, index)" - @dragover="handleColumnDragOver($event, column, index)" - @dragleave="handleColumnDragLeave($event, column, index)"> - - <template v-if="column.hasHeaderSlot"> - <o-slot-component - :component="column" - scoped - name="header" - tag="span" - :props="{ column, index }" - /> - </template> - <template v-else> - <span> - {{ column.label }} - <span - v-show="column.sortable && currentSortColumn === column" - :class="thSortIconClasses(column)"> - <o-icon - :icon="sortIcon" - :pack="iconPack" - both - :size="sortIconSize" - :rotation="!isAsc ? 180 : 0" /> - </span> - </span> - </template> - </th> - <th :class="thCheckboxClasses" v-if="checkable && checkboxPosition === 'right'"> - <template v-if="headerCheckable"> - <o-checkbox - autocomplete="off" - :value="isAllChecked" - :disabled="isAllUncheckable" - @change.native="checkAll"/> - </template> - </th> - </tr> - <tr v-if="hasSearchablenewColumns"> - <th v-if="showDetailRowIcon" :class="thDetailedClasses" /> - <th v-if="checkable && checkboxPosition === 'left'" /> - <th - v-for="(column, index) in visibleColumns" - :key="column.newKey + ':' + index + 'searchable'" - v-bind="column.thAttrs(column)" - :class="thClasses(column)" - :style="column.style"> - <template v-if="column.searchable"> - <template v-if="column.hasSearchableSlot"> - <o-slot-component - :component="column" - scoped - name="searchable" - tag="span" - :props="{ column, filters }" - /> - </template> - <o-input - v-else - @[filtersEvent].native="onFiltersEvent" - v-model="filters[column.field]" - :type="column.numeric ? 'number' : 'text'" /> - </template> - </th> - <th v-if="checkable && checkboxPosition === 'right'" /> - </tr> - <tr v-if="hasCustomSubheadings"> - <th v-if="showDetailRowIcon" :class="thDetailedClasses" /> - <th v-if="checkable && checkboxPosition === 'left'" /> - <th - v-for="(column, index) in visibleColumns" - :key="column.newKey + ':' + index + 'subheading'" - :style="column.style" - :class="thSubheadingClasses" - > - <template - v-if=" - column.$scopedSlots && - column.$scopedSlots.subheading - "> - <o-slot-component - :component="column" - scoped - name="subheading" - tag="span" - :props="{ column, index }" - /> - </template> - <template v-else>{{ column.subheading }}</template> - </th> - <th v-if="checkable && checkboxPosition === 'right'" /> - </tr> - </thead> - <tbody> - <template v-for="(row, index) in visibleData"> - <tr - :key="customRowKey ? row[customRowKey] : index" - :class="rowClasses(row, index)" - @click="selectRow(row, index)" - @dblclick="$emit('dblclick', row)" - @mouseenter="emitEventForRow('mouseenter', $event, row)" - @mouseleave="emitEventForRow('mouseleave', $event, row)" - @contextmenu="$emit('contextmenu', row, $event)" - :draggable="canDragRow" - @dragstart="handleDragStart($event, row, index)" - @dragend="handleDragEnd($event, row, index)" - @drop="handleDrop($event, row, index)" - @dragover="handleDragOver($event, row, index)" - @dragleave="handleDragLeave($event, row, index)"> - - <td - v-if="showDetailRowIcon" - :class="tdDetailedChevronClasses" - > - - <o-icon - v-if="hasDetailedVisible(row)" - :icon="detailIcon" - :pack="iconPack" - :rotation="isVisibleDetailRow(row) ? 90 : 0" - role="button" - @click.native.stop="toggleDetails(row)" - clickable - both /> - </td> - - <td - :class="tdCheckboxClasses" - v-if="checkable && checkboxPosition === 'left'"> - <o-checkbox - autocomplete="off" - :disabled="!isRowCheckable(row)" - :value="isRowChecked(row)" - @input="checkRow(row, index, $event)" - /> - </td> - - <template v-for="(column, colindex) in visibleColumns"> - - <template v-if="column.hasDefaultSlot"> - <o-slot-component - :key="column.newKey + index + ':' + colindex" - v-bind="column.tdAttrs(row, column)" - :component="column" - scoped - name="default" - tag="td" - :class="tdClasses(row, column)" - :data-label="column.label" - :props="{ row, column, index, colindex, toggleDetails }" - @click.native="$emit('cell-click', row, column, index, colindex, $event)" - /> - </template> - - </template> - - <td - :class="tdCheckboxClasses" - v-if="checkable && checkboxPosition === 'right'"> - <o-checkbox - autocomplete="off" - :disabled="!isRowCheckable(row)" - :value="isRowChecked(row)" - @input="checkRow(row, index, $event)" - /> - </td> - </tr> - - <transition - :key="(customRowKey ? row[customRowKey] : index) + 'detail'" - :name="detailTransition" - > - <tr - v-if="isActiveDetailRow(row)" - :class="detailedClasses"> - <td :colspan="columnCount"> - <slot - name="detail" - :row="row" - :index="index"/> - </td> - </tr> - </transition> - <slot - v-if="isActiveCustomDetailRow(row)" - name="detail" - :row="row" - :index="index" - /> - </template> - - <tr v-if="!visibleData.length"> - <td :colspan="columnCount"> - <slot name="empty"/> - </td> - </tr> - - </tbody> - - <tfoot v-if="$slots.footer"> - <tr :class="footerClasses"> - <slot name="footer" v-if="hasCustomFooterSlot()"/> - <th :colspan="columnCount" v-else> - <slot name="footer"/> - </th> - </tr> - </tfoot> - </table> - - <slot name="loading"> - <o-loading :full-page="false" :active="loading" /> - </slot> - </div> - <template v-if="(checkable && $slots['bottom-left']) || - (paginated && (paginationPosition === 'bottom' || paginationPosition === 'both'))"> - <slot name="pagination"> - <o-table-pagination - v-bind="$attrs" - :per-page="perPage" - :paginated="paginated" - :total="newDataTotal" - :current-page="newCurrentPage" - @update:currentPage="newCurrentPage = $event" - :root-class="paginationWrapperClasses" - :icon-pack="iconPack" - :rounded="paginationRounded" - :size="paginationSize" - @page-change="(event) => $emit('page-change', event)" - :aria-next-label="ariaNextLabel" - :aria-previous-label="ariaPreviousLabel" - :aria-page-label="ariaPageLabel" - :aria-current-label="ariaCurrentLabel" - > - <slot name="bottom-left"/> - </o-table-pagination> - </slot> - </template> - - </div> -</template> - -<script> -import Button from '../button/Button' -import Checkbox from '../checkbox/Checkbox' -import Icon from '../icon/Icon' -import Input from '../input/Input' -import Loading from '../loading/Loading' -import SlotComponent from '../../utils/SlotComponent' -import TableMobileSort from './TableMobileSort' -import TableColumn from './TableColumn' -import TablePagination from './TablePagination' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import { getValueByPath, indexOf, toCssDimension, debounce, escapeRegExpChars, removeDiacriticsFromString } from '../../utils/helpers' -import { getOptions } from '../../utils/config' -import { VueInstance } from '../../utils/config' - - -/** - * Tabulated data are sometimes needed, it's even better when it's responsive - * @displayName Table - * @requires ./TableColumn.vue - * @example ./examples/Table.md - * @style _table.scss - */ -export default { - name: 'OTable', - components: { - [Button.name]: Button, - [Checkbox.name]: Checkbox, - [Icon.name]: Icon, - [Input.name]: Input, - [Loading.name]: Loading, - [SlotComponent.name]: SlotComponent, - [TableMobileSort.name]: TableMobileSort, - [TableColumn.name]: TableColumn, - [TablePagination.name]: TablePagination - }, - mixins: [BaseComponentMixin, MatchMediaMixin], - configField: 'table', - inheritAttrs: false, - provide() { - return { - $table: this - } - }, - mounted() { - this.refreshSlots() - this.checkSort() - }, - props: { - /** Table data */ - data: { - type: Array, - default: () => [] - }, - /** Table columns */ - columns: { - type: Array, - default: () => [] - }, - /** Border to all cells */ - bordered: Boolean, - /** Whether table is striped */ - striped: Boolean, - /** Makes the cells narrower */ - narrowed: Boolean, - /** Rows are highlighted when hovering */ - hoverable: Boolean, - /** Loading state */ - loading: Boolean, - /** Allow row details */ - detailed: Boolean, - /** Rows can be checked (multiple) */ - checkable: Boolean, - /** Show check/uncheck all checkbox in table header when checkable */ - headerCheckable: { - type: Boolean, - default: true - }, - /** - * Position of the checkbox (if checkable is true) - * @values left, right - */ - checkboxPosition: { - type: String, - default: 'left', - validator: (value) => { - return [ - 'left', - 'right' - ].indexOf(value) >= 0 - } - }, - /** Set which row is selected, use the .sync modifier (Vue 2.x) or v-model:selected (Vue 3.x) to make it two-way binding */ - selected: Object, - /** Custom method to verify if a row is selectable, works when is selected. */ - isRowSelectable: { - type: Function, - default: () => true - }, - /** Table can be focused and user can navigate with keyboard arrows (require selected) and rows are highlighted when hovering */ - focusable: Boolean, - /** Custom method to verify if row is checked, works when is checkable. Useful for backend pagination */ - customIsChecked: Function, - /** Custom method to verify if a row is checkable, works when is checkable */ - isRowCheckable: { - type: Function, - default: () => true - }, - /** Set which rows are checked, use the .sync modifier (Vue 2.x) or v-model:checkedRows (Vue 3.x) to make it two-way binding */ - checkedRows: { - type: Array, - default: () => [] - }, - /** Rows appears as cards on mobile (collapse rows) */ - mobileCards: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'table.mobileCards', true) - } - }, - /** Sets the default sort column and order โ e.g. ['first_name', 'desc'] */ - defaultSort: [String, Array], - /** - * Sets the default sort column direction on the first click - * @values asc, desc - */ - defaultSortDirection: { - type: String, - default: 'asc' - }, - /** Sets the header sorting icon */ - sortIcon: { - type: String, - default: () => { return getValueByPath(getOptions(), 'table.sortIcon', 'arrow-up') } - }, - /** - * Sets the size of the sorting icon - * @values small, medium, large - */ - sortIconSize: { - type: String, - default: () => { return getValueByPath(getOptions(), 'table.sortIconSize', 'small') } - }, - /** Adds pagination to the table */ - paginated: Boolean, - /** Current page of table data (if paginated), use the .sync modifier (Vue 2.x) or v-model:currentPage (Vue 3.x) to make it two-way binding */ - currentPage: { - type: Number, - default: 1 - }, - /** How many rows per page (if paginated) */ - perPage: { - type: [Number, String], - default: () => { return getValueByPath(getOptions(), 'table.perPage', 20) } - }, - /** Allow icon and column to be visible */ - showDetailIcon: { - type: Boolean, - default: true - }, - /** Icon name of detail action */ - detailIcon: { - type: String, - default: 'chevron-right' - }, - /** - * Pagination position (if paginated) - * @values bottom, top, bot - */ - paginationPosition: { - type: String, - default: () => { return getValueByPath(getOptions(), 'table.paginationPosition', 'bottom') }, - validator: (value) => { - return [ - 'bottom', - 'top', - 'both' - ].indexOf(value) >= 0 - } - }, - /** Columns won't be sorted with Javascript, use with sort event to sort in your backend */ - backendSorting: Boolean, - /** Columns won't be filtered with Javascript, use with searchable prop to the columns to filter in your backend */ - backendFiltering: Boolean, - /** Add a class to row based on the return */ - rowClass: { - type: Function, - default: () => '' - }, - /** Allow pre-defined opened details. Ideal to open details via vue-router. (A unique key is required; check detail-key prop) */ - openedDetailed: { - type: Array, - default: () => [] - }, - /** Controls the visibility of the trigger that toggles the detailed rows. */ - hasDetailedVisible: { - type: Function, - default: () => true - }, - /** Use a unique key of your data Object when use detailed or opened detailed. (id recommended) */ - detailKey: { - type: String, - default: '' - }, - /** Custom style on details */ - customDetailRow: { - type: Boolean, - default: false - }, - /* Transition name to use when toggling row details. */ - detailTransition: { - type: String, - default: '' - }, - /** Rows won't be paginated with Javascript, use with page-change event to paginate in your backend */ - backendPagination: Boolean, - /** Total number of table data if backend-pagination is enabled */ - total: { - type: [Number, String], - default: 0 - }, - /** Icon pack to use */ - iconPack: String, - /** Text when nothing is selected */ - mobileSortPlaceholder: String, - /** Use a unique key of your data Object for each row. Useful if your data prop has dynamic indices. (id recommended) */ - customRowKey: String, - /** Allows rows to be draggable */ - draggable: { - type: Boolean, - default: false - }, - /** Allows columns to be draggable */ - draggableColumn: { - type: Boolean, - default: false - }, - /** Add a horizontal scrollbar when table is too wide */ - scrollable: Boolean, - ariaNextLabel: String, - ariaPreviousLabel: String, - ariaPageLabel: String, - ariaCurrentLabel: String, - /** Show a sticky table header */ - stickyHeader: Boolean, - /** Table fixed height */ - height: [Number, String], - /** Add a native event to filter */ - filtersEvent: { - type: String, - default: '' - }, - /** Filtering debounce time (in milliseconds) */ - debounceSearch: Number, - /** Show header */ - showHeader: { - type: Boolean, - default: () => { return getValueByPath(getOptions(), 'table.showHeader', true) } - }, - /** Make the checkbox column sticky when checkable */ - stickyCheckbox: { - type: Boolean, - default: false - }, - /** Rounded pagination if paginated */ - paginationRounded: Boolean, - /** Size of pagination if paginated */ - paginationSize: { - type: String, - default: () => { return getValueByPath(getOptions(), 'table.paginationSize', 'small') } - }, - rootClass: [String, Function, Array], - tableClass: [String, Function, Array], - wrapperClass: [String, Function, Array], - footerClass: [String, Function, Array], - emptyClass: [String, Function, Array], - detailedClass: [String, Function, Array], - borderedClass: [String, Function, Array], - stripedClass: [String, Function, Array], - narrowedClass: [String, Function, Array], - hoverableClass: [String, Function, Array], - thClass: [String, Function, Array], - tdClass: [String, Function, Array], - thPositionClass: [String, Function, Array], - thStickyClass: [String, Function, Array], - thCheckboxClass: [String, Function, Array], - thCurrentSortClass: [String, Function, Array], - thSortableClass: [String, Function, Array], - thUnselectableClass: [String, Function, Array], - thSortIconClass: [String, Function, Array], - thDetailedClass: [String, Function, Array], - tdPositionClass: [String, Function, Array], - tdStickyClass: [String, Function, Array], - tdCheckboxClass: [String, Function, Array], - tdDetailedChevronClass: [String, Function, Array], - trSelectedClass: [String, Function, Array], - trCheckedClass: [String, Function, Array], - stickyHeaderClass: [String, Function, Array], - scrollableClass: [String, Function, Array], - mobileSortClass: [String, Function, Array], - paginationWrapperClass: [String, Function, Array], - mobileClass: [String, Function, Array], - thSubheadingClass: [String, Function, Array] - }, - data() { - return { - visibleDetailRows: this.openedDetailed, - newData: this.data, - newDataTotal: this.backendPagination ? this.total : this.data.length, - newCheckedRows: [...this.checkedRows], - lastCheckedRowIndex: null, - newCurrentPage: this.currentPage, - currentSortColumn: {}, - isAsc: true, - filters: {}, - defaultSlots: [], - firstTimeSort: true, - sequence: 1, - isDraggingRow: false, - isDraggingColumn: false - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-table__root'), - { [this.computedClass('mobileClass', 'o-table__wrapper--mobile')]: this.isMobile } - ] - }, - tableClasses() { - return [ - this.computedClass('tableClass', 'o-table'), - { [this.computedClass('borderedClass', 'o-table--bordered')]: this.bordered }, - { [this.computedClass('stripedClass', 'o-table--striped')]: this.striped }, - { [this.computedClass('narrowedClass', 'o-table--narrowed')]: this.narrowed }, - { [this.computedClass('hoverableClass', 'o-table--hoverable')]: ((this.hoverable || this.focusable) && this.visibleData.length) }, - { [this.computedClass('emptyClass', 'o-table--table__empty')]: !this.visibleData.length } - ] - }, - tableWrapperClasses() { - return [ - this.computedClass('wrapperClass', 'o-table__wrapper'), - { [this.computedClass('stickyHeaderClass', 'o-table__wrapper--sticky-header')]: this.stickyHeader }, - { [this.computedClass('scrollableClass', 'o-table__wrapper--scrollable')]: this.isScrollable } - ] - }, - footerClasses() { - return [ - this.computedClass('footerClass', 'o-table__footer') - ] - }, - thBaseClasses() { - return [ - this.computedClass('thClass', 'o-table__th') - ] - }, - tdBaseClasses() { - return [ - this.computedClass('tdClass', 'o-table__td') - ] - }, - thCheckboxClasses() { - return [ - ...this.thBaseClasses, - this.computedClass('thCheckboxClass', 'o-table__th-checkbox') - ] - }, - thDetailedClasses() { - return [ - ...this.thBaseClasses, - this.computedClass('thDetailedClass', 'o-table__th--detailed') - ] - }, - thSubheadingClasses() { - return [ - ...this.thBaseClasses, - this.computedClass('thSubheadingClass', 'o-table__th') - ]; - }, - tdCheckboxClasses() { - return [ - ...this.tdBaseClasses, - this.computedClass('tdCheckboxClass', 'o-table__td-checkbox'), - ...this.thStickyClasses({ sticky: this.stickyCheckbox }) - ] - }, - detailedClasses() { - return [ - this.computedClass('detailedClass', 'o-table__detail') - ] - }, - tdDetailedChevronClasses() { - return [ - ...this.tdBaseClasses, - this.computedClass('tdDetailedChevronClass', 'o-table__td-chevron') - ] - }, - mobileSortClasses() { - return [ - this.computedClass('mobileSortClass', 'o-table__mobile-sort') - ] - }, - paginationWrapperClasses() { - return [ - this.computedClass('paginationWrapperClass', 'o-table__pagination') - ] - }, - tableWrapperStyle() { - return { - height: toCssDimension(this.height) - } - }, - /** - * Splitted data based on the pagination. - */ - visibleData() { - if (!this.paginated) return this.newData - - const currentPage = this.newCurrentPage - const perPage = this.perPage - - if (this.newData.length <= perPage) { - return this.newData - } else { - const start = (currentPage - 1) * perPage - const end = parseInt(start, 10) + parseInt(perPage, 10) - return this.newData.slice(start, end) - } - }, - - visibleColumns() { - if (!this.newColumns) return this.newColumns - return this.newColumns.filter((column) => { - return column.visible || column.visible === undefined - }) - }, - - /** - * Check if all rows in the page are checked. - */ - isAllChecked() { - const validVisibleData = this.visibleData.filter( - (row) => this.isRowCheckable(row)) - if (validVisibleData.length === 0) return false - const isAllChecked = validVisibleData.some((currentVisibleRow) => { - return indexOf(this.newCheckedRows, currentVisibleRow, this.customIsChecked) < 0 - }) - return !isAllChecked - }, - - /** - * Check if all rows in the page are checkable. - */ - isAllUncheckable() { - const validVisibleData = this.visibleData.filter( - (row) => this.isRowCheckable(row)) - return validVisibleData.length === 0 - }, - - /** - * Check if has any sortable column. - */ - hasSortablenewColumns() { - return this.newColumns.some((column) => { - return column.sortable - }) - }, - - /** - * Check if has any searchable column. - */ - hasSearchablenewColumns() { - return this.newColumns.some((column) => { - return column.searchable - }) - }, - - /** - * Return total column count based if it's checkable or expanded - */ - columnCount() { - let count = this.visibleColumns.length - count += this.checkable ? 1 : 0 - count += (this.detailed && this.showDetailIcon) ? 1 : 0 - - return count - }, - - /** - * return if detailed row tabled - * will be with chevron column & icon or not - */ - showDetailRowIcon() { - return this.detailed && this.showDetailIcon - }, - - /** - * return if scrollable table - */ - isScrollable() { - if (this.scrollable) return true - if (!this.newColumns) return false - return this.newColumns.some((column) => { - return column.sticky - }) - }, - - newColumns() { - if (this.columns && this.columns.length) { - return this.columns.map((column) => { - const TableColumnComponent = VueInstance.extend(TableColumn) - const component = new TableColumnComponent( - { parent: this, propsData: column } - ) - component.$scopedSlots = { - 'default': (props) => { - const vnode = component.$createElement( - 'span', - { domProps: { innerHTML: getValueByPath(props.row, column.field) } } - ) - return [vnode] - } - } - return component - }) - } - return this.defaultSlots - .filter((vnode) => - vnode.componentInstance && - vnode.componentInstance.$data && - vnode.componentInstance.$data._isTableColumn) - .map((vnode) => vnode.componentInstance) - }, - - isMobile() { - return this.mobileCards && this.isMatchMedia - }, - - hasCustomSubheadings() { - if (this.$scopedSlots && this.$scopedSlots.subheading) return true - return this.newColumns.some((column) => { - return column.subheading || (column.$scopedSlots && column.$scopedSlots.subheading) - }) - }, - - canDragRow() { - return this.draggable && !this.isDraggingColumn - }, - canDragColumn() { - return this.draggableColumn && !this.isDraggingRow - } - }, - watch: { - /** - * When data prop change: - * 1. Update internal value. - * 2. Filter data if it's not backend-filtered. - * 3. Sort again if it's not backend-sorted. - * 4. Set new total if it's not backend-paginated. - */ - data(value) { - this.newData = value - if (!this.backendFiltering) { - this.newData = value.filter((row) => this.isRowFiltered(row)) - } - if (!this.backendSorting) { - this.sort(this.currentSortColumn, true) - } - if (!this.backendPagination) { - this.newDataTotal = this.newData.length - } - }, - - /** - * When Pagination total change, update internal total - * only if it's backend-paginated. - */ - total(newTotal) { - if (!this.backendPagination) return - - this.newDataTotal = newTotal - }, - - currentPage(newValue) { - this.newCurrentPage = newValue - }, - - /** - * When checkedRows prop change, update internal value without - * mutating original data. - */ - checkedRows(rows) { - this.newCheckedRows = [...rows] - }, - - debounceSearch: { - handler(value) { - this.debouncedHandleFiltersChange = debounce(this.handleFiltersChange, value) - }, - immediate: true - }, - - filters: { - handler(value) { - if (this.debounceSearch) { - this.debouncedHandleFiltersChange(value) - } else { - this.handleFiltersChange(value) - } - }, - deep: true - }, - - /** - * When the user wants to control the detailed rows via props. - * Or wants to open the details of certain row with the router for example. - */ - openedDetailed(expandedRows) { - this.visibleDetailRows = expandedRows - }, - - newCurrentPage(newVal) { - this.$emit('update:currentPage', newVal) - } - }, - methods: { - refreshSlots() { - this.defaultSlots = this.$slots.default || [] - }, - thClasses(column) { - return [ - ...this.thBaseClasses, - ...this.thStickyClasses(column), - getValueByPath(column.thAttrs(column), 'class'), - { [this.computedClass('thCurrentSortClass', 'o-table__th-current-sort')]: (this.currentSortColumn === column) }, - { [this.computedClass('thSortableClass', 'o-table__th--sortable')]: column.sortable }, - { [this.computedClass('thUnselectableClass', 'o-table__th--unselectable')]: column.isHeaderUnselectable }, - { [this.computedClass('thPositionClass', 'o-table__th--', column.position)]: column.position }, - ] - }, - thStickyClasses(column) { - return [ - { [this.computedClass('thStickyClass', 'o-table__th--sticky')]: column.sticky } - ] - }, - rowClasses(row, index) { - return [ - this.rowClass(row, index), - { [this.computedClass('trSelectedClass', 'o-table__tr--selected')]: this.isRowSelected(row, this.selected) }, - { [this.computedClass('trCheckedClass', 'o-table__tr--checked')]: this.isRowChecked(row) } - ] - }, - thSortIconClasses() { - return [ - this.computedClass('thSortIconClass', 'o-table__th__sort-icon'), - ] - }, - tdClasses(row, column) { - return [ - ...this.tdBaseClasses, - getValueByPath(column.tdAttrs(row, column), 'class'), - { [this.computedClass('tdPositionClass', 'o-table__td--', column.position)]: column.position }, - { [this.computedClass('tdStickyClass', 'o-table__td--sticky')]: column.sticky } - ] - }, - onFiltersEvent(event) { - this.$emit(`filters-event-${this.filtersEvent}`, { event, filters: this.filters }) - }, - handleFiltersChange(value) { - if (this.backendFiltering) { - this.$emit('filters-change', value) - } else { - this.newData = this.data.filter((row) => this.isRowFiltered(row)) - if (!this.backendPagination) { - this.newDataTotal = this.newData.length - } - if (!this.backendSorting) { - if (Object.keys(this.currentSortColumn).length > 0) { - this.doSortSingleColumn(this.currentSortColumn) - } - } - } - }, - - /** - * Sort an array by key without mutating original data. - * Call the user sort function if it was passed. - */ - sortBy(array, key, fn, isAsc) { - let sorted = [] - // Sorting without mutating original data - if (fn && typeof fn === 'function') { - sorted = [...array].sort((a, b) => fn(a, b, isAsc)) - } else { - sorted = [...array].sort((a, b) => { - // Get nested values from objects - let newA = getValueByPath(a, key) - let newB = getValueByPath(b, key) - - // sort boolean type - if (typeof newA === 'boolean' && typeof newB === 'boolean') { - return isAsc ? newA - newB : newB - newA - } - - if (!newA && newA !== 0) return 1 - if (!newB && newB !== 0) return -1 - if (newA === newB) return 0 - - newA = (typeof newA === 'string') - ? newA.toUpperCase() - : newA - newB = (typeof newB === 'string') - ? newB.toUpperCase() - : newB - - return isAsc - ? newA > newB ? 1 : -1 - : newA > newB ? -1 : 1 - }) - } - - return sorted - }, - - /** - * Sort the column. - * Toggle current direction on column if it's sortable - * and not just updating the prop. - */ - sort(column, updatingData = false, event = null) { - if (!column || !column.sortable) return - - if (!updatingData) { - this.isAsc = column === this.currentSortColumn - ? !this.isAsc - : (this.defaultSortDirection.toLowerCase() !== 'desc') - } - if (!this.firstTimeSort) { - /** - * @property {string} field column field - * @property {boolean} direction 'asc' or 'desc' - * @property {Event} event native event - */ - this.$emit('sort', column.field, this.isAsc ? 'asc' : 'desc', event) - } - if (!this.backendSorting) { - this.doSortSingleColumn(column) - } - this.currentSortColumn = column - }, - - doSortSingleColumn(column) { - this.newData = this.sortBy( - this.newData, - column.field, - column.customSort, - this.isAsc - ) - }, - - isRowSelected(row, selected) { - if (!selected) { - return false - } - if (this.customRowKey) { - return row[this.customRowKey] === selected[this.customRowKey] - } - return row === selected - }, - - /** - * Check if the row is checked (is added to the array). - */ - isRowChecked(row) { - return indexOf(this.newCheckedRows, row, this.customIsChecked) >= 0 - }, - - /** - * Remove a checked row from the array. - */ - removeCheckedRow(row) { - const index = indexOf(this.newCheckedRows, row, this.customIsChecked) - if (index >= 0) { - this.newCheckedRows.splice(index, 1) - } - }, - - /** - * Header checkbox click listener. - * Add or remove all rows in current page. - */ - checkAll() { - const isAllChecked = this.isAllChecked - this.visibleData.forEach((currentRow) => { - if (this.isRowCheckable(currentRow)) { - this.removeCheckedRow(currentRow) - } - if (!isAllChecked) { - if (this.isRowCheckable(currentRow)) { - this.newCheckedRows.push(currentRow) - } - } - }) - /** - * @property {Array<Object>} newCheckedRows checked rows - */ - this.$emit('check', this.newCheckedRows) - this.$emit('check-all', this.newCheckedRows) - - // Emit checked rows to update user variable - this.$emit('update:checkedRows', this.newCheckedRows) - }, - - /** - * Row checkbox click listener. - */ - checkRow(row, index, event) { - if (!this.isRowCheckable(row)) return - const lastIndex = this.lastCheckedRowIndex - this.lastCheckedRowIndex = index - - if (event.shiftKey && lastIndex !== null && index !== lastIndex) { - this.shiftCheckRow(row, index, lastIndex) - } else if (!this.isRowChecked(row)) { - this.newCheckedRows.push(row) - } else { - this.removeCheckedRow(row) - } - - this.$emit('check', this.newCheckedRows, row) - - // Emit checked rows to update user variable - this.$emit('update:checkedRows', this.newCheckedRows) - }, - - /** - * Check row when shift is pressed. - */ - shiftCheckRow(row, index, lastCheckedRowIndex) { - // Get the subset of the list between the two indicies - const subset = this.visibleData.slice( - Math.min(index, lastCheckedRowIndex), - Math.max(index, lastCheckedRowIndex) + 1 - ) - - // Determine the operation based on the state of the clicked checkbox - const shouldCheck = !this.isRowChecked(row) - - subset.forEach((item) => { - this.removeCheckedRow(item) - if (shouldCheck && this.isRowCheckable(item)) { - this.newCheckedRows.push(item) - } - }) - }, - - /** - * Row click listener. - * Emit all necessary events. - */ - selectRow(row, index) { - /** - * @property {Object} row clicked row - * @property {number} index index of clicked row - */ - this.$emit('click', row, index) - - if (this.selected === row) return - if (!this.isRowSelectable(row)) return - - // Emit new and old row - /** - * @property {Object} row selected row - * @property {Array<Object>} selected selected rows - */ - this.$emit('select', row, this.selected) - - // Emit new row to update user variable - this.$emit('update:selected', row) - }, - - /** - * Toggle to show/hide details slot - */ - toggleDetails(obj) { - const found = this.isVisibleDetailRow(obj) - - if (found) { - this.closeDetailRow(obj) - this.$emit('details-close', obj) - } else { - this.openDetailRow(obj) - this.$emit('details-open', obj) - } - - // Syncs the detailed rows with the parent component - this.$emit('update:openedDetailed', this.visibleDetailRows) - }, - - openDetailRow(obj) { - const index = this.handleDetailKey(obj) - this.visibleDetailRows.push(index) - }, - - closeDetailRow(obj) { - const index = this.handleDetailKey(obj) - const i = this.visibleDetailRows.indexOf(index) - if (i >= 0) { - this.visibleDetailRows.splice(i, 1) - } - }, - - isVisibleDetailRow(obj) { - const index = this.handleDetailKey(obj) - return this.visibleDetailRows.indexOf(index) >= 0 - }, - - isActiveDetailRow(row) { - return this.detailed && !this.customDetailRow && this.isVisibleDetailRow(row) - }, - - isActiveCustomDetailRow(row) { - return this.detailed && this.customDetailRow && this.isVisibleDetailRow(row) - }, - - isRowFiltered(row) { - for (const key in this.filters) { - if (!this.filters[key]) continue - const input = this.filters[key] - const column = this.newColumns.filter((c) => c.field === key)[0] - if (column && column.customSearch && typeof column.customSearch === 'function') { - if (!column.customSearch(row, input)) return false - } else { - const value = getValueByPath(row, key) - if (value == null) return false - if (Number.isInteger(value)) { - if (value !== Number(input)) return false - } else { - const re = new RegExp(escapeRegExpChars(input), 'i') - if (Array.isArray(value)) { - const valid = value.some((val) => - re.test(removeDiacriticsFromString(val)) || re.test(val) - ) - if (!valid) return false - } else { - if (!re.test(removeDiacriticsFromString(value)) && !re.test(value)) { - return false - } - } - } - } - } - return true - }, - - /** - * When the detailKey is defined we use the object[detailKey] as index. - * If not, use the object reference by default. - */ - handleDetailKey(index) { - const key = this.detailKey - return !key.length || !index - ? index - : index[key] - }, - - /** - * Call initSort only first time (For example async data). - */ - checkSort() { - if (this.newColumns.length && this.firstTimeSort) { - this.initSort() - this.firstTimeSort = false - } else if (this.newColumns.length) { - if (Object.keys(this.currentSortColumn).length > 0) { - for (let i = 0; i < this.newColumns.length; i++) { - if (this.newColumns[i].field === this.currentSortColumn.field) { - this.currentSortColumn = this.newColumns[i] - break - } - } - } - } - }, - - /** - * Check if footer slot has custom content. - */ - hasCustomFooterSlot() { - const footer = this.$slots.footer - if (footer.length > 1) return true - - const tag = footer[0].tag - if (tag !== 'th' && tag !== 'td') return false - - return true - }, - - /** - * Table arrow keys listener, change selection. - */ - pressedArrow(pos) { - if (!this.visibleData.length) return - - let index = this.visibleData.indexOf(this.selected) + pos - - // Prevent from going up from first and down from last - index = index < 0 - ? 0 - : index > this.visibleData.length - 1 - ? this.visibleData.length - 1 - : index - - const row = this.visibleData[index] - - if (!this.isRowSelectable(row)) { - let newIndex = null - if (pos > 0) { - for (let i = index; i < this.visibleData.length && newIndex === null; i++) { - if (this.isRowSelectable(this.visibleData[i])) newIndex = i - } - } else { - for (let i = index; i >= 0 && newIndex === null; i--) { - if (this.isRowSelectable(this.visibleData[i])) newIndex = i - } - } - if (newIndex >= 0) { - this.selectRow(this.visibleData[newIndex]) - } - } else { - this.selectRow(row) - } - }, - - /** - * Focus table element if has selected prop. - */ - focus() { - if (!this.focusable) return - - this.$el.querySelector('table').focus() - }, - - /** - * Initial sorted column based on the default-sort prop. - */ - initSort() { - if (!this.defaultSort) return - let sortField = '' - let sortDirection = this.defaultSortDirection - if (Array.isArray(this.defaultSort)) { - sortField = this.defaultSort[0] - if (this.defaultSort[1]) { - sortDirection = this.defaultSort[1] - } - } else { - sortField = this.defaultSort - } - const sortColumn = this.newColumns.filter( - (column) => (column.field === sortField))[0] - if (sortColumn) { - this.isAsc = sortDirection.toLowerCase() !== 'desc' - this.sort(sortColumn, true) - } - }, - /** - * Emits drag start event - */ - handleDragStart(event, row, index) { - if (!this.draggable) return - this.$emit('dragstart', {event, row, index}) - }, - /** - * Emits drag leave event - */ - handleDragEnd(event, row, index) { - if (!this.draggable) return - this.$emit('dragend', {event, row, index}) - }, - /** - * Emits drop event - */ - handleDrop(event, row, index) { - if (!this.draggable) return - this.$emit('drop', {event, row, index}) - }, - /** - * Emits drag over event - */ - handleDragOver(event, row, index) { - if (!this.draggable) return - this.$emit('dragover', {event, row, index}) - }, - /** - * Emits drag leave event - */ - handleDragLeave(event, row, index) { - if (!this.draggable) return - this.$emit('dragleave', {event, row, index}) - }, - - /** - * Emits drag start event (column) - */ - handleColumnDragStart(event, column, index) { - if (!this.canDragColumn) return - this.isDraggingColumn = true - this.$emit('columndragstart', {event, column, index}) - }, - - /** - * Emits drag leave event (column) - */ - handleColumnDragEnd(event, column, index) { - if (!this.canDragColumn) return - this.isDraggingColumn = false - this.$emit('columndragend', {event, column, index}) - }, - - /** - * Emits drop event (column) - */ - handleColumnDrop(event, column, index) { - if (!this.canDragColumn) return - this.$emit('columndrop', {event, column, index}) - }, - - /** - * Emits drag over event (column) - */ - handleColumnDragOver(event, column, index) { - if (!this.canDragColumn) return - this.$emit('columndragover', {event, column, index}) - }, - - /** - * Emits drag leave event (column) - */ - handleColumnDragLeave(event, column, index) { - if (!this.canDragColumn) return - this.$emit('columndragleave', {event, column, index}) - }, - - emitEventForRow(eventName, event, row) { - return this.$listeners[eventName] ? this.$emit(eventName, row, event) : null - }, - - _addColumn(column) { - this.defaultSlots.push(column) - const slot = this.$refs['slot'] - if (slot && slot.children) { - this.$nextTick(() => { - const ids = this.defaultSlots.map(it => `[data-id="${it.newKey}"]`).join(',') - const sortedIds = Array.from(slot.querySelectorAll(ids)).map( - (el) => el.getAttribute('data-id')) - this.defaultSlots = this.defaultSlots.sort((a, b) => - sortedIds.indexOf(`${a.newKey}`) - sortedIds.indexOf(`${b.newKey}`) ) - }) - } - }, - - _removeColumn(column) { - this.$nextTick(() => { - this.defaultSlots = this.defaultSlots.filter(d => d.newKey !== column.newKey) - }) - }, - - _nextSequence() { - return this.sequence++ - } - } -} -</script> diff --git a/packages/oruga/src/components/table/TableColumn.spec.js b/packages/oruga/src/components/table/TableColumn.spec.js deleted file mode 100644 index 23c6c1bea..000000000 --- a/packages/oruga/src/components/table/TableColumn.spec.js +++ /dev/null @@ -1,23 +0,0 @@ -import { mount } from '@vue/test-utils' -import OTable from '@components/table/Table' -import OTableColumn from '@components/table/TableColumn' - -let wrapper -let wrapperParent - -describe('OTableColumn', () => { - beforeEach(() => { - wrapperParent = mount(OTable, { - sync: false, - }) - wrapper = mount(OTableColumn, { - provide: { - $table: wrapperParent.vm - } - }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) -}) diff --git a/packages/oruga/src/components/table/TableColumn.vue b/packages/oruga/src/components/table/TableColumn.vue deleted file mode 100644 index a97a901b8..000000000 --- a/packages/oruga/src/components/table/TableColumn.vue +++ /dev/null @@ -1,92 +0,0 @@ -<script> -import { toCssDimension } from '../../utils/helpers' - -/** - * @displayName Table Column - */ -export default { - name: 'OTableColumn', - inject: ['$table'], - props: { - label: String, - customKey: [String, Number], - field: String, - meta: [String, Number, Boolean, Function, Object, Array], - width: [Number, String], - numeric: Boolean, - /** - * Optional, position of column content - * @values centered, right - */ - position: { - type: String, - validator(value) { - return [ - 'left', - 'centered', - 'right' - ].indexOf(value) > -1 - } - }, - searchable: Boolean, - sortable: Boolean, - visible: { - type: Boolean, - default: true - }, - customSort: Function, - customSearch: Function, - sticky: Boolean, - headerSelectable: Boolean, - /** Adds native attributes to th :th-attrs="(column)" => ({})" */ - thAttrs: { - type: Function, - default: () => ({}) - }, - /** Adds native attributes to td :td-attrs="(row, column)" => ({})" */ - tdAttrs: { - type: Function, - default: () => ({}) - }, - subheading: String - }, - data() { - return { - newKey: this.$table._nextSequence(), - _isTableColumn: true - } - }, - computed: { - style() { - return { - width: toCssDimension(this.width) - } - }, - hasDefaultSlot() { - return this.$scopedSlots.default - }, - hasSearchableSlot() { - return this.$scopedSlots.searchable - }, - hasHeaderSlot() { - return this.$scopedSlots.header - }, - isHeaderUnselectable() { - return !this.headerSelectable && this.sortable - } - }, - created() { - if (!this.$table) { - throw new Error('You should wrap oTableColumn on a oTable') - } - this.$table._addColumn(this) - }, - beforeDestroy() { - this.$table._removeColumn(this) - }, - render() { - // renderless - return this.$createElement('span', { domProps: { 'data-id': this.newKey } }, this.label) - } -} -</script> diff --git a/packages/oruga/src/components/table/TableMobileSort.spec.js b/packages/oruga/src/components/table/TableMobileSort.spec.js deleted file mode 100644 index aed435ca3..000000000 --- a/packages/oruga/src/components/table/TableMobileSort.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -import Vue from 'vue' -import { shallowMount } from '@vue/test-utils' -import OTable from '@components/table/Table' -import { setVueInstance } from '../../utils/config' - -let wrapper -const columns = [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true, - sortable: true - }, -] - -describe('OTableMobileSort', () => { - setVueInstance(Vue) - - beforeEach(() => { - wrapper = shallowMount(OTable, { - propsData: { - mobileCards: true, - columns - } - }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/table/TableMobileSort.vue b/packages/oruga/src/components/table/TableMobileSort.vue deleted file mode 100644 index 72d997e8c..000000000 --- a/packages/oruga/src/components/table/TableMobileSort.vue +++ /dev/null @@ -1,104 +0,0 @@ -<template> - <div :class="$table.mobileSortClasses"> - <o-field> - <o-select - v-model="mobileSort" - expanded> - <template v-if="placeholder"> - <option - v-show="showPlaceholder" - :value="{}" - selected - disabled - hidden> - {{ placeholder }} - </option> - </template> - <option - v-for="(column, index) in sortableColumns" - :key="index" - :value="column"> - {{ column.label }} - </option> - </o-select> - <o-button @click="sort"> - <!-- :class="$table.iconSortClasses()" --> - <o-icon - v-show="currentSortColumn === mobileSort" - :icon="sortIcon" - :pack="iconPack" - :size="sortIconSize" - both - :rotation="!isAsc ? 180 : 0" - /> - </o-button> - </o-field> - </div> -</template> - -<script> -import Button from '../button/Button' -import Select from '../select/Select' -import Icon from '../icon/Icon' -import Field from '../field/Field' - -export default { - name: 'OTableMobileSort', - components: { - [Button.name]: Button, - [Select.name]: Select, - [Icon.name]: Icon, - [Field.name]: Field - }, - inject: ['$table'], - props: { - currentSortColumn: Object, - columns: Array, - placeholder: String, - iconPack: String, - sortIcon: { - type: String, - default: 'arrow-up' - }, - sortIconSize: { - type: String, - default: 'small' - }, - isAsc: Boolean - }, - data() { - return { - mobileSort: this.currentSortColumn, - defaultEvent: { - shiftKey: true, - altKey: true, - ctrlKey: true - }, - ignoreSort: false - } - }, - computed: { - showPlaceholder() { - return !this.columns || !this.columns.some((column) => column === this.mobileSort) - }, - sortableColumns() { - if (!this.columns) return [] - return this.columns.filter(c => c.sortable) - } - }, - watch: { - mobileSort(column) { - if (this.currentSortColumn === column) return - this.$emit('sort', column, this.defaultEvent) - }, - currentSortColumn(column) { - this.mobileSort = column - } - }, - methods: { - sort() { - this.$emit('sort', this.mobileSort, this.defaultEvent) - } - } -} -</script> diff --git a/packages/oruga/src/components/table/TablePagination.spec.js b/packages/oruga/src/components/table/TablePagination.spec.js deleted file mode 100644 index bddacc056..000000000 --- a/packages/oruga/src/components/table/TablePagination.spec.js +++ /dev/null @@ -1,18 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OTablePagination from '@components/table/TablePagination' - -let wrapper - -describe('OTablePagination', () => { - beforeEach(() => { - wrapper = shallowMount(OTablePagination, {sync: false}) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/table/TablePagination.vue b/packages/oruga/src/components/table/TablePagination.vue deleted file mode 100644 index 3e1bd50c4..000000000 --- a/packages/oruga/src/components/table/TablePagination.vue +++ /dev/null @@ -1,70 +0,0 @@ -<template> - <div :class="rootClass"> - <div> - <slot /> - </div> - <div> - <div v-if="paginated"> - <o-pagination - :icon-pack="iconPack" - :total="total" - :per-page="perPage" - :simple="paginationSimple" - :size="paginationSize" - :current="newCurrentPage" - :rounded="rounded" - @change="pageChanged" - :aria-next-label="ariaNextLabel" - :aria-previous-label="ariaPreviousLabel" - :aria-page-label="ariaPageLabel" - :aria-current-label="ariaCurrentLabel" /> - </div> - </div> - </div> -</template> - -<script> -import Pagination from '../pagination/Pagination.vue' - -export default { - name: 'OTablePagination', - components: { - [Pagination.name]: Pagination - }, - props: { - paginated: Boolean, - total: [Number, String], - perPage: [Number, String], - currentPage: [Number, String], - paginationSimple: Boolean, - paginationSize: String, - rounded: Boolean, - iconPack: String, - rootClass: [String, Array, Object], - ariaNextLabel: String, - ariaPreviousLabel: String, - ariaPageLabel: String, - ariaCurrentLabel: String - }, - data() { - return { - newCurrentPage: this.currentPage - } - }, - watch: { - currentPage(newVal) { - this.newCurrentPage = newVal - } - }, - methods: { - /** - * Paginator change listener. - */ - pageChanged(page) { - this.newCurrentPage = page > 0 ? page : 1 - this.$emit('update:currentPage', this.newCurrentPage) - this.$emit('page-change', this.newCurrentPage) - } - } -} -</script> diff --git a/packages/oruga/src/components/table/__snapshots__/Table.spec.js.snap b/packages/oruga/src/components/table/__snapshots__/Table.spec.js.snap deleted file mode 100644 index 156ca1d07..000000000 --- a/packages/oruga/src/components/table/__snapshots__/Table.spec.js.snap +++ /dev/null @@ -1,26 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OTable render correctly 1`] = ` -<div class="o-table__root"> - <div style="display: none;"></div> - <!----> - <!----> - <div class="o-table__wrapper"> - <table class="o-table o-table--table__empty"> - <!----> - <!----> - <tbody> - <tr> - <td colspan="0"></td> - </tr> - </tbody> - <!----> - </table> - <o-loading-stub animation="fade" oncancel="() => { - /* istanbul ignore next */ - cov_2jtz8vshvv.f[3]++; - }" icon="loading" iconspin="true" iconsize="medium" overlay="true"></o-loading-stub> - </div> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/table/__snapshots__/TableMobileSort.spec.js.snap b/packages/oruga/src/components/table/__snapshots__/TableMobileSort.spec.js.snap deleted file mode 100644 index 21fa84f5f..000000000 --- a/packages/oruga/src/components/table/__snapshots__/TableMobileSort.spec.js.snap +++ /dev/null @@ -1,37 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OTableMobileSort render correctly 1`] = ` -<div class="o-table__root"> - <div style="display: none;"></div> - <!----> - <!----> - <div class="o-table__wrapper"> - <table class="o-table o-table--table__empty"> - <!----> - <thead> - <tr> - <!----> - <!----> - <th draggable="false" class="o-table__th o-table__th--sortable o-table__th--unselectable" style="width: 40px;"><span> - ID - <span class="o-table__th__sort-icon" style="display: none;"><o-icon-stub icon="arrow-up" size="small" rotation="0" both="true"></o-icon-stub></span></span></th> - <!----> - </tr> - <!----> - <!----> - </thead> - <tbody> - <tr> - <td colspan="1"></td> - </tr> - </tbody> - <!----> - </table> - <o-loading-stub animation="fade" oncancel="() => { - /* istanbul ignore next */ - cov_2jtz8vshvv.f[3]++; - }" icon="loading" iconspin="true" iconsize="medium" overlay="true"></o-loading-stub> - </div> - <!----> -</div> -`; diff --git a/packages/oruga/src/components/table/__snapshots__/TablePagination.spec.js.snap b/packages/oruga/src/components/table/__snapshots__/TablePagination.spec.js.snap deleted file mode 100644 index 21b0b5fe8..000000000 --- a/packages/oruga/src/components/table/__snapshots__/TablePagination.spec.js.snap +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OTablePagination render correctly 1`] = ` -<div> - <div></div> - <div> - <!----> - </div> -</div> -`; diff --git a/packages/oruga/src/components/table/examples/Table.md b/packages/oruga/src/components/table/examples/Table.md deleted file mode 100644 index 94737fd21..000000000 --- a/packages/oruga/src/components/table/examples/Table.md +++ /dev/null @@ -1,1690 +0,0 @@ -## Examples - -### Base - -::: demo - -```html -<template> - <o-table :data="data" :columns="columns"></o-table> -</template> - -<script> - export default { - data() { - return { - data: [ - { - id: 1, - first_name: "Jesse", - last_name: "Simmons", - date: "2016-10-15 13:43:27", - gender: "Male", - }, - { - id: 2, - first_name: "John", - last_name: "Jacobs", - date: "2016-12-15 06:00:53", - gender: "Male", - }, - { - id: 3, - first_name: "Tina", - last_name: "Gilbert", - date: "2016-04-26 06:26:28", - gender: "Female", - }, - { - id: 4, - first_name: "Clarence", - last_name: "Flores", - date: "2016-04-10 10:28:46", - gender: "Male", - }, - { - id: 5, - first_name: "Anne", - last_name: "Lee", - date: "2016-12-06 14:38:38", - gender: "Female", - }, - ], - columns: [ - { - field: "id", - label: "ID", - width: "40", - numeric: true, - }, - { - field: "first_name", - label: "First Name", - }, - { - field: "last_name", - label: "Last Name", - }, - { - field: "date", - label: "Date", - position: 'centered', - }, - { - field: "gender", - label: "Gender", - }, - ], - }; - }, - }; -</script> -``` - -::: - -### Sandbox - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-switch v-model="isBordered">Bordered</o-switch> - <o-switch v-model="isStriped">Striped</o-switch> - <o-switch v-model="isNarrowed">Narrowed</o-switch> - <o-switch v-model="isHoverable">Hoverable</o-switch> - <o-switch v-model="isFocusable">Focusable</o-switch> - <o-switch v-model="isLoading">Loading state</o-switch> - <o-switch v-model="isEmpty">Empty</o-switch> - <o-switch v-model="hasMobileCards" - >Mobile cards <small>(collapsed rows)</small></o-switch - > - </o-field> - - <o-table - :data="isEmpty ? [] : data" - :bordered="isBordered" - :striped="isStriped" - :narrowed="isNarrowed" - :hoverable="isHoverable" - :loading="isLoading" - :focusable="isFocusable" - :mobile-cards="hasMobileCards" - > - <o-table-column field="id" label="ID" width="40" numeric v-slot="props"> - {{ props.row.id }} - </o-table-column> - - <o-table-column field="first_name" label="First Name" v-slot="props"> - {{ props.row.first_name }} - </o-table-column> - - <o-table-column field="last_name" label="Last Name" v-slot="props"> - {{ props.row.last_name }} - </o-table-column> - - <o-table-column field="date" label="Date" position="centered" v-slot="props"> - {{ new Date(props.row.date).toLocaleDateString() }} - </o-table-column> - - <o-table-column label="Gender" v-slot="props"> - <span> - <o-icon - pack="fas" - :icon="props.row.gender === 'Male' ? 'mars' : 'venus'" - > - </o-icon> - {{ props.row.gender }} - </span> - </o-table-column> - </o-table> - </section> -</template> - -<script> - export default { - data() { - const data = [ - { - id: 1, - first_name: "Jesse", - last_name: "Simmons", - date: "2016/10/15 13:43:27", - gender: "Male", - }, - { - id: 2, - first_name: "John", - last_name: "Jacobs", - date: "2016/12/15 06:00:53", - gender: "Male", - }, - { - id: 3, - first_name: "Tina", - last_name: "Gilbert", - date: "2016/04/26 06:26:28", - gender: "Female", - }, - { - id: 4, - first_name: "Clarence", - last_name: "Flores", - date: "2016/04/10 10:28:46", - gender: "Male", - }, - { - id: 5, - first_name: "Anne", - last_name: "Lee", - date: "2016/12/06 14:38:38", - gender: "Female", - }, - ]; - - return { - data, - isEmpty: false, - isBordered: false, - isStriped: false, - isNarrowed: false, - isHoverable: false, - isFocusable: false, - isLoading: false, - hasMobileCards: true, - }; - }, - }; -</script> -``` - -::: - -### Selection - -::: demo - -```html -<template> - <section> - <o-button - variant="danger" - @click="selected = null" - :disabled="!selected" - icon-left="times" - > - <span>Clear selected</span> - </o-button> - - <p> - {{ selected }} - </p> - - <o-table - :data="data" - :columns="columns" - :selected.sync="selected" - focusable - > - </o-table> - </section> -</template> - -<script> - export default { - data() { - const data = [ - { - id: 1, - first_name: "Jesse", - last_name: "Simmons", - date: "2016-10-15 13:43:27", - gender: "Male", - }, - { - id: 2, - first_name: "John", - last_name: "Jacobs", - date: "2016-12-15 06:00:53", - gender: "Male", - }, - { - id: 3, - first_name: "Tina", - last_name: "Gilbert", - date: "2016-04-26 06:26:28", - gender: "Female", - }, - { - id: 4, - first_name: "Clarence", - last_name: "Flores", - date: "2016-04-10 10:28:46", - gender: "Male", - }, - { - id: 5, - first_name: "Anne", - last_name: "Lee", - date: "2016-12-06 14:38:38", - gender: "Female", - }, - ]; - - return { - data, - selected: data[1], - columns: [ - { - field: "id", - label: "ID", - width: "40", - numeric: true, - }, - { - field: "first_name", - label: "First Name", - }, - { - field: "last_name", - label: "Last Name", - }, - { - field: "date", - label: "Date", - position: "centered", - }, - { - field: "gender", - label: "Gender", - }, - ], - }; - }, - }; -</script> -``` - -::: - -### Pagination - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-select v-model="defaultSortDirection"> - <option value="asc">Default sort direction: ASC</option> - <option value="desc">Default sort direction: DESC</option> - </o-select> - <o-select v-model="perPage" :disabled="!isPaginated"> - <option value="5">5 per page</option> - <option value="10">10 per page</option> - <option value="15">15 per page</option> - <option value="20">20 per page</option> - </o-select> - <o-button @click="currentPage = 2" :disabled="!isPaginated" - >Set page to 2</o-button - > - <o-switch v-model="isPaginated">Paginated</o-switch> - <o-switch v-model="isPaginationSimple" :disabled="!isPaginated" - >Simple pagination</o-switch - > - <o-select v-model="paginationPosition" :disabled="!isPaginated"> - <option value="bottom">bottom pagination</option> - <option value="top">top pagination</option> - <option value="both">both</option> - </o-select> - <o-select v-model="sortIcon"> - <option value="arrow-up">Arrow sort icon</option> - <option value="caret-up">Caret sort icon</option> - <option value="chevron-up">Chevron sort icon </option> - </o-select> - <o-select v-model="sortIconSize"> - <option value="small">Small sort icon</option> - <option value="">Regular sort icon</option> - <option value="medium">Medium sort icon</option> - <option value="large">Large sort icon</option> - </o-select> - </o-field> - - <o-table - :data="data" - :paginated="isPaginated" - :per-page="perPage" - :current-page.sync="currentPage" - :pagination-simple="isPaginationSimple" - :pagination-position="paginationPosition" - :default-sort-direction="defaultSortDirection" - :sort-icon="sortIcon" - :sort-icon-size="sortIconSize" - default-sort="user.first_name" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - > - <o-table-column - field="id" - label="ID" - width="40" - sortable - numeric - v-slot="props" - > - {{ props.row.id }} - </o-table-column> - - <o-table-column - field="user.first_name" - label="First Name" - sortable - v-slot="props" - > - {{ props.row.user.first_name }} - </o-table-column> - - <o-table-column - field="user.last_name" - label="Last Name" - sortable - v-slot="props" - > - {{ props.row.user.last_name }} - </o-table-column> - - <o-table-column - field="date" - label="Date" - sortable - position="centered" - v-slot="props" - > - {{ new Date(props.row.date).toLocaleDateString() }} - </o-table-column> - - <o-table-column label="Gender" v-slot="props"> - <span> - <o-icon - pack="fas" - :icon="props.row.gender === 'Male' ? 'mars' : 'venus'" - > - </o-icon> - {{ props.row.gender }} - </span> - </o-table-column> - </o-table> - </section> -</template> - -<script> - const data = [ - { - id: 1, - user: { first_name: "Jesse", last_name: "Simmons" }, - date: "2016/10/15 13:43:27", - gender: "Male", - }, - { - id: 2, - user: { first_name: "John", last_name: "Jacobs" }, - date: "2016/12/15 06:00:53", - gender: "Male", - }, - { - id: 3, - user: { first_name: "Tina", last_name: "Gilbert" }, - date: "2016/04/26 06:26:28", - gender: "Female", - }, - { - id: 4, - user: { first_name: "Clarence", last_name: "Flores" }, - date: "2016/04/10 10:28:46", - gender: "Male", - }, - { - id: 5, - user: { first_name: "Anne", last_name: "Lee" }, - date: "2016/12/06 14:38:38", - gender: "Female", - }, - { - id: 6, - user: { first_name: "Sara", last_name: "Armstrong" }, - date: "2016/09/23 18:50:04", - gender: "Female", - }, - { - id: 7, - user: { first_name: "Anthony", last_name: "Webb" }, - date: "2016/08/30 23:49:38", - gender: "Male", - }, - { - id: 8, - user: { first_name: "Andrew", last_name: "Greene" }, - date: "2016/11/20 14:57:47", - gender: "Male", - }, - { - id: 9, - user: { first_name: "Russell", last_name: "White" }, - date: "2016/07/13 09:29:49", - gender: "Male", - }, - { - id: 10, - user: { first_name: "Lori", last_name: "Hunter" }, - date: "2016/12/09 01:44:05", - gender: "Female", - }, - { - id: 11, - user: { first_name: "Ronald", last_name: "Wood" }, - date: "2016/12/04 02:23:48", - gender: "Male", - }, - { - id: 12, - user: { first_name: "Michael", last_name: "Harper" }, - date: "2016/07/27 13:28:15", - gender: "Male", - }, - { - id: 13, - user: { first_name: "George", last_name: "Dunn" }, - date: "2017/03/07 12:26:52", - gender: "Male", - }, - { - id: 14, - user: { first_name: "Eric", last_name: "Rogers" }, - date: "2016/06/07 05:41:52", - gender: "Male", - }, - { - id: 15, - user: { first_name: "Juan", last_name: "Meyer" }, - date: "2017/02/01 04:56:34", - gender: "Male", - }, - { - id: 16, - user: { first_name: "Silvia", last_name: "Rosa" }, - date: "2017/01/26 11:50:04", - gender: "Female", - }, - { - id: 17, - user: { first_name: "Lori", last_name: "Cunningham" }, - date: "2016/05/01 10:00:56", - gender: "Female", - }, - { - id: 18, - user: { first_name: "Charles", last_name: "Graham" }, - date: "2016/05/31 06:43:30", - gender: "Male", - }, - { - id: 19, - user: { first_name: "Henry", last_name: "Morrison" }, - date: "2016/09/27 16:15:44", - gender: "Male", - }, - { - id: 20, - user: { first_name: "Albert", last_name: "Mendoza" }, - date: "2016/08/08 05:29:24", - gender: "Male", - }, - { - id: 21, - user: { first_name: "Ruby", last_name: "Snyder" }, - date: "2017/04/01 12:04:39", - gender: "Female", - }, - { - id: 22, - user: { first_name: "Jesse", last_name: "Warren" }, - date: "2016/08/20 01:36:38", - gender: "Male", - }, - { - id: 23, - user: { first_name: "Carlos", last_name: "Ferguson" }, - date: "2016/05/31 10:40:29", - gender: "Male", - }, - { - id: 24, - user: { first_name: "Melissa", last_name: "Peters" }, - date: "2016/07/23 00:41:54", - gender: "Female", - }, - { - id: 25, - user: { first_name: "Arthur", last_name: "Garza" }, - date: "2017/03/11 14:11:37", - gender: "Male", - }, - { - id: 26, - user: { first_name: "Joe", last_name: "Berry" }, - date: "2016/07/09 15:16:56", - gender: "Male", - }, - { - id: 27, - user: { first_name: "Joseph", last_name: "Bishop" }, - date: "2016/10/04 19:44:54", - gender: "Male", - }, - { - id: 28, - user: { first_name: "Sarah", last_name: "Harper" }, - date: "2016/09/23 05:09:11", - gender: "Female", - }, - { - id: 29, - user: { first_name: "Christopher", last_name: "Fuller" }, - date: "2016/04/12 00:05:35", - gender: "Male", - }, - { - id: 30, - user: { first_name: "Alan", last_name: "Mendoza" }, - date: "2016/04/22 10:48:02", - gender: "Male", - }, - { - id: 31, - user: { first_name: "James", last_name: "Davis" }, - date: "2017/01/16 15:17:03", - gender: "Male", - }, - { - id: 32, - user: { first_name: "Scott", last_name: "Welch" }, - date: "2016/10/04 23:31:51", - gender: "Male", - }, - { - id: 33, - user: { first_name: "Mildred", last_name: "Myers" }, - date: "2016/11/23 13:46:18", - gender: "Female", - }, - { - id: 34, - user: { first_name: "Victor", last_name: "Martinez" }, - date: "2016/04/06 17:05:07", - gender: "Male", - }, - { - id: 35, - user: { first_name: "Susan", last_name: "Medina" }, - date: "2016/12/09 10:33:37", - gender: "Female", - }, - { - id: 36, - user: { first_name: "Judy", last_name: "Long" }, - date: "2016/07/26 16:19:04", - gender: "Female", - }, - { - id: 37, - user: { first_name: "Joan", last_name: "Myers" }, - date: "2016/09/22 04:55:54", - gender: "Female", - }, - { - id: 38, - user: { first_name: "Rachel", last_name: "Gonzales" }, - date: "2016/07/15 13:56:38", - gender: "Female", - }, - { - id: 39, - user: { first_name: "Roger", last_name: "Hunt" }, - date: "2016/08/14 10:43:11", - gender: "Male", - }, - { - id: 40, - user: { first_name: "Dorothy", last_name: "Howard" }, - date: "2016/06/19 05:34:49", - gender: "Female", - }, - { - id: 41, - user: { first_name: "Eugene", last_name: "Lynch" }, - date: "2016/12/24 08:19:24", - gender: "Male", - }, - { - id: 42, - user: { first_name: "Kathy", last_name: "Webb" }, - date: "2017/04/01 21:09:05", - gender: "Female", - }, - { - id: 43, - user: { first_name: "Antonio", last_name: "White" }, - date: "2017/02/10 06:51:20", - gender: "Male", - }, - { - id: 44, - user: { first_name: "Louis", last_name: "Spencer" }, - date: "2016/10/08 02:20:22", - gender: "Male", - }, - { - id: 45, - user: { first_name: "Andrea", last_name: "Marshall" }, - date: "2016/09/04 10:59:57", - gender: "Female", - }, - { - id: 46, - user: { first_name: "Eugene", last_name: "Sims" }, - date: "2017/03/15 06:39:48", - gender: "Male", - }, - { - id: 47, - user: { first_name: "Mildred", last_name: "Gibson" }, - date: "2016/04/18 06:43:54", - gender: "Female", - }, - { - id: 48, - user: { first_name: "Joan", last_name: "Arnold" }, - date: "2016/12/16 04:52:23", - gender: "Female", - }, - { - id: 49, - user: { first_name: "Jesse", last_name: "Schmidt" }, - date: "2016/06/11 02:44:33", - gender: "Male", - }, - { - id: 50, - user: { first_name: "David", last_name: "Frazier" }, - date: "2017/02/15 21:46:30", - gender: "Male", - }, - { - id: 51, - user: { first_name: "Nicholas", last_name: "Howell" }, - date: "2016/11/01 15:08:31", - gender: "Male", - }, - { - id: 52, - user: { first_name: "Douglas", last_name: "Chapman" }, - date: "2017/02/08 03:33:24", - gender: "Male", - }, - { - id: 53, - user: { first_name: "Bruce", last_name: "Simmons" }, - date: "2016/07/14 12:11:17", - gender: "Male", - }, - { - id: 54, - user: { first_name: "Antonio", last_name: "George" }, - date: "2016/11/07 19:12:55", - gender: "Male", - }, - { - id: 55, - user: { first_name: "Chris", last_name: "Marshall" }, - date: "2016/07/03 12:11:45", - gender: "Male", - }, - { - id: 56, - user: { first_name: "Ashley", last_name: "Hudson" }, - date: "2016/10/14 21:08:05", - gender: "Female", - }, - { - id: 57, - user: { first_name: "Alan", last_name: "Edwards" }, - date: "2017/03/22 21:10:25", - gender: "Male", - }, - { - id: 58, - user: { first_name: "George", last_name: "Clark" }, - date: "2016/04/28 03:15:05", - gender: "Male", - }, - { - id: 59, - user: { first_name: "Frank", last_name: "Porter" }, - date: "2016/09/08 00:48:14", - gender: "Male", - }, - { - id: 60, - user: { first_name: "Christopher", last_name: "Palmer" }, - date: "2016/05/24 08:58:12", - gender: "Male", - }, - ]; - - export default { - data() { - return { - data, - isPaginated: true, - isPaginationSimple: false, - paginationPosition: "bottom", - defaultSortDirection: "asc", - sortIcon: "arrow-up", - sortIconSize: "small", - currentPage: 1, - perPage: 5, - }; - }, - }; -</script> -``` - -::: - -### Async Data - -::: demo - -```html -<template> - <section> - <o-table - :data="data" - :loading="loading" - paginated - backend-pagination - :total="total" - :per-page="perPage" - @page-change="onPageChange" - aria-next-label="Next page" - aria-previous-label="Previous page" - aria-page-label="Page" - aria-current-label="Current page" - backend-sorting - :default-sort-direction="defaultSortOrder" - :default-sort="[sortField, sortOrder]" - @sort="onSort"> - <o-table-column field="original_title" label="Title" sortable v-slot="props"> - {{ props.row.original_title }} - </o-table-column> - <o-table-column field="vote_average" label="Vote Average" numeric sortable v-slot="props"> - <span class="tag" :class="type(props.row.vote_average)"> - {{ props.row.vote_average }} - </span> - </o-table-column> - <o-table-column field="vote_count" label="Vote Count" numeric sortable v-slot="props"> - {{ props.row.vote_count }} - </o-table-column> - <o-table-column field="release_date" label="Release Date" sortable centered v-slot="props"> - {{ props.row.release_date ? new Date(props.row.release_date).toLocaleDateString() : 'unknown' }} - </o-table-column> - <o-table-column label="Overview" width="500" v-slot="props"> - {{ props.row.overview }} - </o-table-column> - </o-table> - </section> -</template> -<script> - export default { - data() { - return { - data: [], - total: 0, - loading: false, - sortField: 'vote_count', - sortOrder: 'desc', - defaultSortOrder: 'desc', - page: 1, - perPage: 20 - } - }, - methods: { - /* - * Load async data - */ - loadAsyncData() { - const params = [ - 'api_key=bb6f51bef07465653c3e553d6ab161a8', - 'language=en-US', - 'include_adult=false', - 'include_video=false', - `sort_by=${this.sortField}.${this.sortOrder}`, - `page=${this.page}` - ].join('&') - this.loading = true - fetch(`https://api.themoviedb.org/3/discover/movie?${params}`) - .then(response => response.json()) - .then(( data ) => { - // api.themoviedb.org manage max 1000 pages - this.data = [] - let currentTotal = data.total_results - if (data.total_results / this.perPage > 1000) { - currentTotal = this.perPage * 1000 - } - this.total = currentTotal - data.results.forEach((item) => { - item.release_date = item.release_date ? item.release_date.replace(/-/g, '/') : null - this.data.push(item) - }) - this.loading = false - }) - .catch((error) => { - this.data = [] - this.total = 0 - this.loading = false - throw error - }) - }, - /* - * Handle page-change event - */ - onPageChange(page) { - this.page = page - this.loadAsyncData() - }, - /* - * Handle sort event - */ - onSort(field, order) { - this.sortField = field - this.sortOrder = order - this.loadAsyncData() - }, - /* - * Type style in relation to the value - */ - type(value) { - const number = parseFloat(value) - if (number < 6) { - return 'is-danger' - } else if (number >= 6 && number < 8) { - return 'is-warning' - } else if (number >= 8) { - return 'is-success' - } - } - }, - mounted() { - this.loadAsyncData() - } - } -</script> -``` - -::: - -### Checkable - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-button - variant="danger" - @click="checkedRows = []" - :disabled="!checkedRows.length" - icon-left="times" - > - <span>Clear checked</span> - </o-button> - <o-select v-model="checkboxPosition"> - <option value="left">Checkbox at left</option> - <option value="right">Checkbox at right</option> - </o-select> - </o-field> - - <o-table - :data="data" - :columns="columns" - :checked-rows.sync="checkedRows" - :is-row-checkable="(row) => row.id !== 3 && row.id !== 4" - checkable - :checkbox-position="checkboxPosition" - > - <template slot="bottom-left"> - <b>Total checked</b>: {{ checkedRows.length }} - </template> - </o-table> - </section> -</template> - -<script> - export default { - data() { - const data = [ - { - id: 1, - first_name: "Jesse", - last_name: "Simmons", - date: "2016-10-15 13:43:27", - gender: "Male", - }, - { - id: 2, - first_name: "John", - last_name: "Jacobs", - date: "2016-12-15 06:00:53", - gender: "Male", - }, - { - id: 3, - first_name: "Tina", - last_name: "Gilbert", - date: "2016-04-26 06:26:28", - gender: "Female", - }, - { - id: 4, - first_name: "Clarence", - last_name: "Flores", - date: "2016-04-10 10:28:46", - gender: "Male", - }, - { - id: 5, - first_name: "Anne", - last_name: "Lee", - date: "2016-12-06 14:38:38", - gender: "Female", - }, - ]; - - return { - data, - checkboxPosition: "left", - checkedRows: [data[1], data[3]], - columns: [ - { - field: "id", - label: "ID", - width: "40", - numeric: true, - }, - { - field: "first_name", - label: "First Name", - }, - { - field: "last_name", - label: "Last Name", - }, - { - field: "date", - label: "Date", - position: "centered", - }, - { - field: "gender", - label: "Gender", - }, - ], - }; - }, - }; -</script> -``` - -::: - -### Sticky - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="stickyHeaders">Sticky Headers</o-switch> - </div> - </o-field> - <o-table - :data="data" - :columns="columns" - :sticky-header="stickyHeaders" - ></o-table> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - id: 1, - user: { first_name: "Jesse", last_name: "Simmons" }, - date: "2016/10/15 13:43:27", - gender: "Male", - }, - { - id: 2, - user: { first_name: "John", last_name: "Jacobs" }, - date: "2016/12/15 06:00:53", - gender: "Male", - }, - { - id: 3, - user: { first_name: "Tina", last_name: "Gilbert" }, - date: "2016/04/26 06:26:28", - gender: "Female", - }, - { - id: 4, - user: { first_name: "Clarence", last_name: "Flores" }, - date: "2016/04/10 10:28:46", - gender: "Male", - }, - { - id: 5, - user: { first_name: "Anne", last_name: "Lee" }, - date: "2016/12/06 14:38:38", - gender: "Female", - }, - { - id: 6, - user: { first_name: "Sara", last_name: "Armstrong" }, - date: "2016/09/23 18:50:04", - gender: "Female", - }, - { - id: 7, - user: { first_name: "Anthony", last_name: "Webb" }, - date: "2016/08/30 23:49:38", - gender: "Male", - }, - { - id: 8, - user: { first_name: "Andrew", last_name: "Greene" }, - date: "2016/11/20 14:57:47", - gender: "Male", - }, - { - id: 9, - user: { first_name: "Russell", last_name: "White" }, - date: "2016/07/13 09:29:49", - gender: "Male", - }, - { - id: 10, - user: { first_name: "Lori", last_name: "Hunter" }, - date: "2016/12/09 01:44:05", - gender: "Female", - }, - ], - columns: [ - { - field: "id", - label: "ID", - width: "40", - numeric: true, - sticky: true, - thAttrs: () => ({ 'class': "is-sticky-column-one" }), - tdAttrs: () => ({ 'class': "is-sticky-column-one" }), - }, - { - field: "user.first_name", - label: "First Name", - }, - { - field: "user.last_name", - label: "Last Name", - }, - { - field: "date", - label: "Date", - position: "centered", - sticky: true, - thAttrs: () => ({ 'class': "is-sticky-column-two" }), - tdAttrs: () => ({ 'class': "is-sticky-column-two" }), - }, - { - field: "gender", - label: "Gender", - }, - { - field: "id", - label: "Column A", - }, - { - field: "id", - label: "Column B", - }, - { - field: "id", - label: "Column C", - }, - { - field: "id", - label: "Column D", - }, - { - field: "id", - label: "Column E", - }, - { - field: "id", - label: "Column F", - }, - { - field: "id", - label: "Column G", - }, - { - field: "id", - label: "Column H", - }, - { - field: "id", - label: "Column I", - }, - { - field: "id", - label: "Column L", - }, - { - field: "id", - label: "Column M", - }, - { - field: "id", - label: "Column N", - }, - { - field: "id", - label: "Column O", - }, - ], - stickyHeaders: true, - }; - }, - }; -</script> - -<style> - .is-sticky-column-one { - background: #006724 !important; - color: white !important; - } - .is-sticky-column-two { - background: #167df0 !important; - color: white !important; - } -</style> -``` - -::: - -### Detailed - -::: demo - -```html -<template> - <section> - <o-field grouped group-multiline> - <o-checkbox v-model="showDetailIcon">Show detail chevron</o-checkbox> - <o-checkbox v-model="showDefaultDetail">Custom detail column</o-checkbox> - <div v-for="(column, index) in columnsVisible" :key="index"> - <o-checkbox v-model="column.display"> - {{ column.title }} - </o-checkbox> - </div> - </o-field> - - <o-table - :data="data" - ref="table" - detailed - hoverable - :custom-detail-row="!showDefaultDetail" - :opened-detailed="['Board Games']" - :default-sort="['name', 'asc']" - detail-key="name" - :show-detail-icon="showDetailIcon" - > - <o-table-column - field="name" - :visible="columnsVisible['name'].display" - :label="columnsVisible['name'].title" - width="300" - sortable - v-slot="props" - > - <template v-if="showDetailIcon"> - {{ props.row.name }} - </template> - <template v-else> - <a @click="toggle(props.row)"> - {{ props.row.name }} - </a> - </template> - </o-table-column> - - <o-table-column - field="sold" - :visible="columnsVisible['sold'].display" - :label="columnsVisible['sold'].title" - sortable - position="centered" - v-slot="props" - > - {{ props.row.sold }} - </o-table-column> - - <o-table-column - field="available" - :visible="columnsVisible['available'].display" - :label="columnsVisible['available'].title" - sortable - position="centered" - v-slot="props" - > - {{ props.row.available }} - </o-table-column> - - <o-table-column - :visible="columnsVisible['cleared'].display" - :label="columnsVisible['cleared'].title" - position="centered" - v-slot="props" - > - <span> - {{ Math.round((props.row.sold / props.row.available) * 100) }}% - </span> - </o-table-column> - - <template slot="detail" slot-scope="props"> - <tr v-for="item in props.row.items" :key="item.name"> - <td v-if="showDetailIcon"></td> - <td v-show="columnsVisible['name'].display"> - {{ item.name }} - </td> - <td v-show="columnsVisible['sold'].display">{{ item.sold }}</td> - <td v-show="columnsVisible['available'].display"> - {{ item.available }} - </td> - <td v-show="columnsVisible['cleared'].display"> - <span> - {{ Math.round((item.sold / item.available) * 100) }}% - </span> - </td> - </tr> - </template> - </o-table> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - name: "Board Games", - sold: 131, - available: 301, - items: [ - { - name: "Monopoly", - sold: 57, - available: 100, - }, - { - name: "Scrabble", - sold: 23, - available: 84, - }, - { - name: "Chess", - sold: 37, - available: 61, - }, - { - name: "Battleships", - sold: 14, - available: 56, - }, - ], - }, - { - name: "Jigsaws & Puzzles", - sold: 88, - available: 167, - items: [ - { - name: "World Map", - sold: 31, - available: 38, - }, - { - name: "London", - sold: 23, - available: 29, - }, - { - name: "Sharks", - sold: 20, - available: 44, - }, - { - name: "Disney", - sold: 14, - available: 56, - }, - ], - }, - { - name: "Books", - sold: 434, - available: 721, - items: [ - { - name: "Hamlet", - sold: 101, - available: 187, - }, - { - name: "The Lord Of The Rings", - sold: 85, - available: 156, - }, - { - name: "To Kill a Mockingbird", - sold: 78, - available: 131, - }, - { - name: "Catch-22", - sold: 73, - available: 98, - }, - { - name: "Frankenstein", - sold: 51, - available: 81, - }, - { - name: "Alice's Adventures In Wonderland", - sold: 46, - available: 68, - }, - ], - }, - ], - columnsVisible: { - name: { title: "Name", display: true }, - sold: { title: "Stock Sold", display: true }, - available: { title: "Stock Available", display: true }, - cleared: { title: "Stock Cleared", display: true }, - }, - showDetailIcon: true, - showDefaultDetail: true, - }; - }, - methods: { - toggle(row) { - this.$refs.table.toggleDetails(row); - }, - }, - }; -</script> -``` - -::: - -### Searchable - -::: demo - -```html -<template> - <section> - <o-table :data="data" :columns="columns"> </o-table> - <hr /> - <p> - You can debounce search filter to avoid multiple filtering when typing. - </p> - <o-table :data="data" :columns="columns" :debounce-search="1000"> </o-table> - <p>You can also customize the search input using a scoped slot.</p> - <o-table :data="data"> - <template v-for="column in columns"> - <o-table-column :key="column.id" v-bind="column"> - <template - v-if="column.searchable && !column.numeric" - slot="searchable" - slot-scope="props" - > - <o-input - v-model="props.filters[props.column.field]" - placeholder="Search..." - icon="search" - size="small" - /> - </template> - <template v-slot="props"> - {{ props.row[column.field] }} - </template> - </o-table-column> - </template> - </o-table> - </section> -</template> - -<script> - export default { - data() { - return { - data: [ - { - id: 1, - first_name: "Jesse", - last_name: "Simmons", - date: "2016-10-15 13:43:27", - gender: "Male", - }, - { - id: 2, - first_name: "John", - last_name: "Jacobs", - date: "2016-12-15 06:00:53", - gender: "Male", - }, - { - id: 3, - first_name: "Tina", - last_name: "Gilbert", - date: "2016-04-26 06:26:28", - gender: "Female", - }, - { - id: 4, - first_name: "Clarence", - last_name: "Flores", - date: "2016-04-10 10:28:46", - gender: "Male", - }, - { - id: 5, - first_name: "Anne", - last_name: "Lee", - date: "2016-12-06 14:38:38", - gender: "Female", - }, - ], - columns: [ - { - field: "id", - label: "ID", - width: "100", - numeric: true, - searchable: true, - }, - { - field: "first_name", - label: "First Name", - searchable: true, - }, - { - field: "last_name", - label: "Last Name", - searchable: true, - }, - { - field: "date", - label: "Date", - position: "centered", - }, - { - field: "gender", - label: "Gender", - }, - ], - }; - }, - }; -</script> -``` - -::: - -### Draggable rows/columns - -::: demo - -```html -<template> - <div> - <p> - Use <code>draggable</code>/<code>draggable-column</code> prop to allow rows and columns to be draggable. Manage dragging using <code>dragstart</code>/<code>columndragstart</code>,<code>dragover</code>/<code>columndragover</code> and <code>drop</code>/<code>columndrop</code> events - </p> - <o-table - :data="data" - :columns="columns" - draggable - draggable-column - @dragstart="dragstart" - @drop="drop" - @dragover="dragover" - @dragleave="dragleave" - @columndragstart="columndragstart" - @columndrop="columndrop" - @columndragover="columndragover" - @columndragleave="columndragleave"> - </o-table> - </div> -</template> -<script> - export default { - data() { - return { - data: [ - { 'id': 1, 'first_name': 'Jesse', 'last_name': 'Simmons', 'date': '2016-10-15 13:43:27', 'gender': 'Male' }, - { 'id': 2, 'first_name': 'John', 'last_name': 'Jacobs', 'date': '2016-12-15 06:00:53', 'gender': 'Male' }, - { 'id': 3, 'first_name': 'Tina', 'last_name': 'Gilbert', 'date': '2016-04-26 06:26:28', 'gender': 'Female' }, - { 'id': 4, 'first_name': 'Clarence', 'last_name': 'Flores', 'date': '2016-04-10 10:28:46', 'gender': 'Male' }, - { 'id': 5, 'first_name': 'Anne', 'last_name': 'Lee', 'date': '2016-12-06 14:38:38', 'gender': 'Female' } - ], - columns: [ - { - field: 'id', - label: 'ID', - width: '40', - numeric: true - }, - { - field: 'first_name', - label: 'First Name', - }, - { - field: 'last_name', - label: 'Last Name', - }, - { - field: 'date', - label: 'Date', - centered: true - }, - { - field: 'gender', - label: 'Gender', - } - ], - draggingRow: null, - draggingRowIndex: null, - draggingColumn: null, - draggingColumnIndex: null - } - }, - methods: { - dragstart(payload) { - this.draggingRow = payload.row - this.draggingRowIndex = payload.index - payload.event.dataTransfer.effectAllowed = 'copy' - }, - dragover(payload) { - payload.event.dataTransfer.dropEffect = 'copy' - payload.event.target.closest('tr').classList.add('is-selected') - payload.event.preventDefault() - }, - dragleave(payload) { - payload.event.target.closest('tr').classList.remove('is-selected') - payload.event.preventDefault() - }, - drop(payload) { - payload.event.target.closest('tr').classList.remove('is-selected') - const droppedOnRowIndex = payload.index - this.$oruga.notification.open(`Moved ${this.draggingRow.first_name} from row ${this.draggingRowIndex + 1} to ${droppedOnRowIndex + 1}`) - }, - - columndragstart(payload) { - this.draggingColumn = payload.column - this.draggingColumnIndex = payload.index - payload.event.dataTransfer.effectAllowed = 'copy' - }, - columndragover(payload) { - payload.event.dataTransfer.dropEffect = 'copy' - payload.event.target.closest('th').classList.add('is-selected') - payload.event.preventDefault() - }, - columndragleave(payload) { - payload.event.target.closest('th').classList.remove('is-selected') - payload.event.preventDefault() - }, - columndrop(payload) { - payload.event.target.closest('th').classList.remove('is-selected') - const droppedOnColumnIndex = payload.index - this.$oruga.notification.open(`Moved ${this.draggingColumn.field} from column ${this.draggingColumnIndex + 1} to ${droppedOnColumnIndex + 1}`) - } - } - } -</script> -``` - -::: diff --git a/packages/oruga/src/components/table/index.js b/packages/oruga/src/components/table/index.js deleted file mode 100644 index a8d9963e1..000000000 --- a/packages/oruga/src/components/table/index.js +++ /dev/null @@ -1,25 +0,0 @@ -import Table from './Table' -import TableColumn from './TableColumn' - -import { use, registerComponent } from '../../utils/plugins' -import { setVueInstance, VueInstance } from '../../utils/config' - -const Plugin = { - install(Vue) { - // individual import + extend method into Table.vue - if (typeof VueInstance === 'undefined') { - setVueInstance(Vue) - } - registerComponent(Vue, Table) - registerComponent(Vue, TableColumn) - } -} - -use(Plugin) - -export default Plugin - -export { - Table as OTable, - TableColumn as OTableColumn -} diff --git a/packages/oruga/src/components/tabs/Inspector.vue b/packages/oruga/src/components/tabs/Inspector.vue deleted file mode 100644 index 8bf2730d3..000000000 --- a/packages/oruga/src/components/tabs/Inspector.vue +++ /dev/null @@ -1,163 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-tabs v-model="activeTab" v-bind="s"> - <o-tab-item v-bind="s" :value="1" label="Pictures" icon="images"> - Lorem ipsum dolor sit amet. - </o-tab-item> - <o-tab-item v-bind="s" :value="2" label="Music" icon="music"> - Lorem <br /> - ipsum <br /> - dolor <br /> - sit <br /> - amet. - </o-tab-item> - <o-tab-item v-bind="s" :value="3" label="Videos" icon="video"> - Nunc nec velit nec libero vestibulum eleifend. Curabitur pulvinar congue luctus. Nullam hendrerit iaculis augue vitae ornare. Maecenas vehicula pulvinar tellus, id sodales - felis lobortis eget. - </o-tab-item> - </o-tabs> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData" :subitem="subitem"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - activeTab: 1, - subitem: "tab-item", - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "navSizeClass", - description: "Size of the navigation", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - } - }, - { - class: "navTypeClass", - description: "Type of the navigation", - properties: ["type"], - suffixes: ['default', 'boxed', 'toggle'], - action: () => {} - }, - { - class: "verticalClass", - description: "Class of Tabs component when vertical", - properties: ['vertical'], - action: (cmp) => { - cmp.data.vertical = true - } - }, - { - class: "expandedClass", - description: "Class of Tabs component when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true - } - }, - { - class: "multilineClass", - description: "Class of Tabs component when multiline", - properties: ['multiline'], - action: (cmp) => { - cmp.data.multiline = true - } - }, - { - class: "positionClass", - description: "Class of Tabs component when when is vertical and its position changes", - properties: ['position', 'vertical'], - suffixes: ['bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.vertical = true - cmp.data.position = 'right' - } - }, - { - class: "tabItemWrapperClass", - description: "Class of the tab item wrapper", - specificity: "when <b>expandedClass</b> is applied", - }, - { - class: "contentClass", - description: "Class of the tab content", - }, - { - class: "itemClass", - description: "Class of the tab item", - subitem: true - }, - { - class: "itemHeaderClass", - description: "Class of the tab item header", - specificity: "when <b>verticalClass</b> or <b>expandedClass</b> or <b>positionClass</b> is applied", - subitem: true, - }, - { - class: "itemHeaderActiveClass", - description: "Class of the tab item header when active", - subitem: true, - suffixes: ['default', 'boxed', 'toggle'], - }, - { - class: "itemHeaderDisabledClass", - description: "Class of the tab item header when disabled", - subitem: true, - suffixes: ['default', 'boxed', 'toggle'], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "itemHeaderTypeClass", - description: "Class of the tab item header type", - subitem: true, - suffixes: ['default', 'boxed', 'toggle'], - action: () => {} - }, - { - class: "itemHeaderIconClass", - description: "Class of the tab item header icon", - subitem: true, - action: () => { - } - }, - { - class: "itemHeaderTextClass", - description: "Class of the tab item header text", - subitem: true, - action: () => { - } - }, - { - class: "navTabsClass", - description: "Class of the Tabs component nav tabs", - specificity: "when <b>positionClass</b> is applied", - }, - { - class: "navPositionClass", - description: "Class of the Tabs component nav position", - properties: ['position'], - suffixes: ['bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.vertical = false - cmp.data.position = 'right' - } - }, - ] - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/tabs/TabItem.spec.js b/packages/oruga/src/components/tabs/TabItem.spec.js deleted file mode 100644 index 7a5dcfbae..000000000 --- a/packages/oruga/src/components/tabs/TabItem.spec.js +++ /dev/null @@ -1,126 +0,0 @@ -import {mount} from '@vue/test-utils' -import OTabs from '@components/tabs/Tabs' -import OTabItem from '@components/tabs/TabItem' - -import {setOptions} from '@utils/config' -import { getOptions } from '../../utils/config' - -let wrapper -let wrapperParent - -const WrapperComp = { - data() { - return { - show1: true - } - }, - template: ` - <OTabs> - <OTabItem v-if="show1" value="tab1"/> - <OTabItem ref="testItem" value="tab2"/> - <OTabItem value="tab3" :visible="false"/> - </OTabs>`, - components: { - OTabs, OTabItem - } -} - -describe('OTabItem', () => { - beforeEach(() => { - wrapperParent = mount(WrapperComp) - wrapper = wrapperParent.find({ ref: 'testItem' }) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - expect(wrapper.vm.value).toBe('tab2') - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('computes its position correctly', () => { - expect(wrapper.vm.index).toBe(1) - }) - - it('transition correctly when activate is called', () => { - wrapper.vm.activate(0) - expect(wrapper.vm.transitionName).toBe('slide-prev') - - wrapper.vm.activate(2) - expect(wrapper.vm.transitionName).toBe('slide-next') - }) - - it('transition correctly when deactivate is called', () => { - wrapper.vm.deactivate(2) - expect(wrapper.vm.transitionName).toBe('slide-prev') - - wrapper.vm.deactivate(0) - expect(wrapper.vm.transitionName).toBe('slide-next') - }) - - /* - it('doesn\'t mount when it has no parent', () => { - const spy = jest.spyOn(global.console, 'error').mockImplementation(() => {}) - - try { - wrapper = mount({ - template: `<OTabItem/>`, - components: { - OTabItem - }, - destroyed() { - spy() - } - }) - } catch (error) { - expect(error.message).stringMatching(/You should wrap/) - } finally { - spy.mockRestore() - } - }) - */ - - it('transforms default item tag accordingly to props', async () => { - expect(wrapperParent.find('.o-tabs__nav-item').is('button')).toBe(true) - setOptions(Object.assign(getOptions(), { - tabs: { - itemTag: 'a', - }, - })) - wrapperParent = mount(WrapperComp) - await wrapperParent.vm.$nextTick() - expect(wrapperParent.find('.o-tabs__nav-item').is('a')).toBe(true) - }) - - it('unregisters when destroyed', async () => { - const wrapper = mount({ - template: ` - <OTabs> - <OTabItem ref="item1"/> - <OTabItem v-if="item2" ref="item2"/> - </OTabs>`, - props: { - item2: { - type: Boolean, - default: true - } - }, - components: { - OTabs, OTabItem - } - }) - - expect(wrapper.find({ref: 'item2'})).toBeTruthy() - await wrapper.vm.$nextTick() - expect(wrapper.find(OTabs).vm.items.length).toBe(2) - - wrapper.setProps({item2: false}) - await wrapper.vm.$nextTick() - expect(wrapper.find(OTabs).vm.items.length).toBe(1) - - wrapper.setProps({item2: true}) - wrapper.find(OTabs).setProps({value: 1}) - }) -}) diff --git a/packages/oruga/src/components/tabs/TabItem.vue b/packages/oruga/src/components/tabs/TabItem.vue deleted file mode 100644 index 2439e2a3f..000000000 --- a/packages/oruga/src/components/tabs/TabItem.vue +++ /dev/null @@ -1,60 +0,0 @@ -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import TabbedChildMixin from '../../utils/TabbedChildMixin' -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -/** - * @displayName Tab Item - */ -export default { - name: 'OTabItem', - mixins: [BaseComponentMixin, TabbedChildMixin('tab')], - configField: 'tabs', - props: { - /** Item will be disabled */ - disabled: Boolean, - /** - * Tabs item tag name - */ - tag: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'tabs.itemTag', 'button') - } - }, - itemClass: [String, Function, Array], - itemHeaderClass: [String, Function, Array], - itemHeaderActiveClass: [String, Function, Array], - itemHeaderDisabledClass: [String, Function, Array], - itemHeaderTypeClass: [String, Function, Array], - itemHeaderIconClass: [String, Function, Array], - itemHeaderTextClass: [String, Function, Array] - }, - computed: { - elementClasses() { - return [ - this.computedClass('itemClass', 'o-tab-item__content') - ] - }, - headerClasses() { - return [ - this.computedClass('itemHeaderClass', 'o-tabs__nav-item'), - { [this.computedClass('itemHeaderActiveClass', 'o-tabs__nav-item-{*}--active', this.parent.type)]: this.isActive }, - { [this.computedClass('itemHeaderDisabledClass', 'o-tabs__nav-item-{*}--disabled', this.parent.type)]: this.disabled }, - { [this.computedClass('itemHeaderTypeClass', 'o-tabs__nav-item-', this.parent.type)]: this.parent.type }, - ] - }, - headerIconClasses() { - return [ - this.computedClass('itemHeaderIconClass', 'o-tabs__nav-item-icon') - ] - }, - headerTextClasses() { - return [ - this.computedClass('itemHeaderTextClass', 'o-tabs__nav-item-text') - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/tabs/Tabs.spec.js b/packages/oruga/src/components/tabs/Tabs.spec.js deleted file mode 100644 index 9b0956c04..000000000 --- a/packages/oruga/src/components/tabs/Tabs.spec.js +++ /dev/null @@ -1,101 +0,0 @@ -import { mount } from '@vue/test-utils' -import OTabs from '@components/tabs/Tabs' -import OTabItem from '@components/tabs/TabItem' - -let wrapper - -const WrapperComp = { - template: ` - <OTabs value="tab1"> - <OTabItem value="tab1"></OTabItem> - <OTabItem value="tab2" :visible="false"></OTabItem> - </OTabs>`, - components: { - OTabs, OTabItem - } -} - -describe('OTabs', () => { - beforeEach(() => { - wrapper = mount(WrapperComp).find(OTabs) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - it('manage main classes accordingly', async () => { - wrapper.setProps({ - expanded: false, - vertical: false, - position: 'centered' - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.rootClasses[2]['o-tabs--fullwidth']).toBeFalsy() - expect(wrapper.vm.rootClasses[3]['o-tabs--vertical']).toBeFalsy() - - wrapper.setProps({expanded: true}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.rootClasses[2]['o-tabs--fullwidth']).toBeTruthy() - - wrapper.setProps({vertical: true}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.rootClasses[3]['o-tabs--vertical']).toBeTruthy() - - wrapper.setProps({position: 'right'}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.rootClasses[1]['o-tabs--centered']).toBeFalsy() - }) - - /* - it('emit input event with value when active tab is modified', async () => { - const idx = 'tab2' - wrapper.vm.activeId = idx - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - const valueEmitted = wrapper.emitted().input - - expect(valueEmitted).toBeTruthy() - expect(valueEmitted[0][0]).toBe(idx) - }) - */ - - it('emit input event with value when childClick is called', async () => { - const val = 'tab2' - - wrapper.vm.childClick(wrapper.vm.items[1]) - wrapper.vm.childClick(wrapper.vm.items[1]) - - await wrapper.vm.$nextTick() // Wait until $emits have been handled - - const valueEmitted = wrapper.emitted().input - expect(valueEmitted[0][0]).toBe(val) - // Will be called only once even if we clicked multiple times - expect(valueEmitted.length).toBe(1) - }) - - it('updates the tab when the value is changed', async () => { - wrapper.setProps({value: 'tab2'}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeId).toBe('tab2') - - wrapper.setProps({value: 0}) - await wrapper.vm.$nextTick() - expect(wrapper.vm.activeId).toBe(0) - }) - - it('still renders if there is no item', () => { - wrapper = mount({ - template: `<OTabs value="tab1"></OTabs>`, - components: { - OTabs - } - }).find(OTabs) - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/tabs/Tabs.vue b/packages/oruga/src/components/tabs/Tabs.vue deleted file mode 100644 index 77ba0ebc4..000000000 --- a/packages/oruga/src/components/tabs/Tabs.vue +++ /dev/null @@ -1,142 +0,0 @@ -<template> - <div :class="rootClasses"> - <nav - :class="navClasses" - role="tablist" - :aria-orientation="vertical ? 'vertical' : 'horizontal'" - > - <slot name="start" /> - <div - v-for="childItem in items" - :key="childItem.newValue" - v-show="childItem.visible" - :class="itemWrapperClasses" - role="tab" - :aria-controls="`${childItem.value}-content`" - :aria-selected="`${childItem.isActive}`"> - <o-slot-component - v-if="childItem.$scopedSlots.header" - :component="childItem" - :tag="childItem.tag" - name="header" - @click.native="childClick(childItem)" - @keydown.native.left.prevent="prev" - @keydown.native.right.prevent="next" - @keydown.native.up.prevent="prev" - @keydown.native.down.prevent="next" - @keydown.native.home.prevent="homePressed" - @keydown.native.end.prevent="endPressed" - :class="childItem.headerClasses" - /> - <component - v-else - :is="childItem.tag" - @click="childClick(childItem)" - @keydown.left.prevent="prev" - @keydown.right.prevent="next" - @keydown.up.prevent="prev" - @keydown.down.prevent="next" - @keydown.home.prevent="homePressed" - @keydown.end.prevent="endPressed" - :class="childItem.headerClasses"> - <o-icon - v-if="childItem.icon" - :rootClass="childItem.headerIconClasses" - :icon="childItem.icon" - :pack="childItem.iconPack" - :size="size"/> - <span :class="childItem.headerTextClasses">{{ childItem.label }}</span> - </component> - </div> - <slot name="end" /> - </nav> - <section :class="contentClasses" role="tabpanel"> - <slot/> - </section> - </div> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import TabbedMixin from '../../utils/TabbedMixin.js' -import { getValueByPath } from '../../utils/helpers' -import { getOptions } from '../../utils/config' - -/** - * Responsive horizontal navigation tabs, switch between contents with ease - * @displayName Tabs - * @requires ./TabItem.vue - * @example ./examples/Tabs.md - * @style _tabs.scss - */ -export default { - name: 'OTabs', - mixins: [BaseComponentMixin, TabbedMixin('tab')], - configField: 'tabs', - props: { - /** - * Tab type - * @values boxed, toggle - */ - type: { - type: String, - default: 'default' - }, - /** - * Tabs will be expanded (full-width) - */ - expanded: Boolean, - /** Tab will have an animation */ - animated: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'tabs.animated', true) - } - }, - /** Show tab items multiline when there is no space */ - multiline: Boolean, - rootClass: [String, Function, Array], - positionClass: [String, Function, Array], - expandedClass: [String, Function, Array], - verticalClass: [String, Function, Array], - multilineClass: [String, Function, Array], - navTabsClass: [String, Function, Array], - navSizeClass: [String, Function, Array], - navPositionClass: [String, Function, Array], - navTypeClass: [String, Function, Array], - contentClass: [String, Function, Array], - transitioningClass: [String, Function, Array], - tabItemWrapperClass: [String, Function, Array], - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-tabs'), - { [this.computedClass('positionClass', 'o-tabs--', this.position)]: this.position && this.vertical }, - { [this.computedClass('expandedClass', 'o-tabs--fullwidth')]: this.expanded }, - { [this.computedClass('verticalClass', 'o-tabs--vertical')]: this.vertical }, - { [this.computedClass('multilineClass', 'o-tabs--multiline')]: this.multiline } - ] - }, - itemWrapperClasses() { - return [ - this.computedClass('tabItemWrapperClass', 'o-tabs__nav-item-wrapper'), - ] - }, - navClasses() { - return [ - this.computedClass('navTabsClass', 'o-tabs__nav'), - { [this.computedClass('navSizeClass', 'o-tabs__nav--', this.size)]: this.size }, - { [this.computedClass('navPositionClass', 'o-tabs__nav--', this.position)]: this.position && !this.vertical }, - { [this.computedClass('navTypeClass', 'o-tabs__nav--', this.type)]: this.type } - ] - }, - contentClasses() { - return [ - this.computedClass('contentClass', 'o-tabs__content'), - { [this.computedClass('transitioningClass', 'o-tabs__content--transitioning')]: this.isTransitioning } - ] - } - } -} -</script> diff --git a/packages/oruga/src/components/tabs/__snapshots__/TabItem.spec.js.snap b/packages/oruga/src/components/tabs/__snapshots__/TabItem.spec.js.snap deleted file mode 100644 index 00394b0f5..000000000 --- a/packages/oruga/src/components/tabs/__snapshots__/TabItem.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OTabItem render correctly 1`] = `<div class="o-tab-item__content" id="tab-tab2" style="display: none;"></div>`; diff --git a/packages/oruga/src/components/tabs/__snapshots__/Tabs.spec.js.snap b/packages/oruga/src/components/tabs/__snapshots__/Tabs.spec.js.snap deleted file mode 100644 index 6d1e9a57f..000000000 --- a/packages/oruga/src/components/tabs/__snapshots__/Tabs.spec.js.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OTabs render correctly 1`] = ` -<div class="o-tabs"> - <nav role="tablist" aria-orientation="horizontal" class="o-tabs__nav o-tabs__nav--default"> - <div role="tab" aria-controls="tab1-content" aria-selected="true" class="o-tabs__nav-item-wrapper"><button class="o-tabs__nav-item o-tabs__nav-item-default--active o-tabs__nav-item-default"> - <!----> <span class="o-tabs__nav-item-text"></span> - </button></div> - <div role="tab" aria-controls="tab2-content" aria-selected="false" class="o-tabs__nav-item-wrapper" style="display: none;"><button class="o-tabs__nav-item o-tabs__nav-item-default"> - <!----> <span class="o-tabs__nav-item-text"></span> - </button></div> - </nav> - <section role="tabpanel" class="o-tabs__content"> - <div class="o-tab-item__content" id="tab-tab1"></div> - <div class="o-tab-item__content" id="tab-tab2" style="display: none;"></div> - </section> -</div> -`; - -exports[`OTabs still renders if there is no item 1`] = ` -<div class="o-tabs"> - <nav role="tablist" aria-orientation="horizontal" class="o-tabs__nav o-tabs__nav--default"> </nav> - <section role="tabpanel" class="o-tabs__content"></section> -</div> -`; diff --git a/packages/oruga/src/components/tabs/examples/Tabs.md b/packages/oruga/src/components/tabs/examples/Tabs.md deleted file mode 100644 index 18e951fe8..000000000 --- a/packages/oruga/src/components/tabs/examples/Tabs.md +++ /dev/null @@ -1,267 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <section> - <p> - <o-button @click="activeTab = 1">Set Music</o-button> - </p> - <p> - <o-switch v-model="showBooks"> Show Books item </o-switch> - <o-switch v-model="multiline"> Multiline </o-switch> - </p> - <o-tabs v-model="activeTab" :multiline="multiline"> - <o-tab-item value="0" label="Pictures"> - Lorem ipsum dolor sit amet. - </o-tab-item> - - <o-tab-item :value="1" label="Music"> - Lorem <br> - ipsum <br> - dolor <br> - sit <br> - amet. - </o-tab-item> - - <o-tab-item value="2" :visible="showBooks" label="Books"> - What light is light, if Silvia be not seen? <br> - What joy is joy, if Silvia be not byโ <br> - Unless it be to think that she is by <br> - And feed upon the shadow of perfection? <br> - Except I be by Silvia in the night, <br> - There is no music in the nightingale. - </o-tab-item> - - <o-tab-item value="3" label="Videos" icon="video" disabled> - Nunc nec velit nec libero vestibulum eleifend. - Curabitur pulvinar congue luctus. - Nullam hendrerit iaculis augue vitae ornare. - Maecenas vehicula pulvinar tellus, id sodales felis lobortis eget. - </o-tab-item> - </o-tabs> - </section> -</template> - -<script> - export default { - data() { - return { - activeTab: "0", - showBooks: false, - multiline: false - } - } - } -</script> -``` -::: - -### Custom header - -::: demo -```html -<template> - <o-tabs type="boxed"> - <o-tab-item> - <template slot="header"> - <o-icon icon="info-circle" rootClass="custom-icon"></o-icon> - <span> Issues 3 </span> - </template> - </o-tab-item> - <o-tab-item> - <template slot="header"> - <o-icon icon="retweet" rootClass="custom-icon"></o-icon> - <span> Pull Requests {{count}} </span> - </template> - </o-tab-item> - </o-tabs> -</template> - -<script> -export default { - data() { - return { - count: 1 - } - }, - mounted() { - setTimeout(() => { - this.count++; - }, 3 * 1000) - } -} -</script> - -<style> -.custom-icon { - margin-right: 5px; -} -</style> -``` -::: - -### Long header - -::: demo -```html -<template> - <o-tabs type="boxed"> - <o-tab-item v-for="(item, index) in new Array(45)" :key="`longitem-${index}`"> - <template slot="header"> - <span>Head {{index}}</span> - </template> - </o-tab-item> - </o-tabs> -</template> -<script> - export default { - data() { - return { - expanded: false, - atRight: false, - size: null, - type: 'default' - } - } - } -</script> -``` -::: - -### Vertical - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="atRight"> Right position </o-switch> - </div> - <div class="control"> - <o-switch v-model="expanded"> Expanded </o-switch> - </div> - <o-field label="Size"> - <o-select v-model="size" placeholder="Size"> - <option :value="null">Default</option> - <option value="small">Small</option> - <option value="medium">Medium</option> - <option value="large">Large</option> - </o-select> - </o-field> - <o-field label="Type"> - <o-select v-model="type" placeholder="Type"> - <option value="default">Default</option> - <option value="boxed">Boxed</option> - <option value="toggle">Toggle</option> - </o-select> - </o-field> - </o-field> - - <o-tabs :position="atRight ? 'right' : ''" - :size="size" - :type="type" - vertical - :expanded="expanded"> - <o-tab-item label="Pictures" icon="images"> - Lorem ipsum dolor sit amet. <br> - Lorem ipsum dolor sit amet. <br> - Lorem ipsum dolor sit amet. <br> - Lorem ipsum dolor sit amet. <br> - Lorem ipsum dolor sit amet. <br> - Lorem ipsum dolor sit amet. - </o-tab-item> - - <o-tab-item label="Music" icon="music"> - What light is light, if Silvia be not seen? <br> - What joy is joy, if Silvia be not byโ <br> - Unless it be to think that she is by <br> - And feed upon the shadow of perfection? <br> - Except I be by Silvia in the night, <br> - There is no music in the nightingale. - </o-tab-item> - - <o-tab-item label="Videos" icon="video" disabled> - Nunc nec velit nec libero vestibulum eleifend. - Curabitur pulvinar congue luctus. - Nullam hendrerit iaculis augue vitae ornare. - Maecenas vehicula pulvinar tellus, id sodales felis lobortis eget. - </o-tab-item> - </o-tabs> - </section> -</template> - -<script> - export default { - data() { - return { - expanded: false, - atRight: false, - size: null, - type: 'default' - } - } - } -</script> -``` -::: - - -### Types - -::: demo -```html -<template> - <section> - <o-tabs type="boxed"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - - <o-tabs type="toggle"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Position - -::: demo -```html -<template> - <section> - <o-tabs type="boxed" position="centered"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - - <o-tabs type="toggle" position="right"> - <o-tab-item label="Pictures" icon="images"></o-tab-item> - <o-tab-item label="Music" icon="music"></o-tab-item> - <o-tab-item label="Videos" icon="video"></o-tab-item> - </o-tabs> - - </section> -</template> - -<script> - export default { - } -</script> -``` -::: diff --git a/packages/oruga/src/components/tabs/index.js b/packages/oruga/src/components/tabs/index.js deleted file mode 100644 index 79d14f51e..000000000 --- a/packages/oruga/src/components/tabs/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import Tabs from './Tabs' -import TabItem from './TabItem' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Tabs) - registerComponent(Vue, TabItem) - } -} - -use(Plugin) - -export default Plugin - -export { - Tabs as OTabs, - TabItem as OTabItem -} diff --git a/packages/oruga/src/components/timepicker/Inspector.vue b/packages/oruga/src/components/timepicker/Inspector.vue deleted file mode 100644 index 377e7a1e7..000000000 --- a/packages/oruga/src/components/timepicker/Inspector.vue +++ /dev/null @@ -1,101 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-field label="Select time"> - <o-timepicker v-bind="s" placeholder="Click to select..." ref="timepicker"> - <div>This is the footer</div> - </o-timepicker> - </o-field> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - methods: { - openTimePicker() { - setTimeout(() => { - this.$refs.timepicker.$el.getElementsByClassName('o-drop__trigger')[0].click() - }, 500) - } - }, - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Class of the root element", - }, - { - class: "sizeClass", - description: "Class of the Timepicker component size", - properties: ["size"], - suffixes: ['small', 'medium', 'large'], - action: (cmp) => { - cmp.data.size = 'large'; - this.openTimePicker(); - }, - }, - { - class: "boxClass", - description: "Class of the Timepicker component box where you choose the date", - action: () => { - this.openTimePicker(); - } - }, - { - class: "separatorClass", - description: "Class of the Timepicker separator", - action: () => { - this.openTimePicker(); - }, - }, - { - class: "footerClass", - description: "Class of the Timepicker footer", - action: () => { - this.openTimePicker(); - } - }, - { - class: "mobileClass", - description: "Class of the Table when on mobile", - warning: "Switch to mobile view to see it in action!" - }, - { - class: "inputClasses", - realClass: "inputClasses.rootClass", - description: "Classes to apply on internal input.", - componentRef: "Input" - }, - { - class: "dropdownClasses", - realClass: "dropdownClasses.rootClass", - description: "Classes to apply on dropdown.", - componentRef: "Dropdown", - action: () => { - this.openTimePicker(); - } - }, - { - class: "selectClasses", - realClass: "selectClasses.selectClass", - description: "Classes to apply on select.", - componentRef: "Select", - action: () => { - this.openTimePicker(); - } - }, - ], - }; - } -} -</script> -<style> -.datepicker__table { - border-collapse: collapse; -} -</style> diff --git a/packages/oruga/src/components/timepicker/Timepicker.spec.js b/packages/oruga/src/components/timepicker/Timepicker.spec.js deleted file mode 100644 index ad023d370..000000000 --- a/packages/oruga/src/components/timepicker/Timepicker.spec.js +++ /dev/null @@ -1,43 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OTimepicker from '@components/timepicker/Timepicker' - -let wrapper - -describe('Timepicker', () => { - beforeEach(() => { - wrapper = shallowMount(OTimepicker) - }) - - it('is called', () => { - expect(wrapper.name()).toBe('OTimepicker') - expect(wrapper.isVueInstance()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) - - // https://github.com/vuejs/vue-test-utils/issues/738#issuecomment-674988368 - it('returns "1" for nativeStep if enableSeconds is true', async () => { - expect(wrapper.vm.nativeStep).toBeNull() - wrapper = shallowMount( - OTimepicker, { - propsData: { enableSeconds: true } - } - ) - await wrapper.vm.$nextTick() - expect(wrapper.vm.nativeStep).toBe('1') - }) - - - // it('disables hour if no selectable minutes available', async () => { - // wrapper.setProps({ - // minTime: new Date(2019, 8, 22, 11, 55), - // incrementMinutes: 10 - // }) - // await wrapper.vm.$nextTick() - // expect(wrapper.find('option[value="11"]').attributes()['disabled']).toBe('disabled') - // expect(wrapper.find('option[value="12"]').attributes()['disabled']).not.toBe('disabled') - // }) - -}) diff --git a/packages/oruga/src/components/timepicker/Timepicker.vue b/packages/oruga/src/components/timepicker/Timepicker.vue deleted file mode 100644 index fc96997d3..000000000 --- a/packages/oruga/src/components/timepicker/Timepicker.vue +++ /dev/null @@ -1,246 +0,0 @@ -<template> - <div :class="rootClasses"> - <o-dropdown - v-if="!isMobile || inline" - ref="dropdown" - v-bind="dropdownBind" - :position="position" - :disabled="disabled" - :inline="inline" - :append-to-body="appendToBody" - append-to-body-copy-parent - @active-change="onActiveChange"> - <template #trigger v-if="!inline"> - <slot name="trigger"> - <o-input - ref="input" - v-bind="inputBind" - autocomplete="off" - :value="formatValue(computedValue)" - :placeholder="placeholder" - :size="size" - :icon="icon" - :icon-pack="iconPack" - :disabled="disabled" - :readonly="!editable" - :rounded="rounded" - :use-html5-validation="useHtml5Validation" - @keyup.native.enter="toggle(true)" - @change.native="onChange($event.target.value)" - @focus="handleOnFocus"/> - </slot> - </template> - - <o-dropdown-item - override - tag="div" - :item-class="boxClasses" - :disabled="disabled" - :clickable="false"> - - <o-select - override - v-bind="selectBind" - v-model="hoursSelected" - @change.native="onHoursChange($event.target.value)" - :disabled="disabled" - placeholder="00"> - <option - v-for="hour in hours" - :value="hour.value" - :key="hour.value" - :disabled="isHourDisabled(hour.value)"> - {{ hour.label }} - </option> - </o-select> - <span :class="separatorClasses">{{ hourLiteral }}</span> - <o-select - override - v-bind="selectBind" - v-model="minutesSelected" - @change.native="onMinutesChange($event.target.value)" - :disabled="disabled" - placeholder="00"> - <option - v-for="minute in minutes" - :value="minute.value" - :key="minute.value" - :disabled="isMinuteDisabled(minute.value)"> - {{ minute.label }} - </option> - </o-select> - <template v-if="enableSeconds"> - <span :class="separatorClasses">{{ minuteLiteral }}</span> - <o-select - override - v-bind="selectBind" - v-model="secondsSelected" - @change.native="onSecondsChange($event.target.value)" - :disabled="disabled" - placeholder="00"> - <option - v-for="second in seconds" - :value="second.value" - :key="second.value" - :disabled="isSecondDisabled(second.value)"> - {{ second.label }} - </option> - </o-select> - <span :class="separatorClasses">{{ secondLiteral }}</span> - </template> - <o-select - override - v-bind="selectBind" - v-model="meridienSelected" - @change.native="onMeridienChange($event.target.value)" - v-if="!isHourFormat24" - :disabled="disabled"> - <option - v-for="meridien in meridiens" - :value="meridien" - :key="meridien" - :disabled="isMeridienDisabled(meridien)"> - {{ meridien }} - </option> - </o-select> - - <footer - v-if="$slots.default !== undefined" - :class="footerClasses"> - <slot/> - </footer> - </o-dropdown-item> - </o-dropdown> - - <o-input - v-else - ref="input" - v-bind="inputBind" - type="time" - :step="nativeStep" - autocomplete="off" - :value="formatHHMMSS(computedValue)" - :placeholder="placeholder" - :size="size" - :icon="icon" - :icon-pack="iconPack" - :rounded="rounded" - :max="formatHHMMSS(maxTime)" - :min="formatHHMMSS(minTime)" - :disabled="disabled" - :readonly="false" - :use-html5-validation="useHtml5Validation" - @change.native="onChange($event.target.value)" - @focus="handleOnFocus" - @blur="onBlur() && checkHtml5Validity()" - @invalid="onInvalid" /> - </div> -</template> - -<script> -import Dropdown from '../dropdown/Dropdown' -import DropdownItem from '../dropdown/DropdownItem' -import Input from '../input/Input' -import Select from '../select/Select' -import Icon from '../icon/Icon' - -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import TimepickerMixin from '../../utils/TimepickerMixin' -import MatchMediaMixin from '../../utils/MatchMediaMixin' - -import { getOptions } from '../../utils/config' -import { getValueByPath } from '../../utils/helpers' - -/** - * An input with a simple dropdown/modal for selecting a time, uses native timepicker for mobile - * @displayName Timepicker - * @example ./examples/Timepicker.md - * @style _timepicker.scss - */ -export default { - name: 'OTimepicker', - components: { - [Input.name]: Input, - [Select.name]: Select, - [Icon.name]: Icon, - [Dropdown.name]: Dropdown, - [DropdownItem.name]: DropdownItem - }, - configField: 'timepicker', - mixins: [BaseComponentMixin, TimepickerMixin, MatchMediaMixin], - inheritAttrs: false, - props: { - rootClass: [String, Function, Array], - sizeClass: [String, Function, Array], - boxClass: [String, Function, Array], - separatorClass: [String, Function, Array], - footerClass: [String, Function, Array], - mobileClass: [String, Function, Array], - inputClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'timepicker.inputClasses', {}) - } - }, - dropdownClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'timepicker.dropdownClasses', {}) - } - }, - selectClasses: { - type: Object, - default: () => { - return getValueByPath(getOptions(), 'timepicker.selectClasses', {}) - } - } - }, - computed: { - inputBind() { - return { - ...this.$attrs, - ...this.inputClasses - } - }, - dropdownBind() { - return { - 'root-class': this.computedClass('dropdownClasses.rootClass', 'o-tpck__dropdown'), - ...this.dropdownClasses - } - }, - selectBind() { - return { - 'select-class': this.computedClass('selectClasses.selectClass', 'o-tpck__select'), - 'placeholder-class': this.computedClass('selectClasses.placeholderClass', 'o-tpck__select-placeholder'), - ...this.selectClasses - } - }, - rootClasses() { - return [ - this.computedClass('rootClass', 'o-tpck'), - { [this.computedClass('sizeClass', 'o-tpck--', this.size)]: this.size }, - { [this.computedClass('mobileClass', 'o-tpck--mobile')]: this.isMatchMedia }, - ] - }, - boxClasses() { - return [ - this.computedClass('boxClass', 'o-tpck__box') - ] - }, - separatorClasses() { - return [ - this.computedClass('separatorClass', 'o-tpck__separator') - ] - }, - footerClasses() { - return [ - this.computedClass('footerClass', 'o-tpck__footer') - ] - }, - nativeStep() { - if (this.enableSeconds) return '1' - return null - }, - } -} -</script> diff --git a/packages/oruga/src/components/timepicker/__snapshots__/Timepicker.spec.js.snap b/packages/oruga/src/components/timepicker/__snapshots__/Timepicker.spec.js.snap deleted file mode 100644 index 1593faa56..000000000 --- a/packages/oruga/src/components/timepicker/__snapshots__/Timepicker.spec.js.snap +++ /dev/null @@ -1,240 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Timepicker render correctly 1`] = ` -<div class="o-tpck"> - <o-dropdown-stub maxheight="200" mobilemodal="true" animation="fade" trapfocus="true" closeonclick="true" canclose="true" triggers="click" menutag="div" appendtobodycopyparent="true" rootclass="o-tpck__dropdown"> - <o-dropdown-item-stub override="true" tag="div" tabindex="0" ariarole="" itemclass="o-tpck__box"> - <o-select-stub override="true" usehtml5validation="true" statusicon="true" placeholder="00" selectclass="o-tpck__select" placeholderclass="o-tpck__select-placeholder"> - <option value="1"> - 1 - </option> - <option value="2"> - 2 - </option> - <option value="3"> - 3 - </option> - <option value="4"> - 4 - </option> - <option value="5"> - 5 - </option> - <option value="6"> - 6 - </option> - <option value="7"> - 7 - </option> - <option value="8"> - 8 - </option> - <option value="9"> - 9 - </option> - <option value="10"> - 10 - </option> - <option value="11"> - 11 - </option> - <option value="0"> - 12 - </option> - </o-select-stub> <span class="o-tpck__separator">:</span> - <o-select-stub override="true" usehtml5validation="true" statusicon="true" placeholder="00" selectclass="o-tpck__select" placeholderclass="o-tpck__select-placeholder"> - <option value="0"> - 00 - </option> - <option value="1"> - 01 - </option> - <option value="2"> - 02 - </option> - <option value="3"> - 03 - </option> - <option value="4"> - 04 - </option> - <option value="5"> - 05 - </option> - <option value="6"> - 06 - </option> - <option value="7"> - 07 - </option> - <option value="8"> - 08 - </option> - <option value="9"> - 09 - </option> - <option value="10"> - 10 - </option> - <option value="11"> - 11 - </option> - <option value="12"> - 12 - </option> - <option value="13"> - 13 - </option> - <option value="14"> - 14 - </option> - <option value="15"> - 15 - </option> - <option value="16"> - 16 - </option> - <option value="17"> - 17 - </option> - <option value="18"> - 18 - </option> - <option value="19"> - 19 - </option> - <option value="20"> - 20 - </option> - <option value="21"> - 21 - </option> - <option value="22"> - 22 - </option> - <option value="23"> - 23 - </option> - <option value="24"> - 24 - </option> - <option value="25"> - 25 - </option> - <option value="26"> - 26 - </option> - <option value="27"> - 27 - </option> - <option value="28"> - 28 - </option> - <option value="29"> - 29 - </option> - <option value="30"> - 30 - </option> - <option value="31"> - 31 - </option> - <option value="32"> - 32 - </option> - <option value="33"> - 33 - </option> - <option value="34"> - 34 - </option> - <option value="35"> - 35 - </option> - <option value="36"> - 36 - </option> - <option value="37"> - 37 - </option> - <option value="38"> - 38 - </option> - <option value="39"> - 39 - </option> - <option value="40"> - 40 - </option> - <option value="41"> - 41 - </option> - <option value="42"> - 42 - </option> - <option value="43"> - 43 - </option> - <option value="44"> - 44 - </option> - <option value="45"> - 45 - </option> - <option value="46"> - 46 - </option> - <option value="47"> - 47 - </option> - <option value="48"> - 48 - </option> - <option value="49"> - 49 - </option> - <option value="50"> - 50 - </option> - <option value="51"> - 51 - </option> - <option value="52"> - 52 - </option> - <option value="53"> - 53 - </option> - <option value="54"> - 54 - </option> - <option value="55"> - 55 - </option> - <option value="56"> - 56 - </option> - <option value="57"> - 57 - </option> - <option value="58"> - 58 - </option> - <option value="59"> - 59 - </option> - </o-select-stub> - <!----> - <o-select-stub override="true" usehtml5validation="true" statusicon="true" value="AM" selectclass="o-tpck__select" placeholderclass="o-tpck__select-placeholder"> - <option value="AM"> - AM - </option> - <option value="PM"> - PM - </option> - </o-select-stub> - <!----> - </o-dropdown-item-stub> - </o-dropdown-stub> -</div> -`; diff --git a/packages/oruga/src/components/timepicker/examples/Timepicker.md b/packages/oruga/src/components/timepicker/examples/Timepicker.md deleted file mode 100644 index a2b173573..000000000 --- a/packages/oruga/src/components/timepicker/examples/Timepicker.md +++ /dev/null @@ -1,180 +0,0 @@ - -## Examples - -::: demo -```html -<template> - <section> - <o-field grouped group-multiline> - <div class="control"> - <o-switch v-model="enableSeconds">Enable seconds</o-switch> - </div> - <o-field label="Locale"> - <o-select v-model="locale"> - <option :value="undefined"></option> - <option value="de-DE">de-DE</option> - <option value="en-CA">en-CA</option> - <option value="en-GB">en-GB</option> - <option value="en-US">en-US</option> - <option value="es-ES">es-ES</option> - <option value="es-MX">es-MX</option> - <option value="fr-CA">fr-CA</option> - <option value="fr-FR">fr-FR</option> - <option value="it-IT">it-IT</option> - <option value="ja-JP">ja-JP</option> - <option value="pt-BR">pt-BR</option> - <option value="ru-RU">ru-RU</option> - <option value="zn-CN">zn-CN</option> - </o-select> - </o-field> - <o-field label="Hour format"> - <o-select v-model="hourFormat"> - <option :value="undefined"></option> - <option value="12">12</option> - <option value="24">24</option> - </o-select> - </o-field> - </o-field> - <o-field label="Select time"> - <o-timepicker - rounded - placeholder="Click to select..." - icon="clock" - :enable-seconds="enableSeconds" - :hour-format="hourFormat" - :locale="locale"> - </o-timepicker> - </o-field> - </section> -</template> - -<script> -export default { - data() { - return { - hourFormat: undefined, // Browser locale - enableSeconds: false, - locale: undefined // Browser locale - } - } -} -</script> -``` -::: - -### Min/Max date - -::: demo -```html -<template> - <o-field label="Select time"> - <o-timepicker - placeholder="Click to select..." - :min-time="minTime" - :max-time="maxTime"> - </o-timepicker> - </o-field> -</template> - -<script> - export default { - data() { - const min = new Date() - min.setHours(9) - min.setMinutes(0) - const max = new Date() - max.setHours(18) - max.setMinutes(0) - return { - minTime: min, - maxTime: max - } - } - } -</script> -``` -::: - - -### Footer - -::: demo -```html -<template> - <o-field label="Select time"> - <o-timepicker v-model="time" - placeholder="Click to select..."> - - <o-button - label="Now" - variant="primary" - icon-left="clock" - @click="time = new Date()" /> - <o-button - label="Clear" - variant="danger" - icon-left="times" - outlined - @click="time = null" /> - </o-timepicker> - </o-field> -</template> - -<script> - export default { - data() { - return { - time: new Date() - } - } - } -</script> -``` -::: - -### Granularity - -::: demo -```html -<template> - <o-field label="Select timepicker"> - <o-timepicker - placeholder="Click to select" - icon="clock" - :incrementMinutes="minutesGranularity" - :incrementHours="hoursGranularity"> - </o-timepicker> - </o-field> -</template> -<script> -export default { - data() { - return { - minutesGranularity: 15, - hoursGranularity: 2 - } - } -} -</script> -``` -::: - -### Inline - -::: demo -```html -<template> - <o-timepicker v-model="time" inline></o-timepicker> -</template> - -<script> - export default { - data() { - return { - time: new Date() - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/timepicker/index.js b/packages/oruga/src/components/timepicker/index.js deleted file mode 100644 index bf38cea47..000000000 --- a/packages/oruga/src/components/timepicker/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Timepicker from './Timepicker' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Timepicker) - } -} - -use(Plugin) - -export default Plugin - -export { - Timepicker as BTimepicker -} diff --git a/packages/oruga/src/components/tooltip/Inspector.vue b/packages/oruga/src/components/tooltip/Inspector.vue deleted file mode 100644 index 492eb4b15..000000000 --- a/packages/oruga/src/components/tooltip/Inspector.vue +++ /dev/null @@ -1,87 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <o-tooltip v-bind="s" label="Tooltip!" always> - <o-button> - Delayed - </o-button> - </o-tooltip> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "contentClass", - description: "Class of the tooltip content", - action: () => { - } - }, - { - class: "triggerClass", - description: "Class of the tooltip trigger", - action: () => { - } - }, - { - class: "multilineClass", - description: "Class of the tooltip content when is multiline", - action: (cmp) => { - cmp.data.multiline = true - } - }, - { - class: "arrowClass", - description: "Class of the tooltip arrow", - action: () => { - } - }, - { - class: "arrowOrderClass", - description: "Class of the tooltip arrow when its position changes", - properties: ['position'], - suffixes: ['top', 'bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.position = 'right' - } - }, - { - class: "orderClass", - description: "Class of the tooltip trigger when its position changes", - properties: ['position'], - suffixes: ['top', 'bottom', 'left', 'right'], - action: (cmp) => { - cmp.data.position = 'right' - } - }, - { - class: "alwaysClass", - description: "Class of the tooltip trigger when is always visible", - action: () => { - } - }, - { - class: "variantClass", - description : 'Class of the tooltip variant', - properties: ["variant"], - suffixes: ['primary', 'info', 'warning', 'danger'], - action: (cmp) => { - cmp.data.variant = 'warning'; - } - } - ] - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/tooltip/Tooltip.spec.js b/packages/oruga/src/components/tooltip/Tooltip.spec.js deleted file mode 100644 index 9ad47ed29..000000000 --- a/packages/oruga/src/components/tooltip/Tooltip.spec.js +++ /dev/null @@ -1,18 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OTooltip from '@components/tooltip/Tooltip' - -let wrapper - -describe('OTooltip', () => { - beforeEach(() => { - wrapper = shallowMount(OTooltip) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/tooltip/Tooltip.vue b/packages/oruga/src/components/tooltip/Tooltip.vue deleted file mode 100644 index a2c172f9f..000000000 --- a/packages/oruga/src/components/tooltip/Tooltip.vue +++ /dev/null @@ -1,390 +0,0 @@ -<template> - <div - ref="tooltip" - :class="rootClasses"> - <transition - :name="newAnimation" - @after-leave="metrics = null" - @enter-cancelled="metrics = null"> - <div - v-show="active && (isActive || always)" - ref="content" - :class="contentClasses"> - <span :class="arrowClasses"></span> - <template v-if="label">{{ label }}</template> - <template v-else-if="$slots.default"> - <slot name="content" /> - </template> - </div> - </transition> - <div - ref="trigger" - :class="triggerClasses" - :style="triggerStyle" - @click="onClick" - @contextmenu="onContextMenu" - @mouseenter="onHover" - @focus.capture="onFocus" - @blur.capture="close" - @mouseleave="close"> - <slot ref="slot" /> - </div> - </div> -</template> - -<script> -import { getOptions } from '../../utils/config' -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import { createAbsoluteElement, removeElement, getValueByPath, isWebKit } from '../../utils/helpers' - -const opposites = { - top: 'bottom', - bottom: 'top', - right: 'left', - left: 'right', -} - -function intersectionArea(a, b) { - const left = Math.max(a.left, b.left) - const right = Math.min(a.right, b.right) - const top = Math.max(a.top, b.top) - const bottom = Math.min(a.bottom, b.bottom) - return Math.max(right - left, 0) * Math.max(bottom - top, 0) -} - -/** - * @param rect the bounding rectangle of the trigger element - * @return the "anchor points" (points where the arrow attaches) for each side of the tooltip - */ -const anchors = rect => ({ - top: { x: (rect.left + rect.right) * 0.5, y: rect.top }, - bottom: { x: (rect.left + rect.right) * 0.5, y: rect.bottom }, - left: { x: rect.left, y: (rect.top + rect.bottom) * 0.5 }, - right: { x: rect.right, y: (rect.top + rect.bottom) * 0.5 }, -}) - -/** - * Display a brief helper text to your user - * @displayName Tooltip - * @example ./examples/Tooltip.md - * @style _tooltip.scss - */ -export default { - name: 'OTooltip', - mixins: [BaseComponentMixin], - configField: 'tooltip', - props: { - /** Whether tooltip is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */ - active: { - type: Boolean, - default: true - }, - /** Tooltip text */ - label: String, - /** Tooltip delay before it appears (number in ms) */ - delay: Number, - /** - * Tooltip position in relation to the element - * @values top, bottom, left, right - */ - position: { - type: String, - default: () => { return getValueByPath(getOptions(), 'tooltip.position', 'top') }, - validator(value) { - return [ - 'top', - 'bottom', - 'left', - 'right', - 'auto', - ].indexOf(value) > -1 - } - }, - /** - * Tooltip trigger events - * @values hover, click, focus, contextmenu - */ - triggers: { - type: Array, - default: () => { return getValueByPath(getOptions(), 'tooltip.triggers', ['hover']) } - }, - /** Tooltip will be always active */ - always: Boolean, - /** Tooltip will have an animation */ - animated: { - type: Boolean, - default: true - }, - /** Tooltip default animation */ - animation: { - type: String, - default: () => { return getValueByPath(getOptions(), 'tooltip.animation', 'fade') } - }, - /** - * Tooltip auto close options - * @values true, false, 'inside', 'outside' - */ - autoClose: { - type: [Array, Boolean], - default: true - }, - /** Tooltip will be multilined */ - multiline: Boolean, - /** Append tooltip content to body */ - appendToBody: Boolean, - /** - * Color of the tooltip - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: [String, Function, Array], - rootClass: [String, Function, Array], - contentClass: [String, Function, Array], - orderClass: [String, Function, Array], - triggerClass: [String, Function, Array], - multilineClass: [String, Function, Array], - alwaysClass: [String, Function, Array], - variantClass: [String, Function, Array], - arrowClass: [String, Function, Array], - arrowOrderClass: [String, Function, Array] - }, - data() { - return { - isActive: false, - triggerStyle: {}, - bodyEl: undefined, // Used to append to body - metrics: null, // Used for automatic tooltip positioning - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-tip') - ] - }, - triggerClasses() { - return [ - this.computedClass('triggerClass', 'o-tip__trigger'), - ] - }, - arrowClasses() { - return [ - this.computedClass('arrowClass', 'o-tip__arrow'), - { [this.computedClass('arrowOrderClass', 'o-tip__arrow--', this.newPosition)]: this.newPosition }, - { [this.computedClass('variantArrowClass', 'o-tip__arrow--', this.variant)]: this.variant }, - ] - }, - contentClasses() { - return [ - this.computedClass('contentClass', 'o-tip__content'), - { [this.computedClass('orderClass', 'o-tip__content--', this.newPosition)]: this.newPosition }, - { [this.computedClass('variantClass', 'o-tip__content--', this.variant)]: this.variant }, - { [this.computedClass('multilineClass', 'o-tip__content--multiline')]: this.multiline }, - { [this.computedClass('alwaysClass', 'o-tip__content--always')]: this.always } - ] - }, - newAnimation() { - return this.animated ? this.animation : undefined - }, - newPosition() { - if (this.position !== 'auto') { - return this.position - } - const defaultPosition = getValueByPath(getOptions(), 'tooltip.position', 'top') - let bestPosition = defaultPosition - if (this.metrics != null) { - let viewRect; - const viewport = window.visualViewport; - if (viewport != undefined) { - if (isWebKit()) { - // On WebKit, getBoundingClientRect offsets relative to the the visual viewport's origin, not the layout viewport's. - // See https://bugs.webkit.org/show_bug.cgi?id=170981 - viewRect = new DOMRect(0, 0, viewport.width, viewport.height); - } else { - viewRect = new DOMRect(viewport.offsetLeft, viewport.offsetTop, viewport.width, viewport.height); - } - } else { - viewRect = new DOMRect(0, 0, document.documentElement.clientWidth, document.documentElement.clientHeight) - } - const triggerAnchors = anchors(this.metrics.trigger) - const contentRect = this.metrics.content - const contentAnchors = anchors(contentRect) - const contentRectAtAnchor = pos => { - const triggerAnchor = triggerAnchors[pos] - const contentAnchor = contentAnchors[opposites[pos]] - // Translates contentRect so contentAnchor is on top of triggerAnchor - // NOTE: this doesn't account for the extra offset that the tooltip arrow provides. - // That offset should be small, and it's tricky to get it from the CSS. - return new DOMRect( - contentRect.x + (triggerAnchor.x - contentAnchor.x), - contentRect.y + (triggerAnchor.y - contentAnchor.y), - contentRect.width, - contentRect.height, - ) - } - const defaultOpposite = opposites[defaultPosition] - const crossPosition = (defaultPosition === 'top' || defaultPosition === 'bottom') ? 'left' : 'top' - const crossOpposite = opposites[crossPosition] - // In descending order of priority - const positions = [defaultPosition, defaultOpposite, crossPosition, crossOpposite] - let maxOverlap = 0 - for (const position of positions) { - const overlap = intersectionArea(viewRect, contentRectAtAnchor(position)) - if (overlap > maxOverlap) { - maxOverlap = overlap - bestPosition = position - } - } - } - return bestPosition - }, - }, - watch: { - isActive(value) { - this.$emit(value ? 'open' : 'close') - if (value && this.position === 'auto') { - this.$nextTick(() => { - this.metrics = { - content: this.$refs.content.getBoundingClientRect(), - trigger: this.$refs.trigger.getBoundingClientRect(), - } - }) - } - if (value && this.appendToBody) { - this.updateAppendToBody() - } - } - }, - methods: { - updateAppendToBody() { - const tooltip = this.$refs.tooltip - const trigger = this.$refs.trigger - if (tooltip && trigger) { - // update wrapper tooltip - const tooltipEl = this.$data.bodyEl.children[0] - tooltipEl.classList.forEach((item) => tooltipEl.classList.remove(...item.split(' '))) - if (this.$vnode && this.$vnode.data && this.$vnode.data.staticClass) { - tooltipEl.classList.add(this.$vnode.data.staticClass) - } - this.rootClasses.forEach((item) => { - if (typeof item === 'object') { - Object.keys(item).filter(key => key && item[key]).forEach( - key => tooltipEl.classList.add(key)) - } else { - tooltipEl.classList.add(...item.split(' ')) - } - }) - tooltipEl.style.width = `${trigger.clientWidth}px` - tooltipEl.style.height = `${trigger.clientHeight}px` - const rect = trigger.getBoundingClientRect() - const top = rect.top + window.scrollY - const left = rect.left + window.scrollX - const wrapper = this.$data.bodyEl - wrapper.style.position = 'absolute' - wrapper.style.top = `${top}px` - wrapper.style.left = `${left}px` - wrapper.style.zIndex = this.isActive || this.always ? '99' : '-1' - this.triggerStyle = { zIndex: this.isActive || this.always ? '100' : undefined } - } - }, - onClick() { - if (this.triggers.indexOf('click') < 0) return - // if not active, toggle after clickOutside event - // this fixes toggling programmatic - this.$nextTick(() => { - setTimeout(() => this.open()) - }) - }, - onHover() { - if (this.triggers.indexOf('hover') < 0) return - this.open() - }, - onFocus() { - if (this.triggers.indexOf('focus') < 0) return - this.open() - }, - onContextMenu(event) { - if (this.triggers.indexOf('contextmenu') < 0) return - event.preventDefault() - this.open() - }, - open() { - if (this.delay) { - this.timer = setTimeout(() => { - this.isActive = true - this.timer = null - }, this.delay) - } else { - this.isActive = true - } - }, - close() { - if (typeof this.autoClose === 'boolean') { - this.isActive = !this.autoClose - } - if (this.autoClose && this.timer) clearTimeout(this.timer) - }, - /** - * Close tooltip if clicked outside. - */ - clickedOutside(event) { - if (this.isActive) { - if (Array.isArray(this.autoClose)) { - if (this.autoClose.indexOf('outside') >= 0) { - if (!this.isInWhiteList(event.target)) this.isActive = false - } - if (this.autoClose.indexOf('inside') >= 0) { - if (this.isInWhiteList(event.target)) this.isActive = false - } - } - } - }, - /** - * Keypress event that is bound to the document - */ - keyPress({ key }) { - if (this.isActive && (key === 'Escape' || key === 'Esc')) { - if (Array.isArray(this.autoClose)) { - if (this.autoClose.indexOf('escape') >= 0) this.isActive = false - } - } - }, - /** - * White-listed items to not close when clicked. - */ - isInWhiteList(el) { - if (el === this.$refs.content) return true - // All chidren from content - if (this.$refs.content !== undefined) { - const children = this.$refs.content.querySelectorAll('*') - for (const child of children) { - if (el === child) { - return true - } - } - } - return false - } - }, - mounted() { - if (this.appendToBody) { - this.$data.bodyEl = createAbsoluteElement(this.$refs.content) - this.updateAppendToBody() - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('click', this.clickedOutside) - document.addEventListener('keyup', this.keyPress) - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('click', this.clickedOutside) - document.removeEventListener('keyup', this.keyPress) - } - if (this.appendToBody) { - removeElement(this.$data.bodyEl) - } - } -} -</script> diff --git a/packages/oruga/src/components/tooltip/__snapshots__/Tooltip.spec.js.snap b/packages/oruga/src/components/tooltip/__snapshots__/Tooltip.spec.js.snap deleted file mode 100644 index 2189fd4af..000000000 --- a/packages/oruga/src/components/tooltip/__snapshots__/Tooltip.spec.js.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OTooltip render correctly 1`] = ` -<div class="o-tip"> - <transition-stub name="fade"> - <div class="o-tip__content o-tip__content--top" style="display: none;"><span class="o-tip__arrow o-tip__arrow--top"></span> - <!----> - </div> - </transition-stub> - <div class="o-tip__trigger"></div> -</div> -`; diff --git a/packages/oruga/src/components/tooltip/examples/Tooltip.md b/packages/oruga/src/components/tooltip/examples/Tooltip.md deleted file mode 100644 index 488622100..000000000 --- a/packages/oruga/src/components/tooltip/examples/Tooltip.md +++ /dev/null @@ -1,168 +0,0 @@ - -## Examples - -### Base - -::: demo -```html -<template> - <section> - <o-tooltip label="Tooltip right" - position="right"> - <o-button> - Right - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip top"> - <o-button> - Top (default) - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip bottom" - position="bottom"> - <o-button> - Bottom - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip left" - position="left"> - <o-button> - Left - </o-button> - </o-tooltip> - - <o-tooltip label="delayed by 1000ms" - :delay="1000"> - <o-button variant="warning"> - Delayed - </o-button> - </o-tooltip> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Multiline - -::: demo -```html -<template> - <section> - <o-tooltip - label="Tooltip multiline, probably because it's too long for a casual tooltip" - multiline> - <o-button> - Multiline (default) - </o-button> - </o-tooltip> - - <o-tooltip - label="It's not brief, but it's also not long" - size="small" - multiline> - <o-button> - Multiline (small) - </o-button> - </o-tooltip> - - <o-tooltip - label="Tooltip large multiline, because it's too long to be on a medium size. Did I tell you it's really long? Yes, it is โ I assure you!" - position="bottom" - size="large" - multiline> - <o-button> - Multiline (large) - </o-button> - </o-tooltip> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Slot - -::: demo -```html -<template> - <section> - <o-tooltip position="bottom" multiline> - <o-button>Html Content</o-button> - <template v-slot:content> - <b>Lorem ipsum dolor sit amet</b>, consectetur warning elit. <i>Fusce id fermentum quam</i>. - </template> - </o-tooltip> - - <o-tooltip variant="primary" :triggers="['click']" :auto-close="['outside', 'escape']"> - <template v-slot:content> - <o-icon icon="heart" variant="danger"></o-icon> - <o-icon icon="thumbs-up" variant="info"></o-icon> - <o-icon icon="thumbs-down" variant="warning"></o-icon> - <o-icon icon="smile-beam"></o-icon> - </template> - <o-button>Action</o-button> - </o-tooltip> - </section> -</template> - -<script> - export default { - } -</script> -``` -::: - -### Toggle - -::: demo -```html -<template> - <section> - <o-button - @click="active = !active"> - Toggle - </o-button> - - <hr> - - <o-tooltip label="I'm never closing" - :active="active" - always> - <o-button> - Always - </o-button> - </o-tooltip> - - <o-tooltip label="Tooltip right" - position="right" - :active="active"> - <o-button> - Right - </o-button> - </o-tooltip> - </section> -</template> - -<script> - export default { - data() { - return { - active: true - } - } - } -</script> -``` -::: diff --git a/packages/oruga/src/components/tooltip/index.js b/packages/oruga/src/components/tooltip/index.js deleted file mode 100644 index 97d2a3f9b..000000000 --- a/packages/oruga/src/components/tooltip/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Tooltip from './Tooltip' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Tooltip) - } -} - -use(Plugin) - -export default Plugin - -export { - Tooltip as OTooltip -} diff --git a/packages/oruga/src/components/upload/Inspector.vue b/packages/oruga/src/components/upload/Inspector.vue deleted file mode 100644 index 558b1eb1a..000000000 --- a/packages/oruga/src/components/upload/Inspector.vue +++ /dev/null @@ -1,81 +0,0 @@ -<template> - <div> - <doc-wrapper> - <template v-slot:default="s"> - <section> - <o-field> - <o-upload v-bind="s"> - <section class="ex-center"> - <p> - <o-icon icon="upload" size="is-large"> </o-icon> - </p> - <p v-if="s.dragDrop">Drop your files here or click to upload</p> - <p v-if="!s.dragDrop">Click to upload</p> - </section> - </o-upload> - </o-field> - </section> - </template> - </doc-wrapper> - <inspector :inspectData="inspectData"></inspector> - </div> -</template> - -<script> -export default { - data() { - return { - inspectData: [ - { - class: "rootClass", - description: "Root class of the element", - }, - { - class: "draggableClass", - description: "Upload class when draggable", - properties: ['dragDrop'], - action: (cmp) => { - cmp.data.dragDrop = true; - } - }, - { - class: "expandedClass", - description: "Upload class when expanded", - properties: ['expanded'], - action: (cmp) => { - cmp.data.expanded = true; - } - }, - { - class: "disabledClass", - description: "Upload class when disabled", - properties: ['disabled'], - action: (cmp) => { - cmp.data.disabled = true; - } - }, - { - class: "hoveredClass", - description: "Upload class on dragging", - properties: ['dragDrop'], - warning: 'Drag & drop a file to see it in action!', - action: (cmp) => { - cmp.data.dragDrop = true; - } - }, - { - class: "variantClass", - description : 'Class of the upload variant', - properties: ["variant", "dragDrop"], - suffixes: ['primary', 'info', 'warning', 'danger'], - warning: 'Drag & drop a file to see it in action!', - action: (cmp) => { - cmp.data.variant = 'warning'; - cmp.data.dragDrop = true; - } - } - ] - }; - }, -}; -</script> diff --git a/packages/oruga/src/components/upload/Upload.spec.js b/packages/oruga/src/components/upload/Upload.spec.js deleted file mode 100644 index f2db0d380..000000000 --- a/packages/oruga/src/components/upload/Upload.spec.js +++ /dev/null @@ -1,18 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OUpload from '@components/upload/Upload' - -let wrapper - -describe('OUpload', () => { - beforeEach(() => { - wrapper = shallowMount(OUpload) - }) - - it('is called', () => { - expect(wrapper.exists()).toBeTruthy() - }) - - it('render correctly', () => { - expect(wrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/oruga/src/components/upload/Upload.vue b/packages/oruga/src/components/upload/Upload.vue deleted file mode 100644 index e88670870..000000000 --- a/packages/oruga/src/components/upload/Upload.vue +++ /dev/null @@ -1,210 +0,0 @@ -<template> - <label :class="rootClasses"> - <template v-if="!dragDrop"> - <slot/> - </template> - - <div - v-else - :class="draggableClasses" - @mouseenter="updateDragDropFocus(true)" - @mouseleave="updateDragDropFocus(false)" - @dragover.prevent="updateDragDropFocus(true)" - @dragleave.prevent="updateDragDropFocus(false)" - @dragenter.prevent="updateDragDropFocus(true)" - @drop.prevent="onFileChange"> - <slot/> - </div> - - <input - ref="input" - type="file" - v-bind="$attrs" - :multiple="multiple" - :accept="accept" - :disabled="disabled" - @change="onFileChange"> - </label> -</template> - -<script> -import BaseComponentMixin from '../../utils/BaseComponentMixin' -import FormElementMixin from '../../utils/FormElementMixin' -import { File } from '../../utils/ssr' - -/** - * Upload one or more files - * @displayName Upload - * @example ./examples/Upload.md - * @style _upload.scss - */ -export default { - name: 'OUpload', - mixins: [BaseComponentMixin, FormElementMixin], - configField: 'upload', - inheritAttrs: false, - props: { - /** @model */ - value: [Object, File, Array], - /** Same as native, also push new item to v-model instead of replacing */ - multiple: Boolean, - /** Same as native disabled */ - disabled: Boolean, - /** Same as native accept */ - accept: String, - /** Accepts drag & drop and change its style */ - dragDrop: Boolean, - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: { - type: String - }, - /** Replace last chosen files every time (like native file input element) */ - native: { - type: Boolean, - default: false - }, - /** Upload will be expanded (full-width) */ - expanded: { - type: Boolean, - default: false - }, - rootClass: [String, Function, Array], - draggableClass: [String, Function, Array], - variantClass: [String, Function, Array], - expandedClass: [String, Function, Array], - disabledClass: [String, Function, Array], - hoveredClass: [String, Function, Array] - }, - data() { - return { - newValue: this.value, - dragDropFocus: false - } - }, - computed: { - rootClasses() { - return [ - this.computedClass('rootClass', 'o-upl'), - { [this.computedClass('expandedClass', 'o-upl--expanded')]: this.expanded }, - { [this.computedClass('disabledClass', 'o-upl--disabled')]: this.disabled } - ] - }, - draggableClasses() { - return [ - this.computedClass('draggableClass', 'o-upl__draggable'), - { [this.computedClass('hoveredClass', 'o-upl__draggable--hovered')]: !this.variant && this.dragDropFocus }, - { [this.computedClass('variantClass', 'o-upl__draggable--hovered-', this.variant)]: this.variant && this.dragDropFocus }, - ] - }, - $elementRef() { - return 'input' - } - }, - watch: { - /** - * When v-model is changed: - * 1. Set internal value. - * 2. Reset interna input file value - * 3. If it's invalid, validate again. - */ - value(value) { - this.newValue = value - if (!value || (Array.isArray(value) && value.length === 0)) { - this.$refs.input.value = null - } - !this.isValid && !this.dragDrop && this.checkHtml5Validity() - }, - }, - methods: { - /** - * Listen change event on input type 'file', - * emit 'input' event and validate - */ - onFileChange(event) { - if (this.disabled) return - if (this.dragDrop) this.updateDragDropFocus(false) - const value = event.target.files || event.dataTransfer.files - if (value.length === 0) { - if (!this.newValue) return - if (this.native) this.newValue = null - } else if (!this.multiple) { - // only one element in case drag drop mode and isn't multiple - if (this.dragDrop && value.length !== 1) return - else { - const file = value[0] - if (this.checkType(file)) this.newValue = file - else if (this.newValue) { - this.newValue = null - this.clearInput() - } else { - // Force input back to empty state and recheck validity - this.clearInput() - this.checkHtml5Validity() - return - } - } - } else { - // always new values if native or undefined local - let newValues = false - if (this.native || !this.newValue) { - this.newValue = [] - newValues = true - } - for (let i = 0; i < value.length; i++) { - const file = value[i] - if (this.checkType(file)) { - this.newValue.push(file) - newValues = true - } - } - if (!newValues) return - } - this.$emit('input', this.newValue) - !this.dragDrop && this.checkHtml5Validity() - }, - - /* - * Reset file input value - */ - clearInput() { - this.$refs.input.value = null - }, - - /** - * Listen drag-drop to update internal variable - */ - updateDragDropFocus(focus) { - if (!this.disabled) { - this.dragDropFocus = focus - } - }, - - /** - * Check mime type of file - */ - checkType(file) { - if (!this.accept) return true - const types = this.accept.split(',') - if (types.length === 0) return true - for (let i = 0; i < types.length; i++) { - const type = types[i].trim() - if (type) { - if (type.substring(0, 1) === '.') { - const extension = file.name.toLowerCase().slice(-type.length) - if (extension === type.toLowerCase()) { - return true - } - } else { - // check mime type - if (file.type.match(type)) return true - } - } - } - return false - } - } -} -</script> diff --git a/packages/oruga/src/components/upload/__snapshots__/Upload.spec.js.snap b/packages/oruga/src/components/upload/__snapshots__/Upload.spec.js.snap deleted file mode 100644 index 0e23458f5..000000000 --- a/packages/oruga/src/components/upload/__snapshots__/Upload.spec.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`OUpload render correctly 1`] = `<label class="o-upl"> <input type="file"></label>`; diff --git a/packages/oruga/src/components/upload/examples/Upload.md b/packages/oruga/src/components/upload/examples/Upload.md deleted file mode 100644 index 1655834c8..000000000 --- a/packages/oruga/src/components/upload/examples/Upload.md +++ /dev/null @@ -1,90 +0,0 @@ -## Examples - -### Base - -::: demo -```html -<template> - <o-field class="file"> - <o-upload v-model="file"> - <o-button tag="a" variant="primary"> - <o-icon icon="upload"></o-icon> - <span>Click to upload</span> - </o-button> - </o-upload> - <span class="file-name" v-if="file"> - {{ file.name }} - </span> - </o-field> - -</template> - -<script> - export default { - data() { - return { - file: null - } - } - } -</script> -``` -::: - -### Drag&Drop - -::: demo -```html -<template> - <section> - <o-field> - <o-upload v-model="dropFiles" - multiple - drag-drop> - <section class="ex-center"> - <p> - <o-icon - icon="upload" - size="is-large"> - </o-icon> - </p> - <p>Drop your files here or click to upload</p> - </section> - </o-upload> - </o-field> - - <div class="tags"> - <span v-for="(file, index) in dropFiles" - :key="index"> - {{file.name}} - <o-button icon-left="times" size="small" - native-type="button" - @click="deleteDropFile(index)"> - </o-button> - </span> - </div> - </section> -</template> - -<script> - export default { - data() { - return { - dropFiles: [] - } - }, - methods: { - deleteDropFile(index) { - this.dropFiles.splice(index, 1) - } - } - } -</script> - -<style> -.ex-center { - text-align: center; -} -</style> -``` -::: diff --git a/packages/oruga/src/components/upload/index.js b/packages/oruga/src/components/upload/index.js deleted file mode 100644 index 2058664b4..000000000 --- a/packages/oruga/src/components/upload/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Upload from './Upload' - -import { use, registerComponent } from '../../utils/plugins' - -const Plugin = { - install(Vue) { - registerComponent(Vue, Upload) - } -} - -use(Plugin) - -export default Plugin - -export { - Upload as OUpload -} diff --git a/packages/oruga/src/directives/clickOutside.js b/packages/oruga/src/directives/clickOutside.js deleted file mode 100644 index 2a588f532..000000000 --- a/packages/oruga/src/directives/clickOutside.js +++ /dev/null @@ -1,81 +0,0 @@ -const isTouch = - typeof window !== 'undefined' && ('ontouchstart' in window || navigator.msMaxTouchPoints > 0) -const events = isTouch ? ['touchstart', 'click'] : ['click'] - -const instances = [] - -function processArgs(bindingValue) { - const isFunction = typeof bindingValue === 'function' - if (!isFunction && typeof bindingValue !== 'object') { - throw new Error(`v-click-outside: Binding value should be a function or an object, ${typeof bindingValue} given`) - } - - return { - handler: isFunction ? bindingValue : bindingValue.handler, - middleware: bindingValue.middleware || ((isClickOutside) => isClickOutside), - events: bindingValue.events || events - } -} - -function onEvent({ el, event, handler, middleware }) { - const isClickOutside = event.target !== el && !el.contains(event.target) - - if (!isClickOutside || !middleware(event, el)) { - return - } - - handler(event, el) -} - -function toggleEventListeners({ eventHandlers } = {}, action = 'add') { - eventHandlers.forEach(({ event, handler }) => { - document[`${action}EventListener`](event, handler) - }) -} - -function bind(el, { value }) { - const { handler, middleware, events } = processArgs(value) - - const instance = { - el, - eventHandlers: events.map((eventName) => ({ - event: eventName, - handler: (event) => onEvent({ event, el, handler, middleware }) - })) - } - - toggleEventListeners(instance, 'add') - - instances.push(instance) -} - -function update(el, { value }) { - const { handler, middleware, events } = processArgs(value) - // `filter` instead of `find` for compat with IE - const instance = instances.filter((instance) => instance.el === el)[0] - - toggleEventListeners(instance, 'remove') - - instance.eventHandlers = events.map((eventName) => ({ - event: eventName, - handler: (event) => onEvent({ event, el, handler, middleware }) - })) - - toggleEventListeners(instance, 'add') -} - -function unbind(el) { - // `filter` instead of `find` for compat with IE - const instance = instances.filter((instance) => instance.el === el)[0] - - toggleEventListeners(instance, 'remove') -} - -const directive = { - bind, - update, - unbind, - instances -} - -export default directive diff --git a/packages/oruga/src/directives/trapFocus.js b/packages/oruga/src/directives/trapFocus.js deleted file mode 100644 index 87dfe5ac9..000000000 --- a/packages/oruga/src/directives/trapFocus.js +++ /dev/null @@ -1,59 +0,0 @@ -const findFocusable = (element, programmatic = false) => { - if (!element) { - return null - } - if (programmatic) { - return element.querySelectorAll(`*[tabindex="-1"]`) - } - return element.querySelectorAll(`a[href]:not([tabindex="-1"]), - area[href], - input:not([disabled]), - select:not([disabled]), - textarea:not([disabled]), - button:not([disabled]), - iframe, - object, - embed, - *[tabindex]:not([tabindex="-1"]), - *[contenteditable]`) -} - -let onKeyDown - -const bind = (el, { value = true }) => { - if (value) { - let focusable = findFocusable(el) - let focusableProg = findFocusable(el, true) - - if (focusable && focusable.length > 0) { - onKeyDown = (event) => { - // Need to get focusable each time since it can change between key events - // ex. changing month in a datepicker - focusable = findFocusable(el) - focusableProg = findFocusable(el, true) - const firstFocusable = focusable[0] - const lastFocusable = focusable[focusable.length - 1] - - if (event.target === firstFocusable && event.shiftKey && event.key === 'Tab') { - event.preventDefault() - lastFocusable.focus() - } else if ((event.target === lastFocusable || Array.from(focusableProg).indexOf(event.target) >= 0) && !event.shiftKey && event.key === 'Tab') { - event.preventDefault() - firstFocusable.focus() - } - } - el.addEventListener('keydown', onKeyDown) - } - } -} - -const unbind = (el) => { - el.removeEventListener('keydown', onKeyDown) -} - -const directive = { - bind, - unbind -} - -export default directive diff --git a/packages/oruga/src/index.js b/packages/oruga/src/index.js deleted file mode 100644 index 076a91518..000000000 --- a/packages/oruga/src/index.js +++ /dev/null @@ -1,37 +0,0 @@ -import * as plugins from './components/plugins' - -import { merge } from './utils/helpers' -import { setOptions, setVueInstance, Programmatic as ConfigProgrammatic, getOptions } from './utils/config' -import { use, registerComponentProgrammatic, registerPlugin } from './utils/plugins' - -const Oruga = { - install(Vue, options = {}) { - setVueInstance(Vue) - // Options - const defaultConfig = getOptions() - setOptions(merge(defaultConfig, options, true)) - // Components - for (const componentKey in plugins) { - registerPlugin(Vue, plugins[componentKey]) - } - // Config component - registerComponentProgrammatic(Vue, 'config', ConfigProgrammatic) - } -} - -use(Oruga) - -export default Oruga - -// export all vue components -export * from './components' -// export all components as vue plugin -export * from './components/plugins' -// export programmatic components -export { LoadingProgrammatic } from './components/loading' -export { ModalProgrammatic } from './components/modal' -export { NotificationProgrammatic } from './components/notification' -export { Programmatic as ConfigProgrammatic } from './utils/config' - -// export config plugin -export { Plugin as Config } from './utils/config' diff --git a/packages/oruga/src/scss/components/_autocomplete.scss b/packages/oruga/src/scss/components/_autocomplete.scss deleted file mode 100644 index 5eba2003b..000000000 --- a/packages/oruga/src/scss/components/_autocomplete.scss +++ /dev/null @@ -1,63 +0,0 @@ - -/* @docs */ -$autocomplete-item-color: #000000 !default; -$autocomplete-item-disabled-opacity: $base-disabled-opacity !default; -$autocomplete-item-font-size: $base-font-size !default; -$autocomplete-item-hover-background-color: #f5f5f5 !default; -$autocomplete-item-hover-color: #000000 !default; -$autocomplete-item-line-height: $base-line-height !default; -$autocomplete-item-padding: .375rem 1rem !default; -$autocomplete-menu-background: #ffffff !default; -$autocomplete-menu-border-radius: $base-border-radius !default; -$autocomplete-menu-box-shadow: 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) !default; -$autocomplete-menu-margin: 0 !default; -$autocomplete-menu-max-height: 200px !default; -$autocomplete-menu-padding: .5rem 0 .5rem 0 !default; -$autocomplete-menu-zindex: 20 !default; -/* @docs */ - -.o-acp { - position: relative; - &__menu { - display: block; - width: 100%; - position: absolute; - left: 0; - top: 100%; - overflow: auto; - @include avariable('z-index', 'autocomplete-menu-zindex', $autocomplete-menu-zindex); - @include avariable('background-color', 'autocomplete-menu-background', $autocomplete-menu-background); - @include avariable('border-radius', 'autocomplete-menu-border-radius', $autocomplete-menu-border-radius); - @include avariable('box-shadow', 'autocomplete-menu-box-shadow', $autocomplete-menu-box-shadow); - @include avariable('padding', 'autocomplete-menu-padding', $autocomplete-menu-padding); - @include avariable('margin', 'autocomplete-menu-margin', $autocomplete-menu-margin); - @include avariable('max-height', 'autocomplete-menu-max-height', $autocomplete-menu-max-height); - &--top { - top: auto; - bottom: 100%; - } - } - &__item { - display: block; - position: relative; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - cursor: pointer; - @include avariable('color', 'autocomplete-item-color', $autocomplete-item-color); - @include avariable('font-size', 'autocomplete-item-font-size', $autocomplete-item-font-size); - @include avariable('line-height', 'autocomplete-item-line-height', $autocomplete-item-line-height); - @include avariable('padding', 'autocomplete-item-padding', $autocomplete-item-padding); - &-group-title, &--empty { - pointer-events: none; - @include avariable('opacity', 'autocomplete-item-disabled-opacity', $autocomplete-item-disabled-opacity); - } - &--hover, &:hover { - @include avariable('background', 'autocomplete-item-hover-background-color', $autocomplete-item-hover-background-color); - @include avariable('color', 'autocomplete-item-hover-color', $autocomplete-item-hover-color); - } - } - &--expanded { - width: 100%; - } -} diff --git a/packages/oruga/src/scss/components/_button.scss b/packages/oruga/src/scss/components/_button.scss deleted file mode 100644 index 35e1ce19f..000000000 --- a/packages/oruga/src/scss/components/_button.scss +++ /dev/null @@ -1,161 +0,0 @@ - -/* @docs */ -$button-background-color: $primary !default; -$button-color: $primary-invert !default; -$button-border-radius: $base-border-radius !default; -$button-border: 1px solid $button-background-color !default; -$button-box-shadow: none !default; -$button-font-weight: 400 !default; -$button-line-height: $base-line-height !default; -$button-margin-icon-to-text: .1875em !default; -$button-margin: 0 !default; -$button-height: $control-height !default; -$button-padding: $control-padding-vertical .75em !default; -$button-rounded-border-radius: $base-rounded-border-radius !default; -$button-disabled-opacity: $base-disabled-opacity !default; -$button-outlined-background-color: transparent !default; -/* @docs */ - - -@keyframes spinAround { - from { - transform: rotate(0deg); - } - - to { - transform: rotate(359deg); - } -} - -.o-btn { - -moz-appearance: none; - -webkit-appearance: none; - position: relative; - display: inline-flex; - cursor: pointer; - text-align: center; - white-space: nowrap; - align-items: center; - justify-content: center; - vertical-align: top; - text-decoration: none; - @include unselectable; - @include avariable('background-color', 'button-background-color', $button-background-color); - @include avariable('color', 'button-color', $button-color); - @include avariable('padding', 'button-padding', $button-padding); - @include avariable('border', 'button-border', $button-border); - @include avariable('border-radius', 'button-border-radius', $button-border-radius); - @include avariable('box-shadow', 'button-box-shadow', $button-box-shadow); - @include avariable('font-size', 'base-font-size', $base-font-size); - @include avariable('font-weight', 'button-font-weight', $button-font-weight); - @include avariable('line-height', 'button-line-height', $button-line-height); - @include avariable('margin', 'button-margin', $button-margin); - @include avariable('height', 'button-height', $button-height); - &__wrapper { - @include side-flex-gap($button-margin-icon-to-text); - display: inline-flex; - align-items: center; - justify-content: center; - position: relative; - width: 100%; - } - &__label { - width: 100%; - } - &--expanded { - width: 100%; - } - &--rounded { - @include avariable('border-radius', 'button-rounded-border-radius', $button-rounded-border-radius); - } - &--disabled { - @include avariable('opacity', 'button-disabled-opacity', $button-disabled-opacity); - cursor: not-allowed; - pointer-events: none; - } - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('button-font-size-' + #{$name}), $value); - } - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - border-color: transparent; - @include avariable('background-color', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-invert-' + #{$name}), $color-invert); - &:hover { - // background-color: darken($color, 2.5%) - // IE 11 needs polyfill - filter: brightness(97.5%); - } - } - } - &--outlined { - @include avariable('background-color', 'button-outlined-background-color', $button-outlined-background-color); - @include avariable('border-color', 'button-background-color', $button-background-color); - @include avariable('color', 'button-background-color', $button-background-color); - &:hover { - border-color: transparent; - @include avariable('background-color', 'button-background-color', $button-background-color); - @include avariable('color', 'button-color', $button-color); - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &-#{$name} { - @include avariable('background-color', 'button-outlined-background-color', $button-outlined-background-color); - @include avariable('border-color', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-' + #{$name}), $color); - &:hover { - border-color: transparent; - @include avariable('background-color', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-invert-' + #{$name}), $color-invert); - } - } - } - } - &--loading{ - color: transparent!important; - pointer-events: none; - } - &--loading::after{ - -webkit-animation: spinAround 500ms infinite linear; - left: calc(50% - 0.5em); - top: calc(50% - 0.5em); - position: absolute!important; - border: 2px solid #dbdbdb; - border-radius: 9999px; - border-right-color: transparent; - border-top-color: transparent; - content: ""; - display: block; - height: 1em; - width: 1em; - } - &--inverted { - @include avariable('background-color', 'button-color', $button-color); - @include avariable('border-color', 'button-color', $button-color); - @include avariable('color', 'button-background-color', $button-background-color); - &:hover { - // background-color: darken($color-invert, 5%) - // IE 11 needs polyfill - filter: brightness(95%); - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &-#{$name} { - @include avariable('background-color', ('variant-invert-' + #{$name}), $color-invert); - @include avariable('border-color', ('variant-invert-' + #{$name}), $color-invert); - @include avariable('color', ('variant-' + #{$name}), $color); - &:hover { - // background-color: darken($color-invert, 5%) - // IE 11 needs polyfill - filter: brightness(95%); - } - } - } - } -} diff --git a/packages/oruga/src/scss/components/_carousel.scss b/packages/oruga/src/scss/components/_carousel.scss deleted file mode 100644 index 7b4a1815d..000000000 --- a/packages/oruga/src/scss/components/_carousel.scss +++ /dev/null @@ -1,136 +0,0 @@ -/* @docs */ -$carousel-arrow-background: $white !default; -$carousel-arrow-color: $primary !default; -$carousel-arrow-icon-spaced: 1.5rem !default; -$carousel-arrow-top: 50% !default; -$carousel-arrow-size: 1.5rem !default; -$carousel-arrow-border-radius: $base-rounded-border-radius !default; -$carousel-arrow-border: 1px solid $carousel-arrow-background !default; -$carousel-arrow-transition: $speed-slow $easing !default; -$carousel-indicators-background: rgba($white , 0.50) !default; -$carousel-indicators-padding: .5rem !default; -$carousel-indicator-margin: 0 .5rem 0 0 !default; -$carousel-indicator-color: $primary !default; -$carousel-indicator-background: $white !default; -$carousel-indicator-border: 1px solid $carousel-indicator-color !default; -$carousel-indicator-active-background: $carousel-indicator-color !default; -$carousel-indicator-active-border: 1px solid $carousel-indicator-color !default; -$carousel-indicator-transition: $speed-slow $easing !default; -$carousel-indicator-size: 10px !default; -$carousel-indicator-dots-border-radius: $base-border-radius !default; -$carousel-indicator-lines-height: 5px !default; -$carousel-indicator-lines-width: 25px !default; -$carousel-items-transition: all $speed-slower ease-out 0s !default; -$carousel-item-border: 2px solid transparent !default; -$carousel-overlay-background: hsla(0,0%,4%,.86) !default; -$carousel-overlay-zindex: 40 !default; -/* @docs */ - -.o-car { - @include unselectable; - position: relative; - overflow: hidden; - width: 100%; - &__overlay { - bottom: 0; - left: 0; - right: 0; - top: 0; - align-items: center; - flex-direction: column; - justify-content: center; - display: flex; - max-height: 100vh; - position: fixed; - @include avariable('background-color', 'carousel-overlay-background', $carousel-overlay-background); - @include avariable('z-index', 'carousel-overlay-zindex', $carousel-overlay-zindex); - } - &__scene { - position: relative; - width: 100%; - } - &__items { - display: flex; - width: 100%; - &:not(&--dragging) { - @include avariable('transition', 'carousel-items-transition', $carousel-items-transition); - } - } - &__item { - @include avariable('border', 'carousel-item-border', $carousel-item-border); - flex-shrink: 0; - } - &__indicators { - width: 100%; - display: flex; - align-items: center; - justify-content: center; - @include avariable('padding', 'carousel-indicators-padding', $carousel-indicators-padding); - @include avariable('background', 'carousel-indicators-background', $carousel-indicators-background); - &--inside { - position: absolute; - &--bottom { - bottom: 0; - } - &--top { - top: 0; - } - } - } - &__indicator { - &:not(:last-child) { - @include avariable('margin', 'carousel-indicator-margin', $carousel-indicator-margin); - } - &__item { - display: block; - @include avariable('border', 'carousel-indicator-border', $carousel-indicator-border); - @include avariable('background', 'carousel-indicator-background', $carousel-indicator-background); - @include avariable('transition', 'carousel-indicator-transition', $carousel-indicator-transition); - &--active, :hover { - @include avariable('background', 'carousel-indicator-active-background', $carousel-indicator-active-background); - @include avariable('border', 'carousel-indicator-active-border', $carousel-indicator-active-border); - } - &--boxes { - @include avariable('width', 'carousel-indicator-size', $carousel-indicator-size); - @include avariable('height', 'carousel-indicator-size', $carousel-indicator-size); - } - &--dots { - @include avariable('border-radius', 'carousel-indicator-dots-border-radius', $carousel-indicator-dots-border-radius); - @include avariable('width', 'carousel-indicator-size', $carousel-indicator-size); - @include avariable('height', 'carousel-indicator-size', $carousel-indicator-size); - } - &---lines { - @include avariable('width', 'carousel-indicator-lines-height', $carousel-indicator-lines-height); - @include avariable('height', 'carousel-indicator-lines-width', $carousel-indicator-lines-width); - } - } - } - - &__arrow__icon { - cursor: pointer; - @include avariable('background', 'carousel-arrow-background', $carousel-arrow-background); - @include avariable('color', 'carousel-arrow-color', $carousel-arrow-color); - @include avariable('width', 'carousel-arrow-size', $carousel-arrow-size); - @include avariable('height', 'carousel-arrow-size', $carousel-arrow-size); - @include avariable('border-radius', 'carousel-arrow-border-radius', $carousel-arrow-border-radius); - @include avariable('border', 'carousel-arrow-border', $carousel-arrow-border); - @include avariable('transition', 'carousel-arrow-transition', $carousel-arrow-transition); - } - &__arrow__icon-prev, - &__arrow__icon-next { - position: absolute; - @include avariable('top', 'carousel-arrow-top', $carousel-arrow-top); - @include evariable( - 'transform', 'translateY($length)', - eparam('$length', variable('carousel-arrow-top', -$carousel-arrow-top)) - ); - z-index: 1; - } - &__arrow__icon-prev { - @include avariable('left', 'carousel-arrow-icon-spaced', $carousel-arrow-icon-spaced); - } - &__arrow__icon-next { - @include avariable('right', 'carousel-arrow-icon-spaced', $carousel-arrow-icon-spaced); - } - -} diff --git a/packages/oruga/src/scss/components/_checkbox.scss b/packages/oruga/src/scss/components/_checkbox.scss deleted file mode 100644 index 353062761..000000000 --- a/packages/oruga/src/scss/components/_checkbox.scss +++ /dev/null @@ -1,111 +0,0 @@ -/* @docs */ -$checkbox-active-background-color: $primary !default; -$checkbox-background-color: $primary !default; -$checkbox-border-color: $primary !default; -$checkbox-border-radius: $base-border-radius !default; -$checkbox-border-width: 2px !default; -$checkbox-checked-box-shadow-length: 0 0 0.5em !default; -$checkbox-checked-box-shadow-opacity: 0.8 !default; -$checkbox-checkmark-color: $primary-invert !default; -$checkbox-disabled-opacity: $base-disabled-opacity !default; -$checkbox-label-padding: 0 0 0 0.5em !default; -$checkbox-margin-sibiling: 0.5em !default; -$checkbox-size: 1rem !default; -$checkbox-line-height: 1.5 !default; -/* @docs */ - -@function svg_checkmark($color) { - $start: '<svg width="100%" height="100%" viewBox="0 0 234 225" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">'; - $content: '<g transform="matrix(4.16667,0,0,4.16667,0,0)"><g transform="matrix(3.13817,0,0,3.13817,-69.2796,-49.5156)"><path style="fill:#{$color}" d="M22.504,26.219L28.637,32.386L39.494,18.284L37.348,16.379L28,27.725L24.46,24.196L22.504,26.219Z"></path></g></g>'; - $end: '</svg>'; - @return svg-encode('#{$start}#{$content}#{$end}'); -} - -@function svg_indeterminate($color) { - $start: '<svg width="100%" height="100%" viewBox="0 0 417 417" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">'; - $content: '<g transform="matrix(4.16667,0,0,4.16667,0,0)"><g transform="matrix(6.96176,0,0,20.5682,-118.661,-806.753)"><path style="fill:#{$color}" d="M31.265,41.654C31.265,41.324 30.474,41.057 29.5,41.057L18.953,41.057C17.979,41.057 17.188,41.324 17.188,41.654C17.188,41.984 17.979,42.252 18.953,42.252L29.5,42.252C30.474,42.252 31.265,41.984 31.265,41.654Z"/></g></g>'; - $end: '</svg>'; - @return svg-encode('#{$start}#{$content}#{$end}'); -} - -.o-chk { - display: inline-flex; - align-items: center; - cursor: pointer; - position: relative; - @include unselectable; - @include avariable('line-height', 'checkbox-line-height', $checkbox-line-height); - @include avariable('margin-right', 'checkbox-margin-sibiling', $checkbox-margin-sibiling); - - &__check { - @include avariable('width', 'checkbox-size', $checkbox-size); - @include avariable('height', 'checkbox-size', $checkbox-size); - outline: none; - margin: 0; - vertical-align: top; - background-position: center; - background-size: contain; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - -webkit-print-color-adjust: exact; - print-color-adjust: exact; - flex-shrink: 0; - cursor: pointer; - background-repeat: no-repeat; - @include avariable('background-color', 'checkbox-background-color', $checkbox-background-color); - @include avariable('border-radius', 'checkbox-border-radius', $checkbox-border-radius); - @include avariable('border-width', 'checkbox-border-width', $checkbox-border-width); - @include avariable('border-color', 'checkbox-border-color', $checkbox-border-color); - border-style: solid; - transition-property: background; - @include avariable('transition-duration', 'transition-duration', $speed-slow); - @include avariable('transition-timing-function', 'transition-timing', $easing); - - &--checked { - @include avariable( - 'background-color', - 'checkbox-active-background-color', - $checkbox-active-background-color - ); - @include avariable('border-color', 'checkbox-active-background-color', $checkbox-active-background-color); - background-image: url(svg_checkmark(variable('checkbox-checkmark-color', $checkbox-checkmark-color))); - } - &--indeterminate { - @include avariable( - 'background-color', - 'checkbox-active-background-color', - $checkbox-active-background-color - ); - @include avariable('border-color', 'checkbox-active-background-color', $checkbox-active-background-color); - background-image: url(svg_indeterminate(variable('checkbox-checkmark-color', $checkbox-checkmark-color))); - } - } - &__label { - @include avariable('padding', 'checkbox-label-padding', $checkbox-label-padding); - } - &--disabled { - @include avariable('opacity', 'checkbox-disabled-opacity', $checkbox-disabled-opacity); - } - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('checkbox-font-size-' + #{$name}), $value); - } - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - .o-chk__check { - @include avariable('border-color', ('variant-' + #{$name}), $color); - @include avariable('background-color', ('variant-' + #{$name}), $color); - } - .o-chk__check--checked { - background-image: url(svg_checkmark(variable(('variant-invert-' + #{$name}), $color-invert))); - } - .o-chk__check--indeterminate { - background-image: url(svg_indeterminate(variable(('variant-invert-' + #{$name}), $color-invert))); - } - } - } -} diff --git a/packages/oruga/src/scss/components/_collapse.scss b/packages/oruga/src/scss/components/_collapse.scss deleted file mode 100644 index 2dcf01709..000000000 --- a/packages/oruga/src/scss/components/_collapse.scss +++ /dev/null @@ -1,11 +0,0 @@ -/* @docs */ -/* @docs */ - -.o-clps { - &__trigger { - cursor: pointer; - } - &__content { - display: inherit; - } -} diff --git a/packages/oruga/src/scss/components/_datepicker.scss b/packages/oruga/src/scss/components/_datepicker.scss deleted file mode 100644 index 10d1c776d..000000000 --- a/packages/oruga/src/scss/components/_datepicker.scss +++ /dev/null @@ -1,273 +0,0 @@ -/* @docs */ -$datepicker-font-size: $base-font-size !default; -$datepicker-box-line-height: $base-line-height !default; -$datepicker-box-padding: .375rem 1rem !default; -$datepicker-header-padding: 0 0 0.875rem 0 !default; -$datepicker-header-margin: 0 0 0.875rem 0 !default; -$datepicker-header-border-bottom: 1px solid $grey-lighter !default; -$datepicker-footer-padding: 0.875rem .5rem 0 .5rem !default; -$datepicker-footer-margin: 0.875rem 0 0.875rem 0 !default; -$datepicker-footer-border-top: 1px solid $grey-lighter !default; -$datepicker-table-head-padding: 0 0 0.875rem 0 !default; -$datepicker-table-head-margin: 0 0 0.875rem 0 !default; -$datepicker-table-head-border-bottom: 1px solid $grey-lighter !default; -$datepicker-table-head-item-color: $grey !default; -$datepicker-table-head-item-font-weight: 600 !default; -$datepicker-item-today-border: solid 1px rgba($primary, 0.5) !default; -$datepicker-item-selectable-color: $grey-dark !default; -$datepicker-item-disabled-color: $grey-light !default; -$datepicker-item-border-radius: $base-border-radius !default; -$datepicker-item-padding: 0.5rem 0.75rem !default; -$datepicker-item-selected-color: $primary-invert !default; -$datepicker-item-selected-background-color: $primary !default; -$datepicker-item-selected-border-radius: 0 !default; -$datepicker-item-selected-within-background-color: rgba($datepicker-item-selected-background-color, 0.5) !default; -$datepicker-item-hovered-background-color: $grey !default; -$datepicker-item-hovered-color: $grey-lighter !default; -$datepicker-item-hovered-background-color: #f5f5f5 !default; -$datepicker-item-hovered-within-background-color: rgba($datepicker-item-hovered-background-color, 0.5) !default; -$datepicker-item-nearby-color: $grey-light !default; -$datepicker-events-item-padding: .3rem .75rem .75rem !default; -$datepicker-event-background-color: $grey-light !default; -$datepicker-event-dots-size: .35em !default; -$datepicker-event-dots-margin: 0 .1em !default; -$datepicker-event-bars-height: .25em !default; -$datepicker-btn-border-color: $grey-lighter !default; -$datepicker-btn-border-radius: $base-border-radius !default; -$datepicker-btn-border: 1px solid transparent !default; -$datepicker-btn-color: #363636 !default; -$datepicker-btn-height: 2.25em !default; -$datepicker-btn-hover-border-color: $grey-light !default; -$datepicker-btn-hover-color: #363636 !default; -$datepicker-btn-line-height: $base-line-height !default; -$datepicker-btn-margin: .25rem !default; -$datepicker-btn-min-width: 2.25em !default; -$datepicker-btn-padding: .5em .5em !default; -/* @docs */ - -.o-dpck { - @include avariable('font-size', 'datepicker-font-size', $datepicker-font-size); - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('datepicker-font-size-' + #{$name}), $value); - } - } - &__dropdown { - width: 100%; - } - &__box { - display: block; - position: relative; - @include avariable('line-height', 'datepicker-box-line-height', $datepicker-box-line-height); - @include avariable('padding', 'datepicker-box-padding', $datepicker-box-padding); - } - &__header { - @include avariable('padding', 'datepicker-header-padding', $datepicker-header-padding); - @include avariable('margin', 'datepicker-header-margin', $datepicker-header-margin); - @include avariable('border-bottom', 'datepicker-header-border-bottom', $datepicker-header-border-bottom); - &__buttons { - align-items: center; - display: flex; - justify-content: center; - text-align: center; - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('datepicker-font-size-' + #{$name}), $value); - } - } - } - &__previous, &__next { - justify-content: center; - text-align: center; - text-decoration: none; - cursor: pointer; - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - box-shadow: none; - display: inline-flex; - position: relative; - vertical-align: top; - @include unselectable; - @include avariable('line-height', 'datepicker-btn-line-height', $datepicker-btn-line-height); - @include avariable('border', 'datepicker-btn-border', $datepicker-btn-border); - @include avariable('border-radius', 'datepicker-btn-border-radius', $datepicker-btn-border-radius); - @include avariable('border-color', 'datepicker-btn-border-color', $datepicker-btn-border-color); - @include avariable('color', 'datepicker-btn-color', $datepicker-btn-color); - @include avariable('min-width', 'datepicker-btn-min-width', $datepicker-btn-min-width); - @include avariable('height', 'datepicker-btn-height', $datepicker-btn-height); - @include avariable('padding', 'datepicker-btn-padding', $datepicker-btn-padding); - @include avariable('margin', 'datepicker-btn-margin', $datepicker-btn-margin); - &:hover { - text-decoration: none; - @include avariable('border-color', 'datepicker-btn-hover-border-color', $datepicker-btn-hover-border-color); - @include avariable('color', 'datepicker-btn-hover-color', $datepicker-btn-hover-color); - } - } - &__previous { - order: 1; - } - &__next { - order: 3; - } - &__list { - order: 2; - align-items: center; - display: flex; - justify-content: center; - text-align: center; - list-style: none; - flex-wrap: wrap; - margin: 0; - padding: 0; - @include side-flex-gap($datepicker-btn-margin * 0.5); - } - } - &__footer { - @include avariable('padding', 'datepicker-header-padding', $datepicker-footer-padding); - @include avariable('margin', 'datepicker-header-margin', $datepicker-footer-margin); - @include avariable('border-top', 'datepicker-header-border-top', $datepicker-footer-border-top); - } - &__table, &__month { - display: table; - margin: 0 auto 0 auto; - &__head { - display: table-header-group; - @include avariable('padding', 'datepicker-table-head-padding', $datepicker-table-head-padding); - @include avariable('margin', 'datepicker-table-head-margin', $datepicker-table-head-margin); - @include avariable('border-bottom', 'datepicker-table-head-border-bottom', $datepicker-table-head-border-bottom); - } - &__body { - display: table-row-group; - } - &__row { - display: table-row; - } - &__head-cell { - @include avariable('padding', 'datepicker-table-head-item-padding', $datepicker-table-head-item-color); - @include avariable('font-weight', 'datepicker-table-head-item-font-weight', $datepicker-table-head-item-font-weight); - } - &__cell { - text-align: center; - vertical-align: middle; - display: table-cell; - text-decoration: none; - @include avariable('border-radius', 'datepicker-item-border-radius', $datepicker-item-border-radius); - @include avariable('padding', 'datepicker-item-padding', $datepicker-item-padding); - &--unselectable { - @include avariable('color', 'datepicker-item-disabled-color', $datepicker-item-disabled-color); - } - &--today { - @include avariable('border', 'datepicker-item-today-border', $datepicker-item-today-border); - } - &--selectable { - @include avariable('color', 'datepicker-item-selectable-color', $datepicker-item-selectable-color); - } - &--first-hovered { - @include avariable('background-color', 'datepicker-item-hovered-background-color', $datepicker-item-hovered-background-color); - @include avariable('color', 'datepicker-item-hovered-color', $datepicker-item-hovered-color); - @include avariable('border-bottom-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - @include avariable('border-top-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - } - &--within-hovered { - @include avariable('background-color', 'datepicker-item-hovered-within-background-color', $datepicker-item-hovered-within-background-color); - @include avariable('color', 'datepicker-item-hovered-color', $datepicker-item-hovered-color); - @include avariable('border-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - } - &--last-hovered { - @include avariable('background-color', 'datepicker-item-hovered-background-color', $datepicker-item-hovered-background-color); - @include avariable('color', 'datepicker-item-hovered-color', $datepicker-item-hovered-color); - @include avariable('border-bottom-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - @include avariable('border-top-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - } - &--selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) { - @include avariable('background-color', 'datepicker-item-selected-background-color', $datepicker-item-selected-background-color); - @include avariable('color', 'datepicker-item-selected-color', $datepicker-item-selected-color); - } - &--first-selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) { - @include avariable('background-color', 'datepicker-item-selected-background-color', $datepicker-item-selected-background-color); - @include avariable('color', 'datepicker-item-selected-color', $datepicker-item-selected-color); - @include avariable('border-bottom-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - @include avariable('border-top-right-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - } - &--within-selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) { - @include avariable('background-color', 'datepicker-item-selected-within-background-color', $datepicker-item-selected-within-background-color); - @include avariable('border-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - } - &--last-selected:not(&--first-hovered):not(&--within-hovered):not(&--last-hovered) { - @include avariable('background-color', 'datepicker-item-selected-background-color', $datepicker-item-selected-background-color); - @include avariable('color', 'datepicker-item-selected-color', $datepicker-item-selected-color); - @include avariable('border-bottom-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - @include avariable('border-top-left-radius', 'datepicker-item-selected-border-radius', $datepicker-item-selected-border-radius); - } - &--nearby:not(&--selected) { - @include avariable('color', 'datepicker-item-nearby-color', $datepicker-item-nearby-color); - } - &--invisible { - visibility: hidden; - } - &--events { - @include avariable('padding', 'datepicker-events-item-padding', $datepicker-events-item-padding); - position: relative; - } - } - &__events { - display: flex; - justify-content: center; - position: absolute; - width: 100%; - left: 0; - bottom: 15%; - } - &__event { - @include avariable('background-color', 'datepicker-event-background-color', $datepicker-event-background-color); - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - background-color: $color; - @include avariable('background-color', ('variant-' + #{$name}), $color); - } - } - &--dots { - border-radius: 50%; - @include avariable('margin', 'datepicker-event-dots-margin', $datepicker-event-dots-margin); - @include avariable('height', 'datepicker-event-dots-size', $datepicker-event-dots-size); - @include avariable('width', 'datepicker-event-dots-size', $datepicker-event-dots-size); - } - &--bars { - @include avariable('height', 'datepicker-event-bars-height', $datepicker-event-bars-height); - width: 100%; - } - } - } - &__month__table { - display: inline-flex; - flex-wrap: wrap; - flex-direction: row; - width: 17rem; - } - &__month__cell { - display: flex; - align-items: center; - justify-content: center; - width: 33.33%; - height: 2.5rem; - } - &--mobile { - .o-dpck__header__previous { - order: 1; - flex-grow: 1; - flex-shrink: 1; - } - .o-dpck__header__next { - order: 3; - flex-grow: 1; - flex-shrink: 1; - } - .o-dpck__header__list { - order: 2; - flex-grow: 1; - flex-shrink: 1; - } - } -} diff --git a/packages/oruga/src/scss/components/_datetimepicker.scss b/packages/oruga/src/scss/components/_datetimepicker.scss deleted file mode 100644 index 385ea7994..000000000 --- a/packages/oruga/src/scss/components/_datetimepicker.scss +++ /dev/null @@ -1,10 +0,0 @@ -/* @docs */ -/* @docs */ - -.o-dtpck { - &__time { - display: flex; - justify-content: center; - align-items: center; - } -} diff --git a/packages/oruga/src/scss/components/_dropdown.scss b/packages/oruga/src/scss/components/_dropdown.scss deleted file mode 100644 index 6172149a3..000000000 --- a/packages/oruga/src/scss/components/_dropdown.scss +++ /dev/null @@ -1,132 +0,0 @@ - -/* @docs */ -$dropdown-disabled-opacity: $base-disabled-opacity !default; -$dropdown-item-active-background-color: $primary !default; -$dropdown-item-active-color: $primary-invert !default; -$dropdown-item-color: #000000 !default; -$dropdown-item-disabled-opacity: $base-disabled-opacity !default; -$dropdown-item-font-size: $base-font-size !default; -$dropdown-item-hover-background-color: #f5f5f5 !default; -$dropdown-item-hover-color: #000000 !default; -$dropdown-item-line-height: $base-line-height !default; -$dropdown-item-padding: .375rem 1rem !default; -$dropdown-item-font-weight: 400 !default; -$dropdown-menu-background: #ffffff !default; -$dropdown-menu-border-radius: $base-border-radius !default; -$dropdown-menu-box-shadow: 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02) !default; -$dropdown-menu-margin: 0 !default; -$dropdown-menu-padding: .5rem 0 .5rem 0 !default; -$dropdown-menu-width: 12rem !default; -$dropdown-menu-zindex: 20 !default; -$dropdown-mobile-max-height: calc(100vh - 120px) !default; -$dropdown-mobile-max-width: 460px !default; -$dropdown-mobile-overlay-color: rgba(#000000, 0.86) !default; -$dropdown-mobile-overlay-zindex: 40!default; -$dropdown-mobile-width: calc(100vw - 40px) !default; -$dropdown-mobile-zindex: 50 !default; -/* @docs */ - -.o-drop { - display: inline-flex; - position: relative; - vertical-align: top; - &--inline { - display: inline; - .o-drop__menu { - position: static; - display: inline-block; - padding: 0; - } - } - &__overlay { - position: fixed; - bottom: 0; - left: 0; - right: 0; - top: 0; - cursor: pointer; - display: none; - @include avariable('background-color', 'dropdown-mobile-overlay-color', $dropdown-mobile-overlay-color); - @include avariable('z-index', 'dropdown-mobile-overlay-zindex', $dropdown-mobile-overlay-zindex); - } - &__trigger { - width: 100%; - } - &__menu { - position: absolute; - left: 0; - top: 100%; - display: block; - @include avariable('min-width', 'dropdown-menu-width', $dropdown-menu-width); - @include avariable('z-index', 'dropdown-menu-zindex', $dropdown-menu-zindex); - @include avariable('background-color', 'dropdown-menu-background', $dropdown-menu-background); - @include avariable('border-radius', 'dropdown-menu-border-radius', $dropdown-menu-border-radius); - @include avariable('box-shadow', 'dropdown-menu-box-shadow', $dropdown-menu-box-shadow); - @include avariable('padding', 'dropdown-menu-padding', $dropdown-menu-padding); - @include avariable('margin', 'dropdown-menu-margin', $dropdown-menu-margin); - &--top-left { - top: auto; - bottom: 100%; - right: 0; - left: auto; - } - &--bottom-left { - right: 0; - left: auto; - } - &--top-right { - top: auto; - bottom: 100%; - } - } - &__item { - display: block; - position: relative; - cursor: pointer; - @include avariable('color', 'dropdown-item-color', $dropdown-item-color); - @include avariable('font-size', 'dropdown-item-font-size', $dropdown-item-font-size); - @include avariable('font-weight', 'dropdown-item-font-weight', $dropdown-item-font-weight); - @include avariable('line-height', 'dropdown-item-line-height', $dropdown-item-line-height); - @include avariable('padding', 'dropdown-item-padding', $dropdown-item-padding); - &--disabled { - @include avariable('opacity', 'dropdown-item-disabled-opacity', $dropdown-item-disabled-opacity); - pointer-events: none; - } - &--active { - @include avariable('background-color', 'dropdown-item-active-background-color', $dropdown-item-active-background-color); - @include avariable('color', 'dropdown-item-active-color', $dropdown-item-active-color); - } - &:hover:not(&--active) { - @include avariable('background-color', 'dropdown-item-hover-background-color', $dropdown-item-hover-background-color); - @include avariable('color', 'dropdown-item-hover-color', $dropdown-item-hover-color); - } - } - &--expanded { - width: 100%; - .o-drop__menu { - width: 100%; - } - } - &--disabled { - @include avariable('opacity', 'dropdown-disabled-opacity', $dropdown-disabled-opacity); - pointer-events: none; - } - &--mobile { - > .o-drop__menu { - position: fixed; - top: 25%; - left: 50%; - bottom: auto; - right: auto; - transform: translate3d(-50%, -25%, 0); - overflow-y: auto; - @include avariable('width', 'dropdown-mobile-width', $dropdown-mobile-width); - @include avariable('max-width', 'dropdown-mobile-max-width', $dropdown-mobile-max-width); - @include avariable('max-height', 'dropdown-mobile-max-height', $dropdown-mobile-max-height); - @include avariable('z-index', 'dropdown-mobile-zindex', $dropdown-mobile-zindex); - } - > .o-drop__overlay { - display: block; - } - } -} diff --git a/packages/oruga/src/scss/components/_field.scss b/packages/oruga/src/scss/components/_field.scss deleted file mode 100644 index 50784d895..000000000 --- a/packages/oruga/src/scss/components/_field.scss +++ /dev/null @@ -1,107 +0,0 @@ - -/* @docs */ -$field-label-color: #363636 !default; -$field-label-font-weight: 600 !default; -$field-margin-bottom: .75rem !default; -$field-message-font-size: .75rem !default; -$field-message-margin-top: .25rem !default; -$field-margin-right: .37rem !default; -$field-horizontal-label-margin: 0 1.5rem 0 0 !default; -/* @docs */ - -.o-field { - flex-grow: 1; - &:not(:last-child) { - @include avariable('margin-bottom', 'field-margin-bottom', $field-margin-bottom); - } - &__label { - display: block; - @include avariable('color', 'field-label-color', $field-label-color); - @include avariable('font-size', 'base-font-size', $base-font-size); - @include avariable('font-weight', 'field-label-font-weight', $field-label-font-weight); - @each $name, $value in $sizes { - &-#{$name} { - @include avariable('font-size', ('field-font-size-' + #{$name}), $value); - } - } - } - &__message { - display: block; - @include avariable('font-size', 'field-message-font-size', $field-message-font-size); - @include avariable('margin-top', 'field-message-margin-top', $field-message-margin-top); - @each $name, $pair in $colors { - $color: nth($pair, 1); - &-#{$name} { - @include avariable('color', ('variant-' + #{$name}), $color); - } - } - } - &--addons { - display: flex; - justify-content: flex-start; - > *:first-child:not(:only-child) button, - > button:first-child, - > *:first-child:not(:only-child) input, - > input:first-child, - > *:first-child:not(:only-child) select, - > select:first-child { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - > *:last-child:not(:only-child) button, - > button:last-child, - > *:last-child:not(:only-child) input, - > input:last-child, - > *:last-child:not(:only-child) select, - > select:last-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - > *:not(:first-child):not(:last-child) button, - > button:not(:first-child):not(:last-child), - > *:not(:first-child):not(:last-child) input, - > input:not(:first-child):not(:last-child), - > *:not(:first-child):not(:last-child) select, - > select:not(:first-child):not(:last-child) { - border-radius: 0; - } - } - &--grouped { - display: flex; - @include side-flex-gap($field-margin-right); - } - &--grouped-multiline { - flex-wrap: wrap; - &:last-child { - @include avariable('margin-bottom', 'field-margin-bottom', -$field-margin-bottom); - } - } - &__horizontal-body { - display: flex; - flex-basis: 0; - flex-grow: 5; - flex-shrink: 1; - @include side-flex-gap($field-margin-right); - } - &--horizontal { - display: flex; - } - &__horizontal-label { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - margin: $field-horizontal-label-margin; - text-align: right; - } - &--mobile { - .o-field__horizontal-body { - all: unset; - } - &.o-field--horizontal { - all: unset; - } - .o-field__horizontal-label { - all: unset; - } - } -} diff --git a/packages/oruga/src/scss/components/_icon.scss b/packages/oruga/src/scss/components/_icon.scss deleted file mode 100644 index e5af95670..000000000 --- a/packages/oruga/src/scss/components/_icon.scss +++ /dev/null @@ -1,43 +0,0 @@ - -/* @docs */ -$icon-spin-duration: 2s !default; -/* @docs */ - -@keyframes icon-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -.o-icon { - align-items: center; - display: inline-flex; - justify-content: center; - transition: transform $speed-slow $easing, opacity $speed $easing; - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('icon-font-size-' + #{$name}), $value); - } - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - @include avariable('color', ('variant-' + #{$name}), $color); - } - } - &--clickable { - pointer-events: auto; - cursor: pointer; - } - &--spin { - animation-name: icon-spin; - animation-iteration-count: infinite; - animation-timing-function: linear; - @include avariable('animation-duration', 'icon-spin-duration', $icon-spin-duration); - } -} diff --git a/packages/oruga/src/scss/components/_input.scss b/packages/oruga/src/scss/components/_input.scss deleted file mode 100644 index bf6daff14..000000000 --- a/packages/oruga/src/scss/components/_input.scss +++ /dev/null @@ -1,108 +0,0 @@ - -/* @docs */ -$input-background-color: #ffffff !default; -$input-border-color: $grey-lighter !default; -$input-border-style: solid !default; -$input-border-width: 1px !default; -$input-border-radius: $base-border-radius !default; -$input-rounded-border-radius: $base-rounded-border-radius !default; -$input-box-shadow: inset 0 1px 2px hsla(0,0%,4%,.1) !default; -$input-color: #363636 !default; -$input-icon-zindex: 4 !default; -$input-counter-font-size: .75rem !default; -$input-counter-margin: .25rem 0 0 .5rem !default; -$input-height: $control-height !default; -$input-line-height: $base-line-height !default; -$input-margin: 0 !default; -$input-padding: $control-padding-vertical $control-padding-horizontal !default; -$input-textarea-max-height: 600px !default; -$input-textarea-min-height: 120px !default; -$input-textarea-padding: 0.625em !default; -// @deprecated -$input-width: 100% !default; -// @deprecated -$input-max-width: 100% !default; -/* @docs */ - -.o-ctrl-input { - display: block; - position: relative; - &--expanded { - width: 100%; - flex-grow: 1; - flex-shrink: 1; - } -} - -.o-input { - -moz-appearance: none; - -webkit-appearance: none; - display: inline-flex; - position: relative; - vertical-align: top; - width: $input-width; - @include avariable('box-shadow', 'input-box-shadow', $input-box-shadow); - @include avariable('max-width', 'input-max-width', $input-max-width); - @include avariable('background-color', 'input-background-color', $input-background-color); - @include avariable('border-color', 'input-border-color', $input-border-color); - @include avariable('border-style', 'input-border-style', $input-border-style); - @include avariable('border-width', 'input-border-width', $input-border-width); - @include avariable('border-radius', 'input-border-radius', $input-border-radius); - @include avariable('color', 'input-color', $input-color); - @include avariable('font-size', 'base-font-size', $base-font-size); - @include avariable('height', 'input-height', $input-height); - @include avariable('line-height', 'input-line-height', $input-line-height); - @include avariable('padding', 'input-padding', $input-padding); - @include avariable('margin', 'input-margin', $input-margin); - &-iconspace-left { - @include avariable('padding-left', 'input-height', $input-height); - } - &-iconspace-right { - @include avariable('padding-right', 'input-height', $input-height); - } - &--rounded { - @include avariable('border-radius', 'input-rounded-border-radius', $input-rounded-border-radius); - } - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('input-font-size-' + #{$name}), $value); - } - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - @include avariable('border-color', ('variant-' + #{$name}), $color); - } - } - &__textarea { - display: block; - max-width: 100%; - min-width: 100%; - height: auto; - resize: vertical; - @include avariable('padding', 'input-textarea-padding', $input-textarea-padding); - &:not([rows]) { - @include avariable('max-height', 'input-textarea-max-height', $input-textarea-max-height); - @include avariable('min-height', 'input-textarea-min-height', $input-textarea-min-height); - } - } - &__counter { - display: block; - float: right; - @include avariable('font-size', 'input-counter-font-size', $input-counter-font-size); - @include avariable('margin', 'input-counter-margin', $input-counter-margin); - } - &__icon-left, &__icon-right { - position: absolute; - top: 0; - height: 100%; - @include avariable('width', 'input-height', $input-height); - @include avariable('z-index', 'input-icon-zindex', $input-icon-zindex); - } - &__icon-right { - right: 0; - } - &__icon-left { - left: 0; - } -} diff --git a/packages/oruga/src/scss/components/_inputitems.scss b/packages/oruga/src/scss/components/_inputitems.scss deleted file mode 100644 index 0bd9991b0..000000000 --- a/packages/oruga/src/scss/components/_inputitems.scss +++ /dev/null @@ -1,93 +0,0 @@ -/* @docs */ -$inputitems-background-color: $input-background-color !default; -$inputitems-height: calc(2em - 1px) !default; -$inputitems-padding: calc(.275em - 1px) 0 0 !default; -$inputitems-border-color: $grey-lighter !default; -$inputitems-border-style: solid !default; -$inputitems-border-width: 1px !default; -$inputitems-border-radius: $base-border-radius !default; -$inputitems-color: #363636 !default; -$inputitems-line-height: $base-line-height !default; -$inputitems-box-shadow: inset 0 1px 2px hsla(0,0%,4%,.1) !default; -$inputitems-max-width: 100% !default; -$inputitems-width: 100% !default; -$inputitems-counter-font-size: .75rem !default; -$inputitems-counter-margin: .25rem 0 0 .5rem !default; -$inputitems-item-background-color: $primary !default; -$inputitems-item-color: $primary-invert !default; -$inputitems-item-border-radius: $base-border-radius !default; -$inputitems-item-margin: 0 0 0 0.275em !default; -$inputitems-item-padding: 0 .75em 0 .75em !default; -$inputitems-margin-icon-to-text: .1875em !default; -/* @docs */ - -.o-inputit { - display: block; - &__container { - display: flex; - align-items: center; - justify-content: flex-start; - position: relative; - vertical-align: top; - flex-wrap: wrap; - @include avariable('max-width', 'inputitems-max-width', $inputitems-max-width); - @include avariable('width', 'inputitems-width', $inputitems-width); - @include avariable('padding', 'inputitems-padding', $inputitems-padding); - @include avariable('background-color', 'inputitems-background-color', $inputitems-background-color); - @include avariable('border-color', 'inputitems-border-color', $inputitems-border-color); - @include avariable('border-style', 'inputitems-border-style', $inputitems-border-style); - @include avariable('border-width', 'inputitems-border-width', $inputitems-border-width); - @include avariable('border-radius', 'inputitems-border-radius', $inputitems-border-radius); - @include avariable('color', 'inputitems-color', $inputitems-color); - @include avariable('font-size', 'base-font-size', $base-font-size); - @include avariable('line-height', 'inputitems-line-height', $inputitems-line-height); - @include avariable('box-shadow', 'inputitems-box-shadow', $inputitems-box-shadow); - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('inputitems-font-size-' + #{$name}), $value); - } - } - } - &__autocomplete { - position: static; - flex: 1; - } - &__input { - border: none; - box-shadow: none; - &:focus { - box-shadow: none; - } - } - &__item { - display: inline-flex; - justify-content: center; - align-items: center; - position: relative; - @include side-flex-gap($inputitems-margin-icon-to-text); - @include avariable('background-color', 'inputitems-item-background-color', $inputitems-item-background-color); - @include avariable('color', 'inputitems-item-color', $inputitems-item-color); - @include avariable('border-radius', 'inputitems-item-border-radius', $inputitems-item-border-radius); - @include avariable('margin', 'inputitems-item-margin', $inputitems-item-margin); - @include avariable('padding', 'inputitems-item-padding', $inputitems-item-padding); - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - @include avariable('background-color', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-invert-' + #{$name}), $color-invert); - } - } - } - &__counter { - display: block; - float: right; - @include avariable('font-size', 'inputitems-counter-font-size', $inputitems-counter-font-size); - @include avariable('margin', 'inputitems-counter-margin', $inputitems-counter-margin); - } - &--expanded { - width: 100%; - flex-grow: 1; - flex-shrink: 1; - } -} diff --git a/packages/oruga/src/scss/components/_loading.scss b/packages/oruga/src/scss/components/_loading.scss deleted file mode 100644 index 45fd9dfb5..000000000 --- a/packages/oruga/src/scss/components/_loading.scss +++ /dev/null @@ -1,33 +0,0 @@ - -/* @docs */ -$loading-overlay-legacy: #7f7f7f !default; -$loading-overlay: rgba(255,255,255,0.5) !default; -$loading-zindex: 29 !default; -$loading-fullpage-zindex: 999 !default; -/* @docs */ - -.o-load { - position: absolute; - bottom: 0; - left: 0; - right: 0; - top: 0; - align-items: center; - display: flex; - justify-content: center; - overflow: hidden; - @include avariable('z-index', 'loading-zindex', $loading-zindex); - &--fullpage { - position: fixed; - @include avariable('z-index', 'loading-fullpage-zindex', $loading-fullpage-zindex); - } - &__overlay { - position: absolute; - bottom: 0; - left: 0; - right: 0; - top: 0; - @include avariable('background', 'loading-overlay-legacy', $loading-overlay-legacy); - @include avariable('background', 'loading-overlay', $loading-overlay); - } -} diff --git a/packages/oruga/src/scss/components/_menu.scss b/packages/oruga/src/scss/components/_menu.scss deleted file mode 100644 index 79ffa81c3..000000000 --- a/packages/oruga/src/scss/components/_menu.scss +++ /dev/null @@ -1,76 +0,0 @@ -/* @docs */ -$menu-item-color: $grey-dark !default; -$menu-item-hover-color: $black !default; -$menu-item-hover-background-color: $grey-light !default; -$menu-item-active-color: $primary-invert !default; -$menu-item-active-background-color: $primary !default; -$menu-item-disabled-color: $grey-light !default; -$menu-list-border-left: 1px solid $primary !default; -$menu-list-line-height: 1.25em !default; -$menu-item-padding: 0.5em 0.75em !default; -$menu-nested-list-margin: 0.75em !default; -$menu-nested-list-padding-left: 0.75em !default; -$menu-label-color: $grey !default; -$menu-label-font-size: 0.75em !default; -$menu-label-spacing: 1em !default; -/* @docs */ - -.o-menu { - @include avariable('font-size', 'base-font-size', $base-font-size); - - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('menu-font-size-' + #{$name}), $value); - } - } -} - -.o-menu-list { - @include avariable('line-height', ('menu-list-line-height'), $menu-list-line-height); - - .o-menu-list, - .o-menu-item__wrapper { - list-style: none; - } - - .o-menu-item__submenu { - @include avariable('border-left', ('menu-list-border-left'), $menu-list-border-left); - @include avariable('padding-left', ('menu-nested-list-padding-left'), $menu-nested-list-padding-left); - @include avariable('margin', ('menu-nested-list-margin'), $menu-nested-list-margin); - } -} - -.o-menu-label { - @include avariable('color', ('menu-label-color'), $menu-label-color); - @include avariable('font-size', ('menu-label-font-size'), $menu-label-font-size); - text-transform: uppercase; - - &:not(:first-child) { - @include avariable('margin-top', ('menu-label-spacing'), $menu-label-spacing); - } - - &:not(:last-child) { - @include avariable('margin-bottom', ('menu-label-spacing'), $menu-label-spacing); - } -} - -.o-menu-item { - @include avariable('color', ('menu-item-color'), $menu-item-color); - @include avariable('padding', ('menu-item-padding'), $menu-item-padding); - display: block; - list-style: none; - - &:hover:not(&--active):not(&--disabled) { - @include avariable('color', ('menu-item-hover-color'), $menu-item-hover-color); - @include avariable('background-color', ('menu-item-hover-background-color'), $menu-item-hover-background-color); - } - - &--active { - @include avariable('color', ('menu-item-active-color'), $menu-item-active-color); - @include avariable('background-color', ('menu-item-active-background-color'), $menu-item-active-background-color); - } - - &--disabled { - @include avariable('color', ('menu-item-disabled-color'), $menu-item-disabled-color); - } -} diff --git a/packages/oruga/src/scss/components/_modal.scss b/packages/oruga/src/scss/components/_modal.scss deleted file mode 100644 index 362448e9e..000000000 --- a/packages/oruga/src/scss/components/_modal.scss +++ /dev/null @@ -1,70 +0,0 @@ - -/* @docs */ -$modal-content-background-color: $white !default; -$modal-content-border-radius: $base-border-radius !default; -$modal-overlay-background-color: hsla(0,0%,4%,.86) !default; -$modal-close-border-radius: $base-rounded-border-radius !default; -$modal-close-right: 20px !default; -$modal-close-top: 20px !default; -$modal-close-size: 32px !default; -$modal-close-color: $white !default; -$modal-content-fullscreen-background-color: #f5f5f5 !default; -$modal-content-max-height: calc(100vh - 160px) !default; -$modal-content-margin: 0 auto !default; -$modal-zindex: 40 !default; -/* @docs */ - -.o-modal { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - overflow: hidden; - position: fixed; - bottom: 0; - left: 0; - right: 0; - top: 0; - @include avariable('z-index', 'modal-zindex', $modal-zindex); - &__overlay { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; - @include avariable('background-color', 'modal-overlay-background-color', $modal-overlay-background-color); - } - &__content { - overflow: auto; - position: relative; - @include avariable('margin', 'modal-content-margin', $modal-content-margin); - @include avariable('max-height', 'modal-content-max-height', $modal-content-max-height); - @include avariable('background-color', 'modal-content-background-color', $modal-content-background-color); - @include avariable('border-radius', 'modal-content-border-radius', $modal-content-border-radius); - &--full-screen { - width: 100%; - height: 100%; - max-height: 100vh; - margin: 0; - @include avariable('background-color', 'modal-content-fullscreen-background-color', $modal-content-fullscreen-background-color); - } - } - &__close { - background: none; - position: fixed; - border: none; - display: inline-block; - vertical-align: top; - @include avariable('border-radius', 'modal-close-border-radius', $modal-close-border-radius); - @include avariable('right', 'modal-close-right', $modal-close-right); - @include avariable('top', 'modal-close-top', $modal-close-top); - @include avariable('height', 'modal-close-size', $modal-close-size); - @include avariable('width', 'modal-close-size', $modal-close-size); - @include avariable('color', 'modal-close-color', $modal-close-color); - } - &--mobile { - .o-modal__content { - width: 100%; - } - } -} diff --git a/packages/oruga/src/scss/components/_notification.scss b/packages/oruga/src/scss/components/_notification.scss deleted file mode 100644 index 73b8ff1ca..000000000 --- a/packages/oruga/src/scss/components/_notification.scss +++ /dev/null @@ -1,129 +0,0 @@ -/* @docs */ -$notification-background-color: $primary !default; -$notification-border-radius: 4px !default; -$notification-padding: 1.75em 1.75em !default; -$notification-margin-bottom: 1.5rem !default; -$notification-animantion: append-animate .3s linear !default; -$notification-color: $white !default; -$notification-close-border-radius: $base-rounded-border-radius !default; -$notification-close-right: .5rem !default; -$notification-close-top: .5rem !default; -$notification-close-size: 20px !default; -$notification-close-color: $white !default; -$notification-close-background-color: hsla(0,0%,4%,.2) !default; -$notification-icon-margin-right: 1rem !default; -$notification-notices-padding: 2em !default; -$notification-notices-zindex: 1000 !default; -/* @docs */ - -.o-notification { - // Modifiers - @include avariable('background-color', 'notification-background-color', $notification-background-color); - @include avariable('color', 'notification-color', $notification-color); - @include avariable('border-radius', 'notification-border-radius', $notification-border-radius); - @include avariable('padding', 'notification-padding', $notification-padding); - @include avariable('margin-bottom', 'notification-margin-bottom', $notification-margin-bottom); - - position: relative; - transform-origin: 50% 0; - &__content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: inherit; - overflow-y: hidden; - overflow-x: auto; - } - &__wrapper { - align-items: flex-start; - display: flex; - text-align: inherit; - padding-top: 0; - border: 0; - } - &__icon { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - @include avariable('margin-right', 'notification-icon-margin-right', $notification-icon-margin-right); - } - &__close { - position: absolute; - border: none; - cursor: pointer; - pointer-events: auto; - display: flex; - justify-content: center; - align-items: center; - flex-grow: 0; - flex-shrink: 0; - vertical-align: top; - @include avariable('background-color', 'notification-close-background-color', $notification-close-background-color); - @include avariable('border-radius', 'notification-close-border-radius', $notification-close-border-radius); - @include avariable('right', 'notification-close-right', $notification-close-right); - @include avariable('top', 'notification-close-top', $notification-close-top); - @include avariable('height', 'notification-close-size', $notification-close-size); - @include avariable('width', 'notification-close-size', $notification-close-size); - @include avariable('color', 'notification-close-color', $notification-close-color); - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - border-color: transparent; - @include avariable('background-color', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-invert-' + #{$name}), $color-invert); - &:hover { - // background-color: darken($color, 2.5%) - // IE 11 needs polyfill - filter: brightness(97.5%); - } - } - } -} - -.o-notices { - position: fixed; - display: flex; - top: 0; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; - pointer-events: none; - @include avariable('padding', 'notification-notices-padding', $notification-notices-padding); - @include avariable('z-index', 'notification-notices-zindex', $notification-notices-zindex); - .o-notification { - pointer-events: stroke; - max-width: 600px; - @include avariable('animation', 'notification-animantion', $notification-animantion); - &--top, &--bottom { - align-self: center; - } - &--top-right, &--bottom-right { - align-self: flex-end; - } - &--top-left, &--bottom-left { - align-self: flex-start; - } - } - - &--top { - flex-direction: column; - } - &--bottom { - flex-direction: column-reverse; - - // Since the columns are reversed, we need to reverse the margin logic from - // :not(:last-child) to :not(:first-child) - .o-notification { - margin-bottom: 0; - &:not(:first-child) { - margin-bottom: $notification-margin-bottom; - } - } - } - &__custom-container { - position: absolute; - } -} diff --git a/packages/oruga/src/scss/components/_pagination.scss b/packages/oruga/src/scss/components/_pagination.scss deleted file mode 100644 index 5ba441bdb..000000000 --- a/packages/oruga/src/scss/components/_pagination.scss +++ /dev/null @@ -1,157 +0,0 @@ - -/* @docs */ -$pagination-disabled-opacity: $base-disabled-opacity !default; -$pagination-ellipsis-color: $grey-light !default; -$pagination-link-border-color: $grey-lighter !default; -$pagination-link-border-radius: $base-border-radius !default; -$pagination-link-border: 1px solid transparent !default; -$pagination-link-color: #363636 !default; -$pagination-link-current-background-color: $primary !default; -$pagination-link-current-border-color: $primary !default; // !!! -$pagination-link-current-color: #fff !default; -$pagination-link-height: 2.25em !default; -$pagination-link-hover-border-color: $grey-light !default; -$pagination-link-line-height: $base-line-height !default; -$pagination-link-margin: .25rem !default; -$pagination-link-min-width: 2.25em !default; -$pagination-link-padding: .5em .5em !default; -$pagination-margin: -.25rem !default; -$pagination-rounded-border-radius: $base-rounded-border-radius !default; -/* @docs */ - -.o-pag { - align-items: center; - display: flex; - justify-content: center; - text-align: center; - justify-content: space-between; - @include avariable('font-size', 'base-font-size', $base-font-size); - @include avariable('margin', 'pagination-margin', $pagination-margin); - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('pagination-font-size-' + #{$name}), $value); - } - } - &__link { - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - box-shadow: none; - display: inline-flex; - position: relative; - vertical-align: top; - justify-content: center; - text-align: center; - text-decoration: none; - cursor: pointer; - @include unselectable; - @include avariable('line-height', 'pagination-link-line-height', $pagination-link-line-height); - @include avariable('border', 'pagination-link-border', $pagination-link-border); - @include avariable('border-radius', 'pagination-link-border-radius', $pagination-link-border-radius); - @include avariable('border-color', 'pagination-link-border-color', $pagination-link-border-color); - @include avariable('color', 'pagination-link-color', $pagination-link-color); - @include avariable('min-width', 'pagination-link-min-width', $pagination-link-min-width); - @include avariable('height', 'pagination-link-height', $pagination-link-height); - @include avariable('padding', 'pagination-link-padding', $pagination-link-padding); - @include avariable('margin', 'pagination-link-margin', $pagination-link-margin); - &:hover { - text-decoration: none; - @include avariable('border-color', 'pagination-link-hover-border-color', $pagination-link-hover-border-color); - } - &--rounded { - @include avariable('border-radius', 'pagination-rounded-border-radius', $pagination-rounded-border-radius); - } - &--disabled { - pointer-events: none; - @include avariable('opacity', 'pagination-disabled-opacity', $pagination-disabled-opacity); - } - &--current { - pointer-events: none; - @include avariable('background-color', 'pagination-link-current-background-color', $pagination-link-current-background-color); - @include avariable('border-color', 'pagination-link-current-border-color', $pagination-link-current-border-color); - @include avariable('color', 'pagination-link-current-color', $pagination-link-current-color); - } - } - &__ellipsis { - justify-content: center; - text-align: center; - pointer-events: none; - @include avariable('margin', 'pagination-link-margin', $pagination-link-margin); - @include avariable('color', 'pagination-ellipsis-color', $pagination-ellipsis-color); - } - - &--simple { - justify-content: normal; - } - &--centered { - justify-content: center; - .o-pag__previous { - order: 1; - } - .o-pag__next { - order: 3; - } - .o-pag__list { - justify-content: center; - order: 2; - } - } - &--right { - justify-content: flex-end; - .o-pag__previous { - order: 1; - } - .o-pag__next { - order: 2; - } - .o-pag__list { - justify-content: flex-end; - order: 2; - } - } - &__next { - order: 3; - } - &__previous { - order: 2; - } - &__list { - align-items: center; - display: flex; - justify-content: center; - text-align: center; - list-style: none; - flex-wrap: wrap; - margin: 0; - padding: 0; - flex-grow: 1; - flex-shrink: 1; - justify-content: flex-start; - order: 1; - } - &--mobile { - justify-content: flex-start; - flex-wrap: wrap; - .o-pag__link { - flex-grow: 1; - flex-shrink: 1; - } - .o-pag__previous { - flex-grow: 1; - flex-shrink: 1; - order: 0; - } - .o-pag__next { - flex-grow: 1; - flex-shrink: 1; - order: 0 - } - .o-pag__ellipsis { - flex-grow: 1; - flex-shrink: 1; - } - .o-pag__list { - order: 0; - } - } -} diff --git a/packages/oruga/src/scss/components/_radio.scss b/packages/oruga/src/scss/components/_radio.scss deleted file mode 100644 index a31fffad7..000000000 --- a/packages/oruga/src/scss/components/_radio.scss +++ /dev/null @@ -1,88 +0,0 @@ - -/* @docs */ -$radio-active-background-color: $primary !default; -$radio-checked-box-shadow-length: 0 0 0.5em !default; -$radio-checked-box-shadow-opacity: 0.8 !default; -$radio-disabled-opacity: $base-disabled-opacity !default; -$radio-label-padding: 0 0 0 .5em !default; -$radio-margin-sibiling: 0.5em !default; -$radio-size: 1rem !default; -$radio-line-height: 1.25 !default; -/* @docs */ - -$HALF_MARGIN_EXPRESSION: "calc($margin * 0.5)"; - -@function svg_radio_fill($color, $background-color: 'transparent') { - $start: '<svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">'; - $content: '<g transform="matrix(4.38544,0,0,4.38544,-94.4336,-58.9876)"><path d="M32.935,13.679C39.102,13.679 44.108,18.685 44.108,24.852C44.108,31.019 39.102,36.025 32.935,36.025C26.768,36.025 21.761,31.019 21.761,24.852C21.761,18.685 26.768,13.679 32.935,13.679ZM32.798,17.05C37.105,17.05 40.601,20.546 40.601,24.852C40.601,29.158 37.105,32.655 32.798,32.655C28.492,32.655 24.996,29.158 24.996,24.852C24.996,20.546 28.492,17.05 32.798,17.05Z" style="fill:#{$color};"/><circle cx="32.84" cy="24.8" r="7.9" style="fill:#{$background-color};"/></g>'; - $end: '</svg>'; - @return svg-encode("#{$start}#{$content}#{$end}"); -} - -@function svg_radio_empty($color) { - $start: '<svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">'; - $content: '<g transform="matrix(10.1032,0,0,10.1032,-255.068,-313.298)"><circle cx="30.195" cy="35.959" r="4.85" style="fill:#{$color};"/></g>'; - $end: '</svg>'; - @return svg-encode("#{$start}#{$content}#{$end}"); -} - -.o-radio { - display: inline-flex; - align-items: center; - cursor: pointer; - @include unselectable; - @include avariable('line-height', 'radio-line-height', $radio-line-height); - @include avariable('margin-right', 'radio-margin-sibiling', $radio-margin-sibiling); - - - &__check { - @include avariable('width', 'radio-size', $radio-size); - @include avariable('height', 'radio-size', $radio-size); - margin: 0; - vertical-align: top; - background-position: center; - background-size: contain; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - -webkit-print-color-adjust: exact; - print-color-adjust: exact; - border-radius: 50%; - cursor: pointer; - background-repeat: no-repeat; - transition-property: background; - @include avariable('transition-duration', 'transition-duration', $speed-slow); - @include avariable('transition-timing-function', 'transition-timing', $easing); - - background-image: url(svg_radio_empty(variable('radio-active-background-color', $radio-active-background-color))); - &--checked { - background-image: url(svg_radio_fill(variable('radio-active-background-color', $radio-active-background-color))); - } - } - &__label { - @include avariable('padding', 'radio-label-padding', $radio-label-padding); - } - &--disabled { - @include avariable('opacity', 'radio-disabled-opacity', $radio-disabled-opacity); - } - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('radio-font-size-' + #{$name}), $value); - } - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - .o-radio__check { - background-image: url(svg_radio_empty(variable(('variant-' + #{$name}), $color))); - } - .o-radio__check--checked { - background-image: url(svg_radio_fill( - variable(('variant-' + #{$name}), $color), - variable(('variant-invert-' + #{$name}), $color-invert) - )); - } - } - } -} diff --git a/packages/oruga/src/scss/components/_select.scss b/packages/oruga/src/scss/components/_select.scss deleted file mode 100644 index e9f2cc596..000000000 --- a/packages/oruga/src/scss/components/_select.scss +++ /dev/null @@ -1,115 +0,0 @@ - -/* @docs */ -$select-background-color: #fff !default; -$select-border-color: $grey-lighter !default; -$select-border-width: 1px !default; -$select-border-style: solid !default; -$select-border-radius: $base-border-radius !default; -$select-rounded-border-radius: $base-rounded-border-radius !default; -$select-box-shadow: none !default; -$select-color: #363636 !default; -$select-icon-zindex: 4 !default; -$select-height: $control-height !default; -$select-arrow-size: 1rem !default; -$select-line-height: $base-line-height !default; -$select-margin: 0 !default; -$select-max-width: 100% !default; -$select-width: 100% !default; -$select-placeholder-opacity: $base-disabled-opacity !default; -$select-padding: $control-padding-vertical $control-padding-horizontal !default; -/* @docs */ - -@function svg_arrow($color) { - $start: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">'; - $content: '<g transform="matrix(5.70052,0,0,5.70052,-1329.79,-547.054)"><path d="M233.451,101.749L235.617,99.422L242.013,105.565L248.463,99.422L250.642,101.749L242.013,110.052L233.451,101.749Z" style="fill:#{$color};stroke:white;stroke-width:0.18px;"/></g>'; - $end: '</svg>'; - @return svg-encode("#{$start}#{$content}#{$end}"); -} - -.o-ctrl-sel { - display: inline-flex; - position: relative; - &--expanded { - width: 100%; - flex-grow: 1; - flex-shrink: 1; - } -} - -.o-sel { - -moz-appearance: none; - -webkit-appearance: none; - display: inline-block; - position: relative; - vertical-align: top; - cursor: pointer; - justify-content: flex-start; - align-items: center; - @include avariable('font-size', 'base-font-size', $base-font-size); - @include avariable('max-width', 'select-max-width', $select-max-width); - @include avariable('width', 'select-width', $select-width); - @include avariable('background-color', 'select-background-color', $select-background-color); - @include avariable('border-color', 'select-border-color', $select-border-color); - @include avariable('border-width', 'select-border-width', $select-border-width); - @include avariable('border-style', 'select-border-style', $select-border-style); - @include avariable('border-radius', 'select-border-radius', $select-border-radius); - @include avariable('color', 'select-color', $select-color); - @include avariable('margin', 'select-margin', $select-margin); - @include avariable('box-shadow', 'select-box-shadow', $select-box-shadow); - @include avariable('line-height', 'select-line-height', $select-line-height); - @include avariable('padding', 'select-padding', $select-padding); - @include avariable('height', 'select-height', $select-height); - &-arrow { - background-image: url(svg_arrow(variable('select-arrow-color', $select-color))); - background-repeat: no-repeat; - @include avariable('background-size', 'select-arrow-size', $select-arrow-size); - @include evariable( - 'background-position', 'calc(100% - $param * 0.5) center', - eparam('$param', variable('select-arrow-size', $select-arrow-size)) - ); - @include evariable( - 'padding-right', 'calc($param * 2)', - eparam('$param', variable('select-arrow-size', $select-arrow-size)) - ); - } - &-iconspace-left { - @include avariable('padding-left', 'select-height', $select-height); - } - &-iconspace-right { - @include avariable('padding-right', 'select-height', $select-height); - } - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('select-font-size-' + #{$name}), $value); - } - } - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - @include avariable('border-color', ('variant-' + #{$name}), $color); - } - } - &--rounded { - @include avariable('border-radius', 'select-rounded-border-radius', $select-rounded-border-radius); - } - &--multiple { - height: auto; - padding: 0; - } - &--placeholder { - @include avariable('opacity', 'select-placeholder-opacity', $select-placeholder-opacity); - } - &__icon-left, &__icon-right { - position: absolute; - top: 0; - height: 100%; - @include avariable('width', 'select-height', $select-height); - @include avariable('z-index', 'select-icon-zindex', $select-icon-zindex); - } - &__icon-right { - right: 0; - } - &__icon-left { - left: 0; - } -} diff --git a/packages/oruga/src/scss/components/_sidebar.scss b/packages/oruga/src/scss/components/_sidebar.scss deleted file mode 100644 index 0c0f95207..000000000 --- a/packages/oruga/src/scss/components/_sidebar.scss +++ /dev/null @@ -1,80 +0,0 @@ - -/* @docs */ -$sidebar-overlay: hsla(0,0%,4%,.86) !default; -$sidebar-box-shadow: 5px 0px 13px 3px rgba($black, 0.1) !default; -$sidebar-content-background-color: $grey-lighter !default; -$sidebar-mobile-width: 80px !default; -$sidebar-width: 260px !default; -$sidebar-zindex: 38 !default; -/* @docs */ - -.o-side { - &__content { - @include avariable('background-color', 'sidebar-content-background-color', $sidebar-content-background-color); - @include avariable('box-shadow', 'sidebar-box-shadow', $sidebar-box-shadow); - @include avariable('width', 'sidebar-width', $sidebar-width); - @include evariable( - 'z-index', 'calc($z-index + 1)', - eparam('$z-index', variable('sidebar-zindex', $sidebar-zindex)) - ); - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - @include avariable('background-color', ('variant-' + #{$name}), $color); - } - } - &--fixed { - position: fixed; - left: 0; - top: 0; - } - &--absolute { - position: absolute; - left: 0; - top: 0; - } - &--right { - left: auto; - right: 0; - } - &--mini { - @include avariable('width', 'sidebar-mobile-width', $sidebar-mobile-width); - } - &--mini-expand { - &:hover { - transition: width; - @include avariable('transition-duration', 'transition-duration', $speed-slow); - @include avariable('transition-timing-function', 'transition-timing', $easing); - @include avariable('width', 'sidebar-width', $sidebar-width); - } - } - &--static { - position: static; - } - &--absolute, &--static { - transition: width $speed-slow $easing; - } - &--fullwidth { - width: 100%; - max-width: 100%; - } - &--fullheight { - height: 100%; - max-height: 100%; - overflow: hidden; - overflow-y: auto; - display: flex; - flex-direction: column; - align-content: stretch; - } - } - &__overlay { - bottom: 0; - left: 0; - right: 0; - top: 0; - position: fixed; - @include avariable('background', 'sidebar-overlay', $sidebar-overlay); - @include avariable('z-index', 'sidebar-zindex', $sidebar-zindex); - } -} diff --git a/packages/oruga/src/scss/components/_skeleton.scss b/packages/oruga/src/scss/components/_skeleton.scss deleted file mode 100644 index 47ca269eb..000000000 --- a/packages/oruga/src/scss/components/_skeleton.scss +++ /dev/null @@ -1,61 +0,0 @@ - -/* @docs */ -$skeleton-background: linear-gradient(90deg, $grey-lighter 25%, rgba($grey-lighter, 0.5) 50%, $grey-lighter 75%) !default; -$skeleton-border-radius: $base-border-radius !default; -$skeleton-duration: 1.5s !default; -$skeleton-margin: .5rem 0 0 0 !default; -/* @docs */ - -@keyframes skeleton-loading { - 0% { - background-position: 100% 50%; - } - 100% { - background-position: 0 50%; - } -} - -@mixin steps-size($size, $name: null) { - @if ($name != null) { - @include avariable('line-height', ('skeleton-font-size-' + #{$name}), $size); - } @else { - @include avariable('line-height', 'skeleton-font-size', $size); - } -} - -.o-sklt { - display: inline-flex; - flex-direction: column; - vertical-align: middle; - width: 100%; - &__item { - width: 100%; - @include avariable('background', 'skeleton-background', $skeleton-background); - &--rounded { - @include avariable('border-radius', 'skeleton-border-radius', $skeleton-border-radius); - } - &--animated { - background-size: 400% 100%; - animation-name: skeleton-loading; - animation-iteration-count: infinite; - @include avariable('animation-duration', 'skeleton-duration', $skeleton-duration); - } - &::after { - content: "\00a0"; - } - @include avariable('margin', 'skeleton-margin', $skeleton-margin); - @include steps-size($base-font-size); - @each $name, $value in $sizes { - &--#{$name} { - @include steps-size($value, $name); - } - } - } - &--centered { - align-items: center; - } - &--right { - align-items: flex-end; - @include avariable('margin', 'skeleton-margin', $skeleton-margin); - } -} diff --git a/packages/oruga/src/scss/components/_slider.scss b/packages/oruga/src/scss/components/_slider.scss deleted file mode 100644 index 13ae11f97..000000000 --- a/packages/oruga/src/scss/components/_slider.scss +++ /dev/null @@ -1,152 +0,0 @@ - -/* @docs */ -$slider-background: transparent !default; -$slider-margin: 1em 0 !default; -$slider-mark-size: 0.75rem !default; -$slider-font-size: $base-font-size !default; -$slider-rounded-borded-radius: $base-rounded-border-radius !default; -$slider-thumb-background: $white !default; -$slider-thumb-border: 1px solid $grey-light !default; -$slider-thumb-radius: $base-border-radius !default; -$slider-thumb-shadow: none !default; -$slider-thumb-to-track-ratio: 2 !default; -$slider-thumb-transform: scale(1.25) !default; -$slider-tick-background: $primary !default; -$slider-tick-radius: $base-border-radius !default; -$slider-tick-to-track-ratio: 0.5 !default; -$slider-tick-width: 3px !default; -$slider-track-background: $grey-lighter !default; -$slider-fill-background: $primary !default; -$slider-track-border-radius: $base-border-radius !default; -$slider-track-border: 0px solid $grey !default; -$slider-track-disabled: 0.5 !default; -$slider-track-radius: $base-border-radius !default; -$slider-track-shadow: 0px 0px 0px $grey !default; -/* @docs */ - -@mixin slider-size($size, $name: null) { - $track-height: divide($size, $slider-thumb-to-track-ratio); - $tick-height: $track-height * $slider-tick-to-track-ratio; - $thumb-size: $size; - - .o-slide__track { - @if ($name != null) { - @include avariable('height', ('slider-track-height-' + #{$name}), $track-height); - } @else { - @include avariable('height', 'slider-track-height', $track-height); - } - } - - .o-slide__thumb { - @if ($name != null) { - @include avariable('height', 'slider-thumb-size-' + #{$name}, $thumb-size); - @include avariable('width', 'slider-thumb-size-' + #{$name}, $thumb-size); - } @else { - @include avariable('height', 'slider-thumb-size', $thumb-size); - @include avariable('width', 'slider-thumb-size', $thumb-size); - } - } - - .o-slide__tick { - @if ($name != null) { - @include avariable('height', 'slider-tick-height-' + #{$name}, $tick-height); - } @else { - @include avariable('height', 'slider-tick-height', $tick-height); - } - } - - .o-slide__tick-label { - @if ($name != null) { - @include avariable('font-size', 'slider-mark-size-' + #{$name}, $slider-mark-size); - } @else { - @include avariable('font-size', 'slider-mark-size', $slider-mark-size); - } - position: absolute; - @include evariable( - 'top', 'calc($label-top * 0.5 + 2px)', - eparam('$label-top', variable('slider-tick-label-top-' + #{$name}, $track-height)) - ); - left: 50%; - transform: translateX(-50%); - } -} - -.o-slide { - @include avariable('margin', 'slider-margin', $slider-margin); - @include avariable('background', 'slider-background', $slider-background); - width: 100%; - - &__thumb { - @include avariable('box-shadow', 'slider-thumb-shadow', $slider-thumb-shadow); - @include avariable('border', 'slider-thumb-border', $slider-thumb-border); - @include avariable('border-radius', 'slider-thumb-radius', $slider-thumb-radius); - @include avariable('background', 'slider-thumb-background', $slider-thumb-background); - &:focus { - @include avariable('transform', 'slider-thumb-transform', $slider-thumb-transform); - } - &--rounded { - @include avariable('border-radius', 'slider-rounded-borded-radius', $slider-rounded-borded-radius); - } - &--dragging { - cursor: grabbing; - filter: brightness(0.8); - } - } - - &__track { - display: flex; - align-items: center; - position: relative; - cursor: pointer; - @include avariable('background', 'slider-track-background', $slider-track-background); - @include avariable('border-radius', 'slider-track-border-radius', $slider-track-border-radius); - } - &__fill { - position: absolute; - height: 100%; - @include avariable('box-shadow', 'slider-track-shadow', $slider-track-shadow); - @include avariable('background', 'slider-fill-background', $slider-fill-background); - @include avariable('border-radius', 'slider-track-radius', $slider-track-radius); - @include avariable('border', 'slider-track-border', $slider-track-border); - // Fix alignment in IE 11. Cancel out for others - top: 50%; - transform: translateY(-50%); - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - @include avariable('background', ('variant-' + #{$name}), $color); - } - } - } - @include slider-size($slider-font-size); - @each $name, $value in $sizes { - &--#{$name} { - @include slider-size($value, $name); - } - } - &__tick { - position: absolute; - transform: translate(-50%, -50%); - top: 50%; - @include avariable('width', 'slider-tick-width', $slider-tick-width); - @include avariable('background', 'slider-tick-background', $slider-tick-background); - @include avariable('border-radius', 'slider-tick-radius', $slider-tick-radius); - &--hidden { - background: transparent; - } - } - &__thumb-wrapper { - display: inline-flex; - align-items: center; - position: absolute; - cursor: grab; - transform: translate(-50%, -50%); - top: 50%; - flex-direction: column; // Fix shrinked thumb at the end in IE 11 - } - &--disabled { - cursor: not-allowed; - pointer-events: none; - @include avariable('opacity', 'slider-track-disabled', $slider-track-disabled); - } -} diff --git a/packages/oruga/src/scss/components/_steps.scss b/packages/oruga/src/scss/components/_steps.scss deleted file mode 100644 index f1e1e1171..000000000 --- a/packages/oruga/src/scss/components/_steps.scss +++ /dev/null @@ -1,356 +0,0 @@ - -/* @docs */ -$steps-details-background-color: hsl(0, 0%, 100%) !default; -$steps-details-padding: .2em !default; -$steps-marker-background: $grey-light !default; -$steps-marker-color: $primary-invert !default; -$steps-marker-border: .2em solid #fff !default; -$steps-marker-font-weight: 700 !default; -$steps-marker-rounded-border-radius: $base-rounded-border-radius !default; -$steps-color: $grey-lighter !default; -$steps-previous-color: $primary !default; -$steps-active-color: $primary !default; -$steps-divider-height: .2em !default; -$steps-vertical-padding: 1em 0 !default; -$steps-item-line-height: $base-line-height !default; -$steps-link-color: hsl(0, 0%, 29%) !default; -$steps-content-padding: 1rem !default; -$steps-font-size: $base-font-size !default; -$steps-details-title-font-weight: 600 !default; -/* @docs */ - -$LR_CALC_EXPRESSION: "calc(($size - $divider-height) * 0.5)"; -$GRADIENT_EXPRESSION: "linear-gradient(to left, $param1 50%, $param2 50%)"; - -@mixin steps-size($size, $name: null) { - - @include avariable('font-size', if($name != null, ('size-' + #{$name}), 'steps-size'), $size); - @include evariable( - 'min-height', $MULTIPLY_EXPRESSION, - eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$factor', 2) - ); - - .o-steps__divider { - @include avariable('height', 'steps-divider-height', $steps-divider-height); - @include avariable('top', if($name != null, ('size-' + #{$name}), 'steps-size'), $size); - } - - .o-steps__marker { - @include evariable( - 'height', $MULTIPLY_EXPRESSION, - eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$factor', 2) - ); - @include evariable( - 'width', $MULTIPLY_EXPRESSION, - eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$factor', 2) - ); - } - - .o-steps__title { - @include avariable('background-color', 'steps-details-background-color', $steps-details-background-color); - text-align: center; - z-index: 1; - @include avariable('padding', 'steps-details-padding', $steps-details-padding); - @include evariable( - 'font-size', $MULTIPLY_EXPRESSION, - eparam('$param', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$factor', 1.2) - ); - @include avariable('height', 'steps-details-title-font-weight', $steps-details-title-font-weight); - @include avariable('line-height', if($name != null, ('size-' + #{$name}), 'steps-size'), $size); - } - - .o-steps__wrapper-vertical { - .o-steps--label-right { - .o-steps__divider { - @include evariable( - 'left', $LR_CALC_EXPRESSION, - eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$divider-height', variable('steps-divider-height', $steps-divider-height)) - ); - } - } - .o-steps--label-left { - .o-steps__divider { - left: auto; - @include evariable( - 'right', $LR_CALC_EXPRESSION, - eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$divider-height', variable('steps-divider-height', $steps-divider-height)) - ); - } - } - - &.o-steps__wrapper-position-right { - .o-steps--label-right { - .o-steps__divider { - @include evariable( - 'left', $LR_CALC_EXPRESSION, - eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$divider-height', variable('steps-divider-height', $steps-divider-height)) - ); - } - } - .o-steps--label-left { - .o-steps__divider { - left: auto; - @include evariable( - 'right', $LR_CALC_EXPRESSION, - eparam('$size', variable(if($name != null, ('size-' + #{$name}), 'steps-size'), $size)), - eparam('$divider-height', variable('steps-divider-height', $steps-divider-height)) - ); - } - } - } - } -} - -.o-steps { - display: flex; - flex-wrap: wrap; - margin: 0; - padding: 0; - @include steps-size($steps-font-size); - @each $name, $value in $sizes { - &--#{$name} { - @include steps-size($value, $name); - } - } - &__nav-item { - margin: 0; - padding: 0; - @include avariable('line-height', 'steps-item-line-height', $steps-item-line-height); - margin-top: 0; - position: relative; - flex-grow: 1; - flex-basis: 1em; - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - &.o-steps__nav-item-active { - .o-steps__marker { - @include avariable('background-color', ('variant-invert-' + #{$name}), $color-invert); - @include avariable('border-color', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-' + #{$name}), $color); - } - .o-steps__divider { - @include evariable( - 'background', $GRADIENT_EXPRESSION, - eparam('$param1', variable(if($name != null, ('steps-divider-color-bg-' + #{$name}), 'steps-divider-color-bg'), $steps-color)), - eparam('$param2', variable(if($name != null, ('steps-divider-color-' + #{$name}), 'steps-divider-color'), $color)), - ); - background-size: 200% 100%; - } - } - &.o-steps__nav-item-previous { - .o-steps__marker { - @include avariable('color', ('variant-invert-' + #{$name}), $color-invert); - @include avariable('background-color', ('variant-' + #{$name}), $color); - } - .o-steps__divider { - @include evariable( - 'background', $GRADIENT_EXPRESSION, - eparam('$param1', variable(if($name != null, ('steps-divider-color-bg-' + #{$name}), 'steps-divider-color-bg'), $steps-color)), - eparam('$param2', variable(if($name != null, ('steps-divider-color-' + #{$name}), 'steps-divider-color'), $color)), - ); - background-size: 200% 100%; - } - } - } - } - } - - &__divider { - background: linear-gradient(to left, variable('steps-divider-color-bg', $steps-color) 50%, variable('steps-divider-color', $primary) 50%); - background-size: 200% 100%; - background-position: right bottom; - // This will contain the divider - content: " "; - display: block; - position: absolute; - bottom: 0; - left: -50%; - width: 100%; - } - - &__content { - position: relative; - overflow: visible; - display: flex; - flex-direction: column; - @include avariable('padding', 'steps-content-padding', $steps-content-padding); - &-transitioning { - overflow: hidden; - } - } - - &--animated { - .o-steps__divider { - transition-property: background; - @include avariable('transition-duration', 'transition-duration', $speed-slow); - @include avariable('transition-timing-function', 'transition-timing', $easing); - } - } - - &__link { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - @include avariable('color', 'steps-link-color', $steps-link-color); - cursor: pointer; - text-decoration: none; - - &-label-right { - flex-direction: row; - } - - &-label-left { - flex-direction: row-reverse; - } - - &:hover { - text-decoration: none; - } - &:not(&-clickable) { - cursor: not-allowed; - } - } - - &__marker { - align-items: center; - display: flex; - justify-content: center; - @include avariable('font-weight', 'steps-marker-font-weight', $steps-marker-font-weight); - @include avariable('background', 'steps-marker-background', $steps-marker-background); - @include avariable('color', 'steps-marker-color', $steps-marker-color); - @include avariable('border', 'steps-marker-border', $steps-marker-border); - z-index: 1; - overflow: hidden; - - &--rounded { - @include avariable('border-radius', 'steps-marker-rounded-border-radius', $steps-marker-rounded-border-radius); - } - } - - &__details { - @include avariable('background-color', 'steps-details-background-color', $steps-details-background-color); - text-align: center; - z-index: 1; - @include avariable('padding', 'steps-details-padding', $steps-details-padding); - } - - &__nav-item-active { - .o-steps__link { - cursor: default; - } - - .o-steps__marker { - @include avariable('background-color', 'steps-marker-color', $steps-marker-color); - @include avariable('border-color', 'steps-active-color', $steps-active-color); - @include avariable('color', 'steps-active-color', $steps-active-color); - } - - .o-steps__divider { - background-position: left bottom; - } - } - - &__nav-item-previous { - .o-steps__marker { - @include avariable('color', 'steps-marker-color', $steps-marker-color); - @include avariable('background-color', 'steps-previous-color', $steps-previous-color); - } - - .o-steps__divider { - background-position: left bottom; - } - } - - &__item { - flex-shrink: 0; - flex-basis: auto; - } - - &__wrapper-vertical { - display: flex; - flex-direction: row; - flex-wrap: wrap; - - .o-steps { - height: 100%; - flex-direction: column; - } - - .o-steps__divider { - height: 100%; - @include avariable('width', 'steps-divider-height', $steps-divider-height); - top: -50%; - left: calc(50% - #{$steps-divider-height * 0.5}); - } - - .o-steps__item-active, .o-steps__item-previous { - .o-steps__divider { - background-position: right top; - } - } - - .o-steps__nav-item { - width: 100%; - display: flex; - align-items: center; - justify-content: center; - @include avariable('padding', 'steps-vertical-padding', $steps-vertical-padding); - // Override marker connector color per step - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - .o-steps__divider { - @include evariable( - 'background', $GRADIENT_EXPRESSION, - eparam('$param1', variable(if($name != null, ('steps-divider-color-bg-' + #{$name}), 'steps-divider-color-bg'), $steps-color)), - eparam('$param2', variable(if($name != null, ('steps-divider-color-' + #{$name}), 'steps-divider-color'), $color)), - ); - background-size: 100% 200%; - background-position: left bottom; - } - } - } - } - - .o-steps__content { - flex-grow: 1; - flex-basis: 70%; - } - - .o-steps__navigation { - flex-basis: 100%; - } - - &.o-steps__wrapper-position-right { - flex-direction: row-reverse; - } - } - - &--mobile { - .o-steps__title { - display: none; - padding: 0; - } - .o-steps__divider { - @include avariable('height', 'steps-divider-height', $steps-divider-height); - @include avariable('top', 'steps-divider-top', $steps-font-size); - @each $name, $value in $sizes { - .o-steps--#{$name} { - @include avariable('top', 'size-' + #{$name}, $value); - } - } - } - } -} - - diff --git a/packages/oruga/src/scss/components/_switch.scss b/packages/oruga/src/scss/components/_switch.scss deleted file mode 100644 index 495f0bbec..000000000 --- a/packages/oruga/src/scss/components/_switch.scss +++ /dev/null @@ -1,114 +0,0 @@ -/* @docs */ -$switch-active-background-color: $primary !default; -$switch-action-background: #f5f5f5 !default; -$switch-background: $grey-light !default; -$switch-border-radius: $base-border-radius !default; -$switch-box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05) !default; -$switch-disabled-opacity: $base-disabled-opacity !default; -$switch-margin-label: .5em !default; -$switch-padding: 0.2em !default; -$switch-rounded-border-radius: $base-rounded-border-radius !default; -$switch-width: 2.75 * 1em !default; -/* @docs */ - -.o-switch { - cursor: pointer; - display: inline-flex; - align-items: center; - position: relative; - @include unselectable; - - @each $name, $pair in $colors { - $color: nth($pair, 1); - &--#{$name} { - .o-switch__check--checked { - @include avariable('background', ('variant-' + #{$name}), $color); - } - } - &--#{$name}-passive { - .o-switch__check:not(.o-switch__check--checked) { - @include avariable('background', ('variant-' + #{$name}), $color); - } - } - } - - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('font-size-' + #{name}), $value); - } - } - - &__label { - @include avariable('margin-left', 'switch-margin-label', $switch-margin-label); - } - - &--left { - flex-direction: row-reverse; - .o-switch__label { - margin-left: 0; - @include avariable('margin-right', 'switch-margin-label', $switch-margin-label); - } - } - - &__check-switch { - content: ""; - display: block; - @include evariable( - 'height', 'calc(($width - $padding * 2) * 0.5)', - eparam('$width', variable('switch-width', $switch-width)), - eparam('$padding', variable('switch-padding', $switch-padding)) - ); - @include evariable( - 'width', 'calc(($width - $padding * 2) * 0.5)', - eparam('$width', variable('switch-width', $switch-width)), - eparam('$padding', variable('switch-padding', $switch-padding)) - ); - @include avariable('background', 'switch-action-background', $switch-action-background); - @include avariable('box-shadow', 'switch-box-shadow', $switch-box-shadow); - transition-property: transform; - @include avariable('transition-duration', 'transition-duration', $speed-slow); - @include avariable('transition-timing-function', 'transition-timing', $easing); - will-change: transform; - transform-origin: left; - } - - &__check { - display: flex; - align-items: center; - flex-shrink: 0; - @include avariable('width', 'switch-width', $switch-width); - @include evariable( - 'height', 'calc($width * 0.5 + $padding)', - eparam('$width', variable('switch-width', $switch-width)), - eparam('$padding', variable('switch-padding', $switch-padding)) - ); - @include avariable('padding', 'switch-padding', $switch-padding); - @include avariable('background', 'switch-background', $switch-background); - @include avariable('border-radius', 'switch-border-radius', $switch-border-radius); - transition-property: background; - @include avariable('transition-duration', 'transition-duration', $speed-slow); - @include avariable('transition-timing-function', 'transition-timing', $easing); - - &--checked { - @include avariable('background', 'switch-active-background-color', $switch-active-background-color); - .o-switch__check-switch { - transform: translate3d(100%, 0, 0); - } - } - } - - &__input { - position: absolute; - left: 0; - opacity: 0; - z-index: -1; - } - - &--rounded { - @include avariable('border-radius', 'switch-rounded-border-radius', $switch-rounded-border-radius); - } - - &--disabled { - @include avariable('opacity', 'switch-disabled-opacity', $switch-disabled-opacity); - } -} diff --git a/packages/oruga/src/scss/components/_table.scss b/packages/oruga/src/scss/components/_table.scss deleted file mode 100644 index d8449f78b..000000000 --- a/packages/oruga/src/scss/components/_table.scss +++ /dev/null @@ -1,309 +0,0 @@ - -/* @docs */ -$table-background-color: #fff !default; -$table-background: #f5f5f5 !default; -$table-border: 1px solid transparent !default; -$table-border-radius: $base-border-radius !default; -$table-card-box-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default; -$table-card-cell-font-weight: 600 !default; -$table-card-cell-padding: 0 0.5em 0 0 !default; -$table-card-cell-text-align: left !default; -$table-card-detail-margin: -1rem 0 0 0; -$table-card-margin: 0 0 1rem 0; -$table-color: black !default; -$table-current-sort-border-color: $grey !default; -$table-current-sort-font-weight: 700 !default; -$table-current-sort-hover-border-color: $grey !default; -$table-detail-background: #fafafa !default; -$table-detail-box-shadow: inset 0 1px 3px $grey !default; -$table-detail-chevron-color: $primary !default; -$table-detail-chevron-width: 40px !default; -$table-detail-padding: 1rem !default; -$table-focus-border-color: $primary !default; -$table-focus-box-shadow: 0 0 0 0.125em rgba($primary, 0.25) !default; -$table-hoverable-background-color: #fafafa !default; -$table-narrow-padding: .25em .5em !default; -$table-row-active-background-color: $primary !default; -$table-row-active-color: $primary-invert !default; -$table-sticky-header-height: 300px !default; -$table-sticky-zindex: 1 !default; -$table-striped-background-color: #fafafa !default; -$table-td-border: 1px solid $grey-lighter !default; -$table-td-padding: .5em .75em !default; -$table-th-border: 2px solid $grey-lighter !default; -$table-th-checkbox-width: 40px !default; -$table-th-color: #363636 !default; -$table-th-detail-width: 14px !default; -$table-th-font-weight: 600 !default; -$table-th-padding: 0.5em 0.75em !default; -/* @docs */ - -.o-table { - display: table; - width: 100%; - border-collapse: separate; - border-spacing: 0; - @include avariable('border', 'table-border', $table-border); - @include avariable('border-radius', 'table-border-radius', $table-border-radius); - @include avariable('background-color', 'table-background-color', $table-background-color); - @include avariable('color', 'table-color', $table-color); - &__root { - position: relative; - } - &__wrapper { - transition: opacity $speed $easing; - position: relative; - &--sticky-header { - @include avariable('height', 'table-sticky-header-height', $table-sticky-header-height); - overflow-y: auto; - th { - position: -webkit-sticky; - position: sticky; - left: 0; - top: 0; - @include avariable('background', 'table-background-color', $table-background-color); - } - } - &--scrollable { - -webkit-overflow-scrolling: touch; - overflow-x: auto; - max-width: 100%; - } - &--mobile { - overflow-x: auto; - .o-table__mobile-sort { - display: block; - } - // cards - .o-table { - background-color: transparent; - } - thead { - tr { - box-shadow: none; - border-width: 0; - th { - display: none; - } - .o-table-th-checkbox { - display: block; - width: 100%; - text-align: right; - border: 0; - } - } - } - tfoot { - th { - border: 0; - display: inherit; - } - } - tr { - @include avariable('box-shadow', 'table-card-box-shadow', $table-card-box-shadow); - max-width: 100%; - position: relative; - display: block; - td { - border: 0; - display: inherit; - &:last-child { - border-bottom: 0; - } - } - &:not(:last-child) { - @include avariable('margin', 'table-card-margin', $table-card-margin); - } - &:not(.o-table__tr--selected) { - background: inherit; - background: $table-background-color; - &:hover { - background-color: inherit; - background-color: $table-background-color; - } - } - &.o-table--detailed { - @include avariable('margin', 'table-card-detail-margin', $table-card-detail-margin); - } - } - tr:not(.o-table--detailed):not(.o-table--empty):not(.o-table__footer) { - td { - display: flex; - width: auto; - justify-content: space-between; - text-align: right; - @include avariable('border-bottom', 'table-background', ($table-background 1px solid)); - &:before { - content: attr(data-label); - @include avariable('font-weight', 'table-card-cell-font-weight', $table-card-cell-font-weight); - @include avariable('padding-right', 'table-card-cell-padding', $table-card-cell-padding); - @include avariable('text-align', 'table-card-cell-text-align', $table-card-cell-text-align); - } - } - } - } - } - &__mobile-sort { - display: none; - } - &__th { - vertical-align: top; - text-align: left; - position: relative; - @include avariable('font-weight', 'table-th-font-weight', $table-th-font-weight); - @include avariable('color', 'table-th-color', $table-th-color); - @include avariable('border-bottom', 'table-th-border', $table-th-border); - @include avariable('padding', 'table-th-padding', $table-th-padding); - &--centered { - text-align: center; - } - &--right { - text-align: right; - } - &__sort-icon { - position: absolute; - right: 0; - } - &-checkbox { - @include avariable('width', 'table-th-checkbox-width', $table-th-checkbox-width); - } - &-current-sort { - @include avariable('border-color', 'table-current-sort-border-color', $table-current-sort-border-color); - @include avariable('font-weight', 'table-current-sort-font-weight', $table-current-sort-font-weight); - } - &--sortable { - cursor: pointer; - &:hover { - @include avariable('border-color', 'table-current-sort-hover-border-color', $table-current-sort-hover-border-color); - } - } - &--sticky { - position: -webkit-sticky; - position: sticky; - left: 0; - top: 0; - @include evariable( - 'z-index', $SUM_EXPRESSION, - eparam('$param', variable('table-sticky-zindex', $table-sticky-zindex)), - eparam('$factor', 2) - ); - @include avariable('background', 'table-background-color', $table-background-color); - } - &--unselectable { - @include unselectable; - } - &--detailed { - @include avariable('width', 'table-th-detail-width', $table-th-detail-width); - } - } - - &__td { - vertical-align: top; - text-align: left; - @include avariable('border-bottom', 'table-td-border', $table-td-border); - @include avariable('padding', 'table-td-padding', $table-td-padding); - &--sticky { - position: -webkit-sticky; - position: sticky; - left: 0; - @include avariable('z-index', 'table-sticky-zindex', $table-sticky-zindex); - @include avariable('background', 'table-background-color', $table-background-color); - } - &--right { - text-align: right; - } - &--centered { - text-align: center; - } - &-chevron { - vertical-align: middle; - @include avariable('width', 'table-detail-chevron-width', $table-detail-chevron-width); - @include avariable('color', 'table-detail-chevron-color', $table-detail-chevron-color); - } - } - - &:focus { - @include avariable('border-color', 'table-focus-border-color', $table-focus-border-color); - @include avariable('box-shadow', 'table-focus-box-shadow', $table-focus-box-shadow); - } - - &--bordered { - tr:last-child { - td, th { - @include avariable('border', 'table-td-border', $table-td-border); - } - } - td, th { - @include avariable('border', 'table-td-border', $table-td-border); - } - } - - &--striped { - tbody tr:not(.o-table__tr--selected):nth-child(2n) { - @include avariable('background-color', 'table-striped-background-color', $table-striped-background-color); - } - } - - &--narrowed { - td, th { - @include avariable('padding', 'table-narrow-padding', $table-narrow-padding); - } - } - - &--hoverable { - tbody tr:not(.o-table__tr--selected):hover { - @include avariable('background-color', 'table-hoverable-background-color', $table-hoverable-background-color); - } - } - - &__detail { - @include avariable('box-shadow', 'table-detail-box-shadow', $table-detail-box-shadow); - @include avariable('background', 'table-detail-background', $table-detail-background); - td { - @include avariable('padding', 'table-detail-padding', $table-detail-padding); - } - } - - &__tr--selected { - background-color: $table-row-active-background-color; - color: $table-row-active-color; - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &-#{$name} { - background-color: $color; - color: $color-invert; - } - } - } - - &__pagination { - align-items: center; - justify-content: space-between; - display: flex; - // left - > div:first-child { - align-items: center; - justify-content: flex-start; - } - // right - > div:last-child { - align-items: center; - justify-content: flex-end; - > div { - align-items: center; - display: flex; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; - } - } - // left - right - > div { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - } - } -} diff --git a/packages/oruga/src/scss/components/_tabs.scss b/packages/oruga/src/scss/components/_tabs.scss deleted file mode 100644 index 373288871..000000000 --- a/packages/oruga/src/scss/components/_tabs.scss +++ /dev/null @@ -1,208 +0,0 @@ -/* @docs */ -$tabs-disabled-opacity: $base-disabled-opacity !default; -$tabs-font-size: $base-font-size !default; -$tabs-icon-margin: 0.5em !default; -$tabs-content-padding: 1rem !default; -$tabs-margin-bottom: 1.5rem !default; -$tabs-border-bottom-color: $grey-lighter !default; -$tabs-border-bottom-style: solid !default; -$tabs-border-bottom-width: 1px !default; -$tabs-link-color: hsl(0, 0%, 29%) !default; -$tabs-link-active-border-bottom-color: $primary !default; -$tabs-link-active-color: $primary !default; -$tabs-link-line-height: $base-line-height !default; -$tabs-link-padding: 0.5em 1em !default; -$tabs-boxed-link-radius: $base-border-radius !default; -$tabs-boxed-link-hover-background-color: hsl(0, 0%, 96%) !default; -$tabs-boxed-link-hover-border-bottom-color: hsl(0, 0%, 86%) !default; -$tabs-boxed-link-active-background-color: hsl(0, 0%, 100%) !default; -$tabs-boxed-link-active-border-color: hsl(0, 0%, 86%) !default; -$tabs-boxed-link-active-border-bottom-color: transparent !default; -$tabs-toggle-link-border-color: hsl(0, 0%, 86%) !default; -$tabs-toggle-link-border-style: solid !default; -$tabs-toggle-link-border-width: 1px !default; -$tabs-toggle-link-hover-background-color: hsl(0, 0%, 96%) !default; -$tabs-toggle-link-hover-border-color: hsl(0, 0%, 71%) !default; -$tabs-toggle-link-radius: $base-border-radius !default; -$tabs-toggle-link-active-background-color: $primary !default; -$tabs-toggle-link-active-border-color: $primary !default; -$tabs-toggle-link-active-color: $primary-invert !default; -/* @docs */ - -@mixin item { - -moz-appearance: none; - -webkit-appearance: none; - width: 100%; - margin: 0; - padding: 0; - border: 1px solid transparent; - background-color: transparent; - align-items: center; - line-height: $tabs-link-line-height; - @include avariable('font-size', 'tabs-font-size', $tabs-font-size); - @include avariable('border-bottom-color', 'tabs-border-bottom-color', $tabs-border-bottom-color); - @include avariable('border-bottom-style', 'tabs-border-bottom-style', $tabs-border-bottom-style); - @include avariable('border-bottom-width', 'tabs-border-bottom-width', $tabs-border-bottom-width); - @include avariable('color', 'tabs-link-color', $tabs-link-color); - display: flex; - justify-content: center; - margin-bottom: -1px; - @include avariable('padding', 'tabs-link-padding', $tabs-link-padding); - vertical-align: top; - cursor: pointer; - text-decoration: none; -} - -.o-tabs { - &--fullwidth { - width: 100%; - .o-tabs__nav-item-wrapper { - flex-grow: 1; - flex-shrink: 0; - } - .o-tabs__nav-item-default, .o-tabs__nav-item-boxed, .o-tabs__nav-item-toggle { - height: 100%; - } - } - &--vertical { - display: flex; - flex-direction: row; - - .o-tabs__nav { - flex-direction: column; - align-items: stretch; - flex-grow: 0; - border-bottom: none; - } - - .o-tabs__nav-item-boxed { - border-bottom-color: transparent; - @include avariable('border-right-color', 'tabs-border-bottom-color', $tabs-border-bottom-color); - @include avariable('border-radius', 'tabs-border-bottom-color', #{$tabs-toggle-link-radius} 0 0 #{$tabs-toggle-link-radius}); - &--active { - @include avariable('border-bottom-color', 'tabs-border-bottom-color', $tabs-border-bottom-color); - border-right-color: transparent; - } - } - - } - &--right { - flex-direction: row-reverse; - - .o-tabs__nav-item-boxed { - border-bottom-color: transparent; - border-right-color: transparent; - @include avariable('border-left-color', 'tabs-border-bottom-color', $tabs-border-bottom-color); - @include avariable('border-radius', 'tabs-border-bottom-color', 0 #{$tabs-boxed-link-radius} #{$tabs-boxed-link-radius} 0); - &--active { - @include avariable('border-bottom-color', 'tabs-border-bottom-color', $tabs-border-bottom-color); - @include avariable('border-right-color', 'tabs-border-bottom-color', $tabs-border-bottom-color); - border-left-color: transparent; - } - } - } - &__nav { - @include unselectable; - margin: 0; - padding: 0; - align-items: center; - display: flex; - flex-grow: 1; - flex-shrink: 0; - justify-content: flex-start; - overflow-x: auto; - // padding bottom to keep showing the border-bottom - @include avariable('padding-bottom', 'tabs-border-bottom-width', $tabs-border-bottom-width); - @include avariable('font-size', 'tabs-font-size', $tabs-font-size); - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('tabs-font-size-' + #{$name}), $value); - } - } - &--centered { - justify-content: center; - } - &--right { - justify-content: flex-end; - } - - &-item { - &-icon { - @include avariable('margin-right', 'tabs-icon-margin', $tabs-icon-margin); - } - &-default { - @include item; - &--active { - @include avariable('border-bottom-color', 'tabs-link-active-border-bottom-color', $tabs-link-active-border-bottom-color); - @include avariable('color', 'tabs-link-active-color', $tabs-link-active-color); - } - &--disabled { - pointer-events: none; - cursor: not-allowed; - @include avariable('opacity', 'tabs-disabled-opacity', $tabs-disabled-opacity); - } - &:hover:not(.o-tabs__nav-item-default--active){ - @include avariable('background-color', 'tabs-link-hover-background-color', $tabs-boxed-link-hover-background-color); - @include avariable('border-bottom-color', 'tabs-link-hover-border-bottom-color', $tabs-boxed-link-hover-border-bottom-color); - } - } - &-boxed { - @include item; - @include avariable('border-radius', 'tabs-border-bottom-color', #{$tabs-boxed-link-radius} #{$tabs-boxed-link-radius} 0 0); - border-bottom-color: transparent; - &--active { - @include avariable('border-bottom-color', 'tabs-link-active-border-bottom-color', $tabs-link-active-border-bottom-color); - @include avariable('color', 'tabs-link-active-color', $tabs-link-active-color); - @include avariable('background-color', 'tabs-boxed-link-active-background-color', $tabs-boxed-link-active-background-color); - @include avariable('border-color', 'tabs-boxed-link-active-border-color', $tabs-boxed-link-active-border-color); - @include avariable('border-bottom-color', 'tabs-boxed-link-active-border-bottom-color', $tabs-boxed-link-active-border-bottom-color); - } - &--disabled { - pointer-events: none; - cursor: not-allowed; - @include avariable('opacity', 'tabs-disabled-opacity', $tabs-disabled-opacity); - } - &:hover:not(.o-tabs__nav-item-boxed--active){ - @include avariable('background-color', 'tabs-boxed-link-hover-background-color', $tabs-boxed-link-hover-background-color); - } - } - &-toggle { - @include item; - @include avariable('border-color', 'tabs-toggle-link-border-color', $tabs-toggle-link-border-color); - @include avariable('border-style', 'tabs-toggle-link-border-style', $tabs-toggle-link-border-style); - @include avariable('border-width', 'tabs-toggle-link-border-width', $tabs-toggle-link-border-width); - margin-bottom: 0; - position: relative; - &--active { - @include avariable('background-color', 'tabs-toggle-link-active-background-color', $tabs-toggle-link-active-background-color); - @include avariable('border-color', 'tabs-toggle-link-active-border-color', $tabs-toggle-link-active-border-color); - @include avariable('color', 'tabs-toggle-link-active-color', $tabs-toggle-link-active-color); - } - &--disabled { - pointer-events: none; - cursor: not-allowed; - @include avariable('opacity', 'tabs-disabled-opacity', $tabs-disabled-opacity); - } - &:hover:not(.o-tabs__nav-item-toggle--active){ - @include avariable('background-color', 'tabs-toggle-link-hover-background-color', $tabs-toggle-link-hover-background-color); - @include avariable('border-color', 'tabs-toggle-link-hover-border-color', $tabs-toggle-link-hover-border-color); - } - } - } - } - - &__content { - position: relative; - overflow: visible; - display: flex; - flex-direction: column; - flex-grow: 1; - @include avariable('padding', 'tabs-content-padding', $tabs-content-padding); - &--transitioning { - overflow: hidden; - } - } - &:not(:last-child) { - @include avariable('margin-bottom', 'tabs-margin-bottom', $tabs-margin-bottom); - } -} diff --git a/packages/oruga/src/scss/components/_timepicker.scss b/packages/oruga/src/scss/components/_timepicker.scss deleted file mode 100644 index 78e2cbb4a..000000000 --- a/packages/oruga/src/scss/components/_timepicker.scss +++ /dev/null @@ -1,58 +0,0 @@ -/* @docs */ -$timepicker-font-size: $base-font-size !default; -$timepicker-box-line-height: $base-line-height !default; -$timepicker-box-padding: .375rem 1rem !default; -$timepicker-footer-padding: 0 .5rem !default; -$timepicker-footer-margin: 0.875rem 0 0 0 !default; -$timepicker-select-line-height: $base-line-height !default; -$timepicker-select-padding: $control-padding-vertical $control-padding-horizontal !default; -$timepicker-select-color: #363636 !default; -$timepicker-select-font-weight: 600 !default; -$timepicker-select-placeholder-opacity: $base-disabled-opacity !default; -$timepicker-separator-font-weight: 600 !default; -/* @docs */ - -.o-tpck { - @include avariable('font-size', 'timepicker-font-size', $timepicker-font-size); - @each $name, $value in $sizes { - &--#{$name} { - @include avariable('font-size', ('timepicker-font-size-' + #{$name}), $value); - } - } - &__dropdown { - width: 100%; - } - &__box { - display: flex; - justify-content: center; - align-items: center; - @include avariable('line-height', 'timepicker-box-line-height', $timepicker-box-line-height); - @include avariable('padding', 'timepicker-box-padding', $timepicker-box-padding); - } - &__select { - -moz-appearance: none; - -webkit-appearance: none; - display: inline-block; - position: relative; - vertical-align: top; - cursor: pointer; - justify-content: flex-start; - align-items: center; - border: 0; - font-size: inherit; - @include avariable('font-weight', 'timepicker-select-font-weight', $timepicker-select-font-weight); - @include avariable('line-height', 'timepicker-select-line-height', $timepicker-select-line-height); - @include avariable('padding', 'timepicker-select-padding', $timepicker-select-padding); - @include avariable('color', 'timepicker-select-color', $timepicker-select-color); - } - &__select-placeholder { - @include avariable('opacity', 'timepicker-select-placeholder-opacity', $timepicker-select-placeholder-opacity); - } - &__separator { - @include avariable('font-weight', 'timepicker-separator-font-weight', $timepicker-separator-font-weight); - } - &__footer { - @include avariable('padding', 'timepicker-header-padding', $timepicker-footer-padding); - @include avariable('margin', 'timepicker-header-margin', $timepicker-footer-margin); - } -} diff --git a/packages/oruga/src/scss/components/_tooltip.scss b/packages/oruga/src/scss/components/_tooltip.scss deleted file mode 100644 index 328da93f4..000000000 --- a/packages/oruga/src/scss/components/_tooltip.scss +++ /dev/null @@ -1,207 +0,0 @@ - -/* @docs */ -$tooltip-arrow-margin: 2px !default; -$tooltip-arrow-size: 5px !default; -$tooltip-background-color: $primary !default; -$tooltip-color: $primary-invert !default; -$tooltip-content-box-shadow: 0px 1px 2px 1px rgba(0, 1, 0, 0.2) !default; -$tooltip-content-font-size: 0.85rem !default; -$tooltip-content-max-width: 300px !default; -$tooltip-content-multiline-width: 300px !default; -$tooltip-content-padding: 0.35rem 0.75rem !default; -$tooltip-content-radius-large: 6px !default; -$tooltip-content-weight-normal: 400 !default; -$tooltip-content-zindex: 38 !default; -/* @docs */ - -$TBLR_CALC_EXPRESSION: "calc(($size + $margin) + 100%)"; - -@mixin tooltip-arrow($direction, $name, $color) { - @if ($direction == "top") { - border-top-style: solid; - @include avariable('border-top-width', 'tooltip-arrow-size', $tooltip-arrow-size); - border-right-style: solid; - border-right-color: transparent; - border-left-style: solid; - border-left-color: transparent; - @include avariable('border-right-width', 'tooltip-arrow-size', $tooltip-arrow-size); - @include avariable('border-left-width', 'tooltip-arrow-size', $tooltip-arrow-size); - } @else if ($direction == "bottom") { - border-bottom-style: solid; - @include avariable('border-bottom-width', 'tooltip-arrow-size', $tooltip-arrow-size); - border-right-style: solid; - border-right-color: transparent; - border-left-style: solid; - border-left-color: transparent; - @include avariable('border-right-width', 'tooltip-arrow-size', $tooltip-arrow-size); - @include avariable('border-left-width', 'tooltip-arrow-size', $tooltip-arrow-size); - } @else if ($direction == "right") { - border-right-style: solid; - @include avariable('border-right-width', 'tooltip-arrow-size', $tooltip-arrow-size); - border-top-style: solid; - border-top-color: transparent; - border-bottom-style: solid; - border-bottom-color: transparent; - @include avariable('border-top-width', 'tooltip-arrow-size', $tooltip-arrow-size); - @include avariable('border-bottom-width', 'tooltip-arrow-size', $tooltip-arrow-size); - } @else if ($direction == "left") { - border-left-style: solid; - @include avariable('border-left-width', 'tooltip-arrow-size', $tooltip-arrow-size); - border-top-style: solid; - border-top-color: transparent; - border-bottom-style: solid; - border-bottom-color: transparent; - @include avariable('border-top-width', 'tooltip-arrow-size', $tooltip-arrow-size); - @include avariable('border-bottom-width', 'tooltip-arrow-size', $tooltip-arrow-size); - } -} - -@mixin tooltip($direction) { - &__arrow { - @if ($direction == "bottom") { - &--bottom { - top: auto; - right: auto; - bottom: 100%; - left: 50%; - transform: translateX(-50%); - @include tooltip-arrow($direction, null, $tooltip-background-color); - } - } @else if ($direction == "top") { - &--top { - top: 100%; - right: auto; - bottom: auto; - left: 50%; - transform: translateX(-50%); - @include tooltip-arrow($direction, null, $tooltip-background-color); - } - } @else if ($direction == "left") { - &--left { - top: 50%; - right: auto; - bottom: auto; - left: 100%; - transform: translateY(-50%); - @include tooltip-arrow($direction, null, $tooltip-background-color); - } - } @else if ($direction == "right") { - &--right { - top: 50%; - right: 100%; - bottom: auto; - left: auto; - transform: translateY(-50%); - @include tooltip-arrow($direction, null, $tooltip-background-color); - } - } - } - &__content { - @if ($direction == "top") { - &--top { - top: auto; - right: auto; - @include evariable( - 'bottom', $TBLR_CALC_EXPRESSION, - eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)), - eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)), - ); - left: 50%; - transform: translateX(-50%); - } - } @else if ($direction == "bottom") { - &--bottom { - @include evariable( - 'top', $TBLR_CALC_EXPRESSION, - eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)), - eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)), - ); - right: auto; - bottom: auto; - left: 50%; - transform: translateX(-50%); - } - } @else if ($direction == "right") { - &--right{ - top: 50%; - right: auto; - bottom: auto; - @include evariable( - 'left', $TBLR_CALC_EXPRESSION, - eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)), - eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)), - ); - transform: translateY(-50%); - } - } @else if ($direction == "left") { - &--left { - top: 50%; - @include evariable( - 'right', $TBLR_CALC_EXPRESSION, - eparam('$size', variable('tooltip-arrow-size', $tooltip-arrow-size)), - eparam('$margin', variable('tooltip-arrow-margin', $tooltip-arrow-margin)), - ); - bottom: auto; - left: auto; - transform: translateY(-50%); - } - } - } -} - -// Base -.o-tip { - @include tooltip("top"); - @include tooltip("right"); - @include tooltip("bottom"); - @include tooltip("left"); - position: relative; - display: inline-flex; - &__arrow { - position: absolute; - content: ""; - pointer-events: none; - @include avariable('z-index', 'tooltip-content-zindex', $tooltip-content-zindex); - @include avariable('color', 'tooltip-background-color', $tooltip-background-color); - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - @include avariable('color', ('variant-' + #{$name}), $color); - } - } - } - &__content { - position: absolute; - white-space: nowrap; - @include avariable('max-width', 'tooltip-content-max-width', $tooltip-content-max-width); - @include avariable('padding', 'tooltip-content-padding', $tooltip-content-padding); - @include avariable('border-radius', 'tooltip-content-radius-large', $tooltip-content-radius-large); - @include avariable('font-size', 'tooltip-content-font-size', $tooltip-content-font-size); - @include avariable('font-weight', 'tooltip-content-weight-normal', $tooltip-content-weight-normal); - @include avariable('box-shadow', 'tooltip-content-box-shadow', $tooltip-content-box-shadow); - @include avariable('z-index', 'tooltip-content-zindex', $tooltip-content-zindex); - @include avariable('background-color', 'tooltip-background-color', $tooltip-background-color); - @include avariable('color', 'tooltip-color', $tooltip-color); - @each $name, $pair in $colors { - $color: nth($pair, 1); - $color-invert: nth($pair, 2); - &--#{$name} { - @include avariable('background', ('variant-' + #{$name}), $color); - @include avariable('color', ('variant-invert-' + #{$name}), $color-invert); - } - } - &--always { - opacity: 1; - visibility: visible; - } - &--multiline { - text-align: center; - white-space: normal; - @include avariable('width', 'tooltip-content-multiline-width', $tooltip-content-multiline-width); - } - } - &__trigger { - width: 100%; - } -} diff --git a/packages/oruga/src/scss/components/_upload.scss b/packages/oruga/src/scss/components/_upload.scss deleted file mode 100644 index e70f2734f..000000000 --- a/packages/oruga/src/scss/components/_upload.scss +++ /dev/null @@ -1,45 +0,0 @@ -/* @docs */ -$upload-draggable-border: 1px dashed $grey-light !default; -$upload-draggable-border-radius: $base-border-radius !default; -$upload-draggable-disabled-opacity: $base-disabled-opacity !default; -$upload-draggable-hover-border-color: $grey !default; -$upload-draggable-padding: 0.25em !default; -/* @docs */ - -.o-upl { - position: relative; - display: inline-flex; - &--disabled { - @include avariable('opacity', 'upload-draggable-disabled-opacity', $upload-draggable-disabled-opacity); - cursor: not-allowed; - } - &--expanded { - width: 100%; - } - &__draggable { - cursor: pointer; - width: 100%; - @include avariable('padding', 'upload-draggable-padding', $upload-draggable-padding); - @include avariable('border', 'upload-draggable-border', $upload-draggable-border); - @include avariable('border-radius', 'upload-draggable-border-radius', $upload-draggable-border-radius); - &--hovered { - @include avariable('border-color', 'upload-draggable-hover-border-color', $upload-draggable-hover-border-color); - @each $name, $pair in $colors { - $color: nth($pair, 1); - &-#{$name} { - @include avariable('border-color', ('variant-' + #{$name}), $color); - } - } - } - } - input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0; - cursor: pointer; - z-index: -1; - } -} diff --git a/packages/oruga/src/scss/oruga-common.scss b/packages/oruga/src/scss/oruga-common.scss deleted file mode 100644 index bf6a78f1b..000000000 --- a/packages/oruga/src/scss/oruga-common.scss +++ /dev/null @@ -1,37 +0,0 @@ - -@import "utilities/_expressions"; -@import "utilities/_variables"; -@import "utilities/_animations"; -@import "utilities/_helpers"; - -@import "utilities/_base"; - -@import "components/_autocomplete"; -@import "components/_button"; -@import "components/_carousel"; -@import "components/_checkbox"; -@import "components/_collapse"; -@import "components/_datepicker"; -@import "components/_datetimepicker"; -@import "components/_dropdown"; -@import "components/_field"; -@import "components/_icon"; -@import "components/_input"; -@import "components/_inputitems"; -@import "components/_loading"; -@import "components/_menu"; -@import "components/_modal"; -@import "components/_notification"; -@import "components/_pagination"; -@import "components/_radio"; -@import "components/_select"; -@import "components/_skeleton"; -@import "components/_sidebar"; -@import "components/_slider"; -@import "components/_steps"; -@import "components/_switch"; -@import "components/_table"; -@import "components/_tabs"; -@import "components/_timepicker"; -@import "components/_tooltip"; -@import "components/_upload"; diff --git a/packages/oruga/src/scss/oruga-full-vars.scss b/packages/oruga/src/scss/oruga-full-vars.scss deleted file mode 100644 index b61d4774c..000000000 --- a/packages/oruga/src/scss/oruga-full-vars.scss +++ /dev/null @@ -1,5 +0,0 @@ - -$css-vars: true; -$sass-vars: true; - -@import "oruga-common.scss"; diff --git a/packages/oruga/src/scss/oruga-full.scss b/packages/oruga/src/scss/oruga-full.scss deleted file mode 100644 index e9d6e721d..000000000 --- a/packages/oruga/src/scss/oruga-full.scss +++ /dev/null @@ -1,5 +0,0 @@ - -$css-vars: false; -$sass-vars: true; - -@import "oruga-common.scss"; diff --git a/packages/oruga/src/scss/oruga.scss b/packages/oruga/src/scss/oruga.scss deleted file mode 100644 index cabe7db7f..000000000 --- a/packages/oruga/src/scss/oruga.scss +++ /dev/null @@ -1,204 +0,0 @@ - -$css-vars: false; -$sass-vars: true; - -@import "utilities/_variables"; -@import "utilities/_helpers"; - -$colors: (); -$sizes: (); - -// autocomplete -$whitelist: add-to-whitelist( - 'autocomplete-menu-background', - 'autocomplete-menu-zindex' -); - -// button -$whitelist: add-to-whitelist( - 'button-background-color', - 'button-color', - 'button-disabled-opacity', - 'button-outlined-background-color' -); - -// carousel -$whitelist: add-to-whitelist( - 'carousel-overlay-zindex', - 'carousel-indicator-size', - 'carousel-indicator-background', - 'carousel-indicator-border', - 'carousel-indicator-active-background', - 'carousel-indicator-active-border', - 'carousel-indicator-size', - 'carousel-indicator-dots-border-radius', - 'carousel-arrow-size', - 'carousel-arrow-background', - 'carousel-arrow-color', - 'carousel-arrow-top', - 'carousel-arrow-icon-spaced' -); - -// checkbox -$whitelist: add-to-whitelist( - 'checkbox-size', - 'checkbox-active-background-color', - 'checkbox-checkmark-color', - 'checkbox-border-color', - 'checkbox-disabled-opacity' -); - -// datepicker -$whitelist: add-to-whitelist( - 'datepicker-item-disabled-color', - 'datepicker-item-selectable-color', - 'datepicker-btn-border-color', - 'datepicker-btn-color', - 'datepicker-item-hovered-background-color', - 'datepicker-item-hovered-color', - 'datepicker-item-selected-background-color', - 'datepicker-item-selected-color', - 'datepicker-item-selected-within-background-color', - 'datepicker-event-background-color' -); - - -// dropdown -$whitelist: add-to-whitelist( - 'dropdown-menu-background', - 'dropdown-mobile-overlay-color', - 'dropdown-disabled-opacity', - 'dropdown-menu-zindex', - 'dropdown-mobile-overlay-zindex', - 'dropdown-mobile-zindex', - 'dropdown-item-active-background-color', - 'dropdown-item-active-color', - 'dropdown-item-disabled-opacity' -); - -// icon -$whitelist: add-to-whitelist( - 'icon-spin-duration' -); - -// input -$whitelist: add-to-whitelist(); - -// inputitems -$whitelist: add-to-whitelist( - 'inputitems-border-style', - 'inputitems-border-color', - 'inputitems-border-width', - 'inputitems-color', - 'inputitems-item-color', - 'inputitems-item-background-color' -); - -// modal -$whitelist: add-to-whitelist( - 'modal-zindex', - 'modal-content-background-color', - 'modal-overlay-background-color', - 'moda-close-size', - 'modal-close-top', - 'modal-close-right' -); - -// notification -$whitelist: add-to-whitelist( - 'notification-background-color', - 'notification-color', - 'notification-close-right', - 'notification-close-top', - 'notification-notices-padding', - 'notification-notices-zindex' -); - -// pagination -$whitelist: add-to-whitelist( - 'pagination-link-current-background-color', - 'pagination-link-current-border-color', - 'pagination-link-current-color' -); - -// radio -$whitelist: add-to-whitelist( - 'radio-size', - 'radio-active-background-color', - 'radio-disabled-opacity' -); - -// select -$whitelist: add-to-whitelist( - 'select-arrow-size' -); - -// sidebar -$whitelist: add-to-whitelist( - 'sidebar-zindex', - 'sidebar-overlay', - 'sidebar-content-background-color' -); - -// slider -$whitelist: add-to-whitelist( - 'slider-track-background', - 'slider-tick-background', - 'slider-fill-background', - 'slider-thumb-size', - 'slider-thumb-background', - 'slider-thumb-border', - 'slider-background', - 'slider-tick-width', - 'slider-track-height' -); - -// skeleton -$whitelist: add-to-whitelist( - 'skeleton-background', - 'skeleton-duration' -); - -// steps -$whitelist: add-to-whitelist( - 'steps-marker-color', - 'steps-marker-border', - 'steps-marker-background', - 'steps-previous-color', - 'steps-active-color', - 'steps-details-background-color' -); - -// switch -$whitelist: add-to-whitelist( - 'switch-width', - 'switch-padding', - 'switch-background', - 'switch-action-background', - 'switch-active-background-color', - 'switch-disabled-opacity', - 'switch-rounded-border-radius' -); - -// tabs -$whitelist: add-to-whitelist( - 'tabs-disabled-opacity', - 'tabs-link-active-color', - 'tabs-link-active-border-bottom-color', - 'tabs-link-color' -); - -// timepicker -$whitelist: add-to-whitelist( - 'timepicker-select-placeholder-opacity' -); - -// tooltip -$whitelist: add-to-whitelist( - 'tooltip-arrow-size', - 'tooltip-arrow-margin', - 'tooltip-content-zindex', - 'tooltip-background-color' -); - -@import "oruga-common.scss"; diff --git a/packages/oruga/src/scss/utilities/_animations.scss b/packages/oruga/src/scss/utilities/_animations.scss deleted file mode 100644 index 9dd2e5f8f..000000000 --- a/packages/oruga/src/scss/utilities/_animations.scss +++ /dev/null @@ -1,209 +0,0 @@ - -// Some of the animations are from animate.css (https://daneden.github.io/animate.css) - -// Fade out -@keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -.fadeOut { - animation-name: fadeOut; -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - transform: translate3d(0, 100%, 0); - } -} -.fadeOutDown { - animation-name: fadeOutDown; -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - transform: translate3d(0, -100%, 0); - } -} -.fadeOutUp { - animation-name: fadeOutUp; -} - -// Fade In -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.fadeIn { - animation-name: fadeIn; -} - -@keyframes fadeInDown { - from { - opacity: 0; - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - transform: none; - } -} -.fadeInDown { - animation-name: fadeInDown; -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translate3d(0, 100%, 0); - } - to { - opacity: 1; - transform: none; - } -} -.fadeInUp { - animation-name: fadeInUp; -} - -@keyframes append-animate { - from { - transform: scale(0); - opacity: 0; - } - to { - transform: scale(1); - opacity: 1; - } -} - -/** - * Vue Transitions - */ - -// Fade -.fade-enter-active, -.fade-leave-active { - transition: opacity $speed-slow $easing; -} -.fade-enter, -.fade-enter-from, -.fade-leave-to { - opacity: 0; -} - -// Zoom In -.zoom-in-enter-active, -.zoom-in-leave-active { - transition: opacity $speed-slow $easing; - .animation-content, - .animation-content { - transition: transform $speed-slow $easing; - } -} -.zoom-in-enter, -.zoom-in-enter-from, -.zoom-in-leave-active { - opacity: 0; - .animation-content, - .animation-content { - transform: scale(0.95); - } -} - -// Zoom Out -.zoom-out-enter-active, -.zoom-out-leave-active { - transition: opacity $speed-slow $easing; - .animation-content, - .animation-content { - transition: transform $speed-slow $easing; - } -} -.zoom-out-enter, -.zoom-out-enter-from, -.zoom-out-leave-active { - opacity: 0; - .animation-content, - .animation-content { - transform: scale(1.05); - } -} - -// Slide -.slide-next-enter-active, -.slide-next-leave-active, -.slide-prev-enter-active, -.slide-prev-leave-active { - transition: transform $speed-slower cubic-bezier(0.785, 0.135, 0.150, 0.860); -} -.slide-prev-leave-to, -.slide-next-enter, -.slide-next-enter-from { - transform: translate3d(-100%, 0, 0); - position: absolute; - width: 100%; -} -.slide-prev-enter, -.slide-prev-enter-from, -.slide-next-leave-to { - transform: translate3d(100%, 0, 0); - position: absolute; - width: 100%; -} - -.slide-down-enter-active, -.slide-down-leave-active, -.slide-up-enter-active, -.slide-up-leave-active { - transition: transform $speed-slower cubic-bezier(0.785, 0.135, 0.150, 0.860); -} -.slide-down-enter, -.slide-up-leave-to, -.slide-down-enter-from { - transform: translate3d(0, -100%, 0); - position: absolute; - height: 100%; -} -.slide-up-enter, -.slide-up-enter-from, -.slide-down-leave-to { - transform: translate3d(0, 100%, 0); - position: absolute; - height: 100%; -} - -.slide-enter-active { - transition: $speed-slow $easing; -} -.slide-leave-active { - transition: $speed-slow $easing; - transition-timing-function: cubic-bezier(0, 1, 0.5, 1); -} -.slide-leave, -.slide-enter-to, -.slide-leave-from { - max-height: 100px; - overflow: hidden; -} -.slide-enter, -.slide-enter-from, -.slide-leave-to { - overflow: hidden; - max-height: 0; -} diff --git a/packages/oruga/src/scss/utilities/_base.scss b/packages/oruga/src/scss/utilities/_base.scss deleted file mode 100644 index afeb4b3a7..000000000 --- a/packages/oruga/src/scss/utilities/_base.scss +++ /dev/null @@ -1,21 +0,0 @@ - -*, :after, :before { - box-sizing: inherit; -} - -html { - box-sizing: border-box; -} - -.o-noscroll { - position: fixed; - overflow-y: hidden; - width: 100%; - bottom: 0; - overflow-x: hidden; - overflow-y: scroll; -} - -.o-clipped { - overflow: hidden; -} diff --git a/packages/oruga/src/scss/utilities/_expressions.scss b/packages/oruga/src/scss/utilities/_expressions.scss deleted file mode 100644 index 8908693c5..000000000 --- a/packages/oruga/src/scss/utilities/_expressions.scss +++ /dev/null @@ -1,3 +0,0 @@ -$SUM_EXPRESSION: "calc($param + $factor)"; -$MULTIPLY_EXPRESSION: "calc($param * $factor)"; -$JOIN_EXPRESSION: "$param1 $param2"; diff --git a/packages/oruga/src/scss/utilities/_helpers.scss b/packages/oruga/src/scss/utilities/_helpers.scss deleted file mode 100644 index aa20e162c..000000000 --- a/packages/oruga/src/scss/utilities/_helpers.scss +++ /dev/null @@ -1,195 +0,0 @@ -@use "sass:list"; - -/// Replaces characters in a string -/// -/// @param {string} $string -/// String where the replace happens -/// @param {string} $search -/// Portion of string to find and replace -/// @param {string} $replace -/// Replacement. Default is ''. -/// @return {string} string with characters replaced. -@function str-replace($string, $search, $replace: '') { - $index: str-index($string, $search); - @return if($index, - str-slice($string, 1, $index - 1) + $replace + - str-replace(str-slice($string, $index + - str-length($search)), $search, $replace), - $string); -} - -/// Encodes an inline svg. Original source code: http://codepen.io/jakob-e/pen/doMoML -/// -/// @param {string} $svg -/// Inline svg to encode -/// @return {string} encoded svg. -@function svg-encode($svg){ - // Chunk up string in order to avoid "stack level too deep" error - $encoded:''; - $slice: 2000; - $index: 0; - $loops: ceil(divide(str-length($svg), $slice)); - @for $i from 1 through $loops { - $chunk: str-slice($svg, $index, $index + $slice - 1); - // Encode - $chunk: str-replace($chunk, '"', '\''); - $chunk: str-replace($chunk, '%', '%25'); - $chunk: str-replace($chunk, '#', '%23'); - $chunk: str-replace($chunk, '{', '%7B'); - $chunk: str-replace($chunk, '}', '%7D'); - $chunk: str-replace($chunk, '<', '%3C'); - $chunk: str-replace($chunk, '>', '%3E'); - - $encoded: #{$encoded}#{$chunk}; - $index: $index + $slice; - } - @return "data:image/svg+xml,#{$encoded}"; -} - -/// Appends a list of variables to $whitelist and return a new whitelist. -/// -/// @param {...} $variables -/// Variables to whitelist -/// @return {list} new whitelist. -/// -/// Example (in components/_radio.scss) -/// $whitelist: add-to-whitelist('radio-active-background-color','radio-focus-sibiling-box-shadow'); -@function add-to-whitelist($variables...) { - @return list.join($whitelist, $variables); -} - -/// Checks if a variable is in $whitelist. -/// -/// @param {string} $variable -/// Variable to check if present in whitelist -/// @return {boolean} true if $variable is in $whitelist, else false. -@function is-in-whitelist($variable) { - @return list.index($whitelist, $variable) != null; -} - -/// Checks if $whitelist is empty -/// -/// @return {boolean} true if $whitelist is empty, else false. -@function is-empty-whitelist() { - @return list.length($whitelist) == 0; -} - -/// Returns a variable. -/// -/// @param {string} $name -/// Variable name -/// @param {string} $value -/// Variable value -/// @param {string} $forceval -/// By default is `false`, if `true` it allows to bypass whitelist and set the value -/// @return {string} the variable or null if not in whitelist when $css-vars == false. -@function variable($name, $value, $forceval: false) { - @if $css-vars == true { - @if is-empty-whitelist() or is-in-whitelist($name) { - @return var(#{$variable-prefix}#{$name}, #{$value}); - } - } @else if $sass-vars == true { - @if is-empty-whitelist() or is-in-whitelist($name) { - @return #{$value}; - } - } @else if $forceval == true { - @return #{$value}; - } - @return null; -} - -/// Returns a pair of `(key,value)` to pass to `evariable` function. -/// -/// @param {string} $key -/// Key of the parameter -/// @param {string} $value -/// Value of the parameter -/// @return {list} list of two elements representing an `eparam` `(key, value)`. -@function eparam($key, $value) { - @return $key, $value; -} - -/// Assigns a specific expression to an attribute -/// -/// @param {string} $attribute -/// The attribute we want to include -/// @param {string} $expression -/// The body of the function we want to write (e.g. `calc($width/$height)`) -/// @param {...} $parameters -/// List of `eparam` to apply to the function -@mixin evariable($attribute, $expression, $parameters...) { - $is_valid: true; - @each $parameter in $parameters { - @if list.nth($parameter, 2) == null { - $is_valid: false; - } - @if str-slice(list.nth($parameter, 1), 0, 1) != "$" { - @error "Parameter #{list.nth($parameter, 1)} should start with $."; - } - $expression: str-replace($expression, list.nth($parameter, 1), list.nth($parameter, 2)); - } - @if $is_valid { - #{$attribute}: #{$expression}; - } -} - -/// Assigns a specific variable to an attribute -/// -/// @param {string} $attribute -/// The attribute we want to include -/// @param {string} $name -/// Variable name -/// @param {string} $value -/// Variable value -@mixin avariable($attribute, $name, $value) { - $variable: variable($name, $value); - @if $variable != null { - #{$attribute}: $variable; - } -} - -@mixin unselectable { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -@mixin side-flex-gap ($gap) { - //flex-wrap: wrap; - margin-left: -$gap; - margin-right: -$gap; - - & > * { - margin-left: $gap; - margin-right: $gap; - } -} - -// Custom divide function by @mdo from https://github.com/twbs/bootstrap/pull/34245 -// Replaces old slash division deprecated in Dart Sass -@function divide($dividend, $divisor, $precision: 10) { - $sign: if($dividend > 0 and $divisor > 0, 1, -1); - $dividend: abs($dividend); - $divisor: abs($divisor); - $quotient: 0; - $remainder: $dividend; - @if $dividend == 0 { - @return 0; - } - @if $divisor == 0 { - @error "Cannot divide by 0"; - } - @if $divisor == 1 { - @return $dividend; - } - @while $remainder >= $divisor { - $quotient: $quotient + 1; - $remainder: $remainder - $divisor; - } - @if $remainder > 0 and $precision > 0 { - $remainder: divide($remainder * 10, $divisor, $precision - 1) * .1; - } - @return ($quotient + $remainder) * $sign; -} diff --git a/packages/oruga/src/scss/utilities/_variables.scss b/packages/oruga/src/scss/utilities/_variables.scss deleted file mode 100644 index 61faebf1e..000000000 --- a/packages/oruga/src/scss/utilities/_variables.scss +++ /dev/null @@ -1,60 +0,0 @@ - - -$base-font-size: 1rem !default; - -$base-border-radius: 4px !default; -$base-rounded-border-radius: 9999px !default; -$base-line-height: 1.5 !default; -$base-disabled-opacity: 0.5 !default; - -$speed: 300ms !default; -$speed-slow: 150ms !default; -$speed-slower: 250ms !default; -$easing: ease-out !default; - -$control-border-width: 1px !default; -$control-height: 2.25em !default; -$control-padding-vertical: calc(0.375em - #{$control-border-width}); -$control-padding-horizontal: calc(0.625em - #{$control-border-width}); - -$whitelist: () !default; -$sass-vars: true !default; -$css-vars: true !default; -$variable-prefix: '--oruga-' !default; - -// Sizes - -$sizes: ( - "small": .75rem, - "medium": 1.25rem, - "large": 1.5rem -) !default; - -// Colors - -$white: #ffffff !default; -$black: #000000 !default; -$grey: #7a7a7a !default; -$grey-light: #b5b5b5 !default; -$grey-lighter: #dbdbdb !default; -$grey-dark: #4a4a4a !default; - -$primary: #445e00 !default; -$primary-invert: $white !default; - -$danger: #b60000 !default; -$danger-invert: $white !default; -$warning: #f4c300 !default; -$warning-invert: $black !default; -$success: #006724 !default; -$success-invert: $white !default; -$info: #005c98 !default; -$info-invert: $white !default; - -$colors: ( - "primary": ($primary, $primary-invert), - "danger" : ($danger, $danger-invert), - "warning" : ($warning, $warning-invert), - "success" : ($success, $success-invert), - "info" : ($info, $info-invert) -) !default; diff --git a/packages/oruga/src/utils/BaseComponentMixin.js b/packages/oruga/src/utils/BaseComponentMixin.js deleted file mode 100644 index 9aa6e75f7..000000000 --- a/packages/oruga/src/utils/BaseComponentMixin.js +++ /dev/null @@ -1,80 +0,0 @@ -import { getOptions } from './config'; -import { getValueByPath, blankIfUndefined, endsWith } from './helpers' - -const _defaultSuffixProcessor = (input, suffix) => { - return blankIfUndefined(input) - .split(' ') - .filter((cls) => cls.length > 0) - .map((cls) => cls + suffix) - .join(' '); -} - -const _getContext = (vm) => { - const computedNames = vm.$options.computed ? Object.keys(vm.$options.computed) : [] - const computed = computedNames.filter(e => !endsWith(e, 'Classes')).reduce((o, key) => { - o[key] = vm[key] - return o - }, {}) - return {props: vm.$props, data: vm.$data, computed} -} - -export default { - isOruga: true, - props: { - /** - * Override classes - */ - override: { - type: Boolean, - default: false - } - }, - methods: { - computedClass(field, defaultValue, suffix='') { - const config = this.$props.override === true ? {} : getOptions(); - - const override = this.$props.override || getValueByPath(config, `${this.$options.configField}.override`, false) - const overrideClass = getValueByPath(config, `${this.$options.configField}.${field}.override`, override) - - const globalTransformClasses = getValueByPath(config, `transformClasses`, undefined) - const localTransformClasses = getValueByPath(config, `${this.$options.configField}.transformClasses`, undefined) - - let globalClass = getValueByPath(config, `${this.$options.configField}.${field}.class`, '') - || getValueByPath(config, `${this.$options.configField}.${field}`, '') - let currentClass = getValueByPath(this.$props, field) - - if (Array.isArray(currentClass)) { - currentClass = currentClass.join(' ') - } - - if (defaultValue.search("{*}") !== -1) { - defaultValue = defaultValue.replace(/\{\*\}/g, suffix); - } else { - defaultValue = defaultValue + suffix - } - - let context = null - if (typeof currentClass === "function") { - context = _getContext(this) - currentClass = currentClass(suffix, context) - } else { - currentClass = _defaultSuffixProcessor(currentClass, suffix) - } - if (typeof globalClass === "function") { - globalClass = globalClass(suffix, context || _getContext(this)) - } else { - globalClass = _defaultSuffixProcessor(globalClass, suffix) - } - let appliedClasses = (`${(override && !overrideClass) || (!override && !overrideClass) ? defaultValue : ''} ` - + `${blankIfUndefined(globalClass)} ` - + `${blankIfUndefined(currentClass)}`).trim().replace(/\s\s+/g, ' '); - if (localTransformClasses) { - appliedClasses = localTransformClasses(appliedClasses) - } - if (globalTransformClasses) { - appliedClasses = globalTransformClasses(appliedClasses) - } - return appliedClasses; - } - } -} diff --git a/packages/oruga/src/utils/BaseComponentMixin.spec.js b/packages/oruga/src/utils/BaseComponentMixin.spec.js deleted file mode 100644 index f5ffe86d8..000000000 --- a/packages/oruga/src/utils/BaseComponentMixin.spec.js +++ /dev/null @@ -1,270 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import BaseComponentMixin from '@utils/BaseComponentMixin' -import OButton from '@components/button/Button' - -import { merge } from '@utils/helpers' -import { getOptions, setOptions } from '@utils/config' - -let wrapper - -describe('BaseComponentMixin', () => { - HTMLElement.prototype.insertAdjacentElement = jest.fn() - beforeEach(() => { - /* component = { - template: '<div class="o-component"></div>' - } */ - wrapper = shallowMount(OButton, { - attachToDocument: true, - mixins: [BaseComponentMixin] - }) - }) - - describe('computedClass method', () => { - it('can use global classes', async () => { - const initialTestValue = 'initial test' - const newTestValue = 'new test' - - setOptions(merge(getOptions(), { - button: { - test: newTestValue - } - }, true)) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('test', initialTestValue)).toBe(`${initialTestValue} ${newTestValue}`) - - setOptions(merge(getOptions(), { - button: { - override: true - } - }, true)) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('test', initialTestValue)).toBe(newTestValue) - }) - - it('applies local classes as expected', async () => { - // TODO test local classes -- rootClass - const initialRootClassValue = 'initial-class' - const newGlobalRootClassValue = 'new-global-class' - const newRootClassValue = 'new-class' - - setOptions(merge(getOptions(), { - button: { - rootClass: newGlobalRootClassValue, - override: false - } - }, true)) - wrapper.setProps({ rootClass: newRootClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`) - - setOptions(merge(getOptions(), { - button: { - override: true - } - }, true)) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${newGlobalRootClassValue} ${newRootClassValue}`) - }) - - it('applies local classes defined as array', async () => { - // TODO test local classes -- rootClass - const initialRootClassValue = 'initial-class' - const newGlobalRootClassValue = 'new-global-class' - const newRootClassValue = ['my-new-class', 'new-class'] - - setOptions(merge(getOptions(), { - button: { - rootClass: newGlobalRootClassValue, - override: false - } - }, true)) - wrapper.setProps({ rootClass: newRootClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue.join(' ')}`) - - setOptions(merge(getOptions(), { - button: { - override: true - } - }, true)) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)).toBe(`${newGlobalRootClassValue} ${newRootClassValue.join(' ')}`) - }) - - it('applies override to single classes', async () => { - const initialRootClassValue = 'initial-class' - const newGlobalRootClassValue = 'new-global-class' - const newRootClassValue = 'new-class' - - const initialSizeClassValue = 'initial-size-class' - const newGlobalSizeClassValue = 'new-global-size-class--' - const newSizeClassValue = 'new-size-class--' - const sizeSuffix = 'centered' - - /* Override all except sizeClass */ - - setOptions({ - button: { - override: true, - rootClass: { - class: newGlobalRootClassValue, - override: false - }, - sizeClass: { - class: newGlobalSizeClassValue, - }, - } - }) - wrapper.setProps({ rootClass: newRootClassValue, sizeClass: newSizeClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`) - - expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix)) - .toBe(`${newGlobalSizeClassValue}${sizeSuffix} ${newSizeClassValue}${sizeSuffix}`) - - - /* Override only sizeClass */ - setOptions({ - button: { - rootClass: { - class: newGlobalRootClassValue, - }, - sizeClass: { - class: newGlobalSizeClassValue, - override: true - }, - } - }) - wrapper.setProps({ rootClass: newRootClassValue, sizeClass: newSizeClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`) - - expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix)) - .toBe(`${newGlobalSizeClassValue}${sizeSuffix} ${newSizeClassValue}${sizeSuffix}`) - - /* Override sizeClass using a function */ - setOptions({ - button: { - rootClass: { - class: newGlobalRootClassValue, - }, - sizeClass: { - class: (suffix) => { - return `${newGlobalSizeClassValue}suff-${suffix}` - }, - override: true - }, - } - }) - wrapper.setProps({ rootClass: newRootClassValue, sizeClass: newSizeClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`) - - expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix)) - .toBe(`${newGlobalSizeClassValue}suff-${sizeSuffix} ${newSizeClassValue}${sizeSuffix}`) - - /* Override sizeClass from prop using a function */ - setOptions({ - button: { - rootClass: { - class: newGlobalRootClassValue, - }, - sizeClass: { - class: (suffix) => { - return `${newGlobalSizeClassValue}suff-${suffix}` - }, - override: true - }, - } - }) - wrapper.setProps({ rootClass: newRootClassValue, sizeClass: (suffix) => `${newSizeClassValue}suff-${suffix}` }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`) - - expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix)) - .toBe(`${newGlobalSizeClassValue}suff-${sizeSuffix} ${newSizeClassValue}suff-${sizeSuffix}`) - - /* Override true as prop */ - wrapper = shallowMount(OButton, { - attachToDocument: true, - mixins: [BaseComponentMixin] - }) - setOptions({ - button: { - rootClass: { - class: newGlobalRootClassValue, - }, - sizeClass: { - class: (suffix) => { - return `${newGlobalSizeClassValue}suff-${suffix}` - }, - }, - } - }) - wrapper.setProps({ override: true, rootClass: newRootClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${newRootClassValue}`) - - expect(wrapper.vm.computedClass('sizeClass', initialSizeClassValue, sizeSuffix)) - .toBe(``) - }) - it('transform global and local classes as expected', async () => { - // TODO test local classes -- rootClass - const initialRootClassValue = 'initial-class' - const newGlobalRootClassValue = 'new-global-class' - const newRootClassValue = 'new-class' - - - // Locally - setOptions({ - button: { - rootClass: newGlobalRootClassValue, - override: false, - transformClasses: (appliedClasses) => { - return appliedClasses.replace(/-/g, '--') - } - } - }) - wrapper.setProps({ rootClass: newRootClassValue }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${initialRootClassValue} ${newGlobalRootClassValue} ${newRootClassValue}`.replace(/-/g, '--')) - - // Globally - setOptions({ - transformClasses: (appliedClasses) => { - return appliedClasses.replace(/-/g, '--') - }, - button: { - rootClass: newGlobalRootClassValue, - override: true - } - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${newGlobalRootClassValue} ${newRootClassValue}`.replace(/-/g, '--')) - - // Both globally and locally - setOptions({ - transformClasses: (appliedClasses) => { - return appliedClasses.replace(/-/g, '__') - }, - button: { - rootClass: newGlobalRootClassValue, - override: true, - transformClasses: (appliedClasses) => { - return appliedClasses.replace(/-/g, '--') - }, - } - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.computedClass('rootClass', initialRootClassValue)) - .toBe(`${newGlobalRootClassValue} ${newRootClassValue}`.replace(/-/g, '--').replace(/-/g, '__')) - }) - }) -}) diff --git a/packages/oruga/src/utils/CheckRadioMixin.js b/packages/oruga/src/utils/CheckRadioMixin.js deleted file mode 100644 index 88f0bc898..000000000 --- a/packages/oruga/src/utils/CheckRadioMixin.js +++ /dev/null @@ -1,61 +0,0 @@ -export default { - props: { - /** @model */ - value: [String, Number, Boolean, Array], - /** - * Same as native value - */ - nativeValue: [String, Number, Boolean, Array], - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: String, - /** - * Same as native disabled - */ - disabled: Boolean, - required: Boolean, - /** - * Same as native name - */ - name: String, - /** - * Size of the control, optional - * @values small, medium, large - */ - size: String - }, - data() { - return { - newValue: this.value, - isIndeterminate : this.indeterminate - } - }, - computed: { - computedValue: { - get() { - return this.newValue - }, - set(value) { - this.newValue = value - this.isIndeterminate = false - this.$emit('input', this.newValue) - } - } - }, - watch: { - /** - * When v-model change, set internal value. - */ - value(value) { - this.newValue = value - } - }, - methods: { - focus() { - // MacOS FireFox and Safari do not focus when clicked - this.$refs.input.focus() - } - } -} diff --git a/packages/oruga/src/utils/CheckRadioMixin.spec.js b/packages/oruga/src/utils/CheckRadioMixin.spec.js deleted file mode 100644 index 5999bfb3b..000000000 --- a/packages/oruga/src/utils/CheckRadioMixin.spec.js +++ /dev/null @@ -1,25 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import CheckRadioMixin from '@utils/CheckRadioMixin' - -let wrapper - -describe('CheckRadioMixin', () => { - HTMLElement.prototype.insertAdjacentElement = jest.fn() - beforeEach(() => { - const component = { - template: '<div class="o-component"></div>' - } - wrapper = shallowMount(component, { - attachToDocument: true, - mixins: [CheckRadioMixin] - }) - }) - - it('set value prop', async () => { - wrapper.setProps({ - value: 'test' - }) - await wrapper.vm.$nextTick() - expect(wrapper.vm.newValue).toEqual('test') - }) -}) diff --git a/packages/oruga/src/utils/FormElementMixin.js b/packages/oruga/src/utils/FormElementMixin.js deleted file mode 100644 index 3aaf36a28..000000000 --- a/packages/oruga/src/utils/FormElementMixin.js +++ /dev/null @@ -1,246 +0,0 @@ -import { getOptions } from './config'; -import { getValueByPath } from './helpers' - -// This should cover all types of HTML elements that have properties related to -// HTML constraint validation, e.g. .form and .validity. -const validatableFormElementTypes = typeof window === 'undefined' ? [] : [ - HTMLButtonElement, - HTMLFieldSetElement, - HTMLInputElement, - HTMLObjectElement, - HTMLOutputElement, - HTMLSelectElement, - HTMLTextAreaElement, -]; - -function asValidatableFormElement(el) { - if (validatableFormElementTypes.some(t => el instanceof t)) { - return el; - } else { - return null; - } -} - -export default { - inject: { - $field: { from: "$field", default: false } - }, - props: { - /** - * Makes input full width when inside a grouped or addon field - */ - expanded: Boolean, - /** - * Makes the element rounded - */ - rounded: Boolean, - /** - * Icon name to be added - */ - icon: String, - /** - * Icon pack to use - * @values mdi, fa, fas and any other custom icon pack - */ - iconPack: String, - /** Native options to use in HTML5 validation */ - autocomplete: String, - /** Same as native maxlength, plus character counter */ - maxlength: [Number, String], - /** Enable html 5 native validation */ - useHtml5Validation: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), "useHtml5Validation", true); - }, - }, - /** Show status icon using field and variant prop */ - statusIcon: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), "statusIcon", true); - }, - }, - /** - * The message which is shown when a validation error occurs - */ - validationMessage: String, - }, - data() { - return { - isValid: true, - isFocused: false, - newIconPack: this.iconPack - }; - }, - computed: { - parentField() { - return this.$field; - }, - - /** - * Get the type prop from parent if it's a Field. - */ - statusVariant() { - if (!this.parentField) return; - if (!this.parentField.newVariant) return; - if (typeof this.parentField.newVariant === "string") { - return this.parentField.newVariant; - } else { - for (const key in this.parentField.newVariant) { - if (this.parentField.newVariant[key]) { - return key; - } - } - } - }, - - /** - * Get the message prop from parent if it's a Field. - */ - statusMessage() { - if (!this.parentField) return; - - return this.parentField.newMessage || this.parentField.hasMessageSlot; - }, - - /** - * Icon name based on the variant. - */ - statusVariantIcon() { - const statusVariantIcon = getValueByPath(getOptions(), "statusVariantIcon", { - 'success': 'check', - 'danger': 'alert-circle', - 'info': 'information', - 'warning': 'alert' - }); - return statusVariantIcon[this.statusVariant] || '' - } - }, - methods: { - /** - * Focus method that work dynamically depending on the component. - */ - focus() { - const el = this.getElement(); - if (el === undefined) return; - - this.$nextTick(() => { - if (el) el.focus(); - }); - }, - - onBlur(event) { - this.isFocused = false; - if (this.parentField) { - this.parentField.isFocused = false; - } - this.$emit("blur", event); - this.checkHtml5Validity(); - }, - - onFocus(event) { - this.isFocused = true; - if (this.parentField) { - this.parentField.isFocused = true; - } - this.$emit("focus", event); - }, - - onInvalid(event) { - this.checkHtml5Validity(); - const validatable = asValidatableFormElement(event.target); - if (validatable && this.parentField && this.useHtml5Validation) { - // We provide our own error message on the field, so we should suppress the browser's default tooltip. - // We still want to focus the form's first invalid input, though. - event.preventDefault(); - let isFirstInvalid = false; - if (validatable.form != null) { - const formElements = validatable.form.elements; - for (let i = 0; i < formElements.length; ++i) { - const element = asValidatableFormElement(formElements.item(i)); - if (element && element.willValidate && !element.validity.valid) { - isFirstInvalid = (validatable === element); - break; - } - } - } - if (isFirstInvalid) { - const fieldElement = this.parentField.$el; - const invalidHandler = getValueByPath(getOptions(), 'reportInvalidInput'); - if (invalidHandler instanceof Function) { - invalidHandler(validatable, fieldElement); - } else { - // We'll scroll to put the whole field in view, not just the element that triggered the event, - // which should mean that the message will be visible onscreen. - // scrollIntoViewIfNeeded() is a non-standard method (but a very common extension). - // If we can't use it, we'll just fall back to focusing the field. - const canScrollToField = fieldElement ? fieldElement.scrollIntoViewIfNeeded != undefined : false; - validatable.focus({ preventScroll: canScrollToField }); - if (canScrollToField) { - fieldElement.scrollIntoViewIfNeeded(); - } - } - } - } - this.$emit("invalid", event); - }, - - getElement() { - let el = this.$refs[this.$elementRef]; - while (el && el.$elementRef) { - el = el.$refs[el.$elementRef]; - } - return el; - }, - - setInvalid() { - const variant = "danger"; - const message = this.validationMessage || this.getElement().validationMessage; - this.setValidity(variant, message); - }, - - setValidity(variant, message) { - this.$nextTick(() => { - if (this.parentField) { - // Set type only if not defined - if (!this.parentField.variant) { - this.parentField.newVariant = variant; - } - // Set message only if not defined - if (!this.parentField.message) { - this.parentField.newMessage = message; - } - } - }); - }, - - /** - * Check HTML5 validation, set isValid property. - * If validation fail, send 'danger' type, - * and error message to parent if it's a Field. - */ - checkHtml5Validity() { - if (!this.useHtml5Validation) return; - - const el = this.getElement(); - if (el === undefined) return; - - if (!el.validity.valid) { - this.setInvalid(); - this.isValid = false; - } else { - this.setValidity(null, null); - this.isValid = true; - } - - return this.isValid; - }, - - syncFilled(value) { - if (this.parentField) { - this.parentField.isFilled = !!value - } - } - } -} diff --git a/packages/oruga/src/utils/FormElementMixin.spec.js b/packages/oruga/src/utils/FormElementMixin.spec.js deleted file mode 100644 index 795cb0058..000000000 --- a/packages/oruga/src/utils/FormElementMixin.spec.js +++ /dev/null @@ -1,41 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import FormElementMixin from '@utils/FormElementMixin' - -let wrapper - -describe('FormElementMixin', () => { - HTMLElement.prototype.insertAdjacentElement = jest.fn() - beforeEach(() => { - const component = { - template: '<div class="o-component"></div>' - } - wrapper = shallowMount(component, { - attachToDocument: true, - mixins: [FormElementMixin] - }) - }) - - it('is valid as default', () => { - expect(wrapper.vm.isValid).toBeTruthy() - }) - - it('should set isFocused and emit focus event on onFocus', (done) => { - wrapper.vm.onFocus() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.isFocused).toBeTruthy() - expect(wrapper.emitted()['focus']).toBeTruthy() - done() - }) - }) - - it('should reset isFocused and emit blur event on onBlur', (done) => { - wrapper.vm.checkHtml5Validity = jest.fn() - wrapper.vm.onBlur() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.isFocused).toBeFalsy() - expect(wrapper.emitted()['blur']).toBeTruthy() - expect(wrapper.vm.checkHtml5Validity).toHaveBeenCalled() - done() - }) - }) -}) diff --git a/packages/oruga/src/utils/InjectedChildMixin.js b/packages/oruga/src/utils/InjectedChildMixin.js deleted file mode 100644 index b8b436819..000000000 --- a/packages/oruga/src/utils/InjectedChildMixin.js +++ /dev/null @@ -1,38 +0,0 @@ -import { defaultIfUndefined, hasFlag } from './helpers' - -const sorted = 1 -const optional = 2 - -export const Sorted = sorted -export const Optional = optional - -export default (parentItemName, flags = 0) => { - const mixin = { - inject: { - parent: { from: 'o' + parentItemName } - }, - created() { - this.newValue = defaultIfUndefined(this.value, this.parent._nextSequence()) - if (!this.parent) { - if (!hasFlag(flags, optional)) { - throw new Error('You should wrap ' + this.$options.name + ' in a ' + parentItemName) - } - } else { - this.parent._registerItem(this) - } - }, - beforeDestroy() { - if (this.parent) { - this.parent._unregisterItem(this) - } - } - } - if (hasFlag(flags, sorted)) { - mixin.data = () => { - return { - index: null - } - } - } - return mixin -} diff --git a/packages/oruga/src/utils/InstanceRegistry.js b/packages/oruga/src/utils/InstanceRegistry.js deleted file mode 100644 index 455a55f11..000000000 --- a/packages/oruga/src/utils/InstanceRegistry.js +++ /dev/null @@ -1,22 +0,0 @@ -function InstanceRegistry() { - this.entries = [] -} - -InstanceRegistry.prototype = { - add(entry) { - this.entries.push(entry) - }, - remove(entry) { - let index = this.entries.indexOf(entry) - this.entries.splice(index, 1) - }, - walk(callback) { - // Walk a copy of the array so that the callback is allowed to remove the instance - this.entries = [...this.entries].filter((e) => { - const ret = callback(e) - return !(ret === true) - }) - }, -} - -export default InstanceRegistry diff --git a/packages/oruga/src/utils/InstanceRegistry.spec.js b/packages/oruga/src/utils/InstanceRegistry.spec.js deleted file mode 100644 index bd10d81f5..000000000 --- a/packages/oruga/src/utils/InstanceRegistry.spec.js +++ /dev/null @@ -1,173 +0,0 @@ -import InstanceRegistry from '@utils/InstanceRegistry' - -describe('InstanceRegistry', () => { - describe('.add', () => { - it('registers the new entry', () => { - const myEntry = {key: 1} - const registry = new InstanceRegistry() - - registry.add(myEntry) - - expect(registry.entries).toContain(myEntry) - }) - }) - - describe('.remove', () => { - it('removes a registered entry', () => { - const myEntry = {key: 1} - const registry = new InstanceRegistry() - registry.add(myEntry) - - myEntry.other = 2 - - registry.remove(myEntry) - - expect(registry.entries).not.toContain(myEntry) - }) - }) - - describe('.walk', () => { - it('walks all the entries', () => { - const myEntry = {key: 1} - const registry = new InstanceRegistry() - registry.add(myEntry) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - }) - - expect(walked).toHaveLength(1) - }) - - it('keeps the entries', () => { - const myEntry = {key: 1} - const registry = new InstanceRegistry() - registry.add(myEntry) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - }) - - expect(registry.entries).toHaveLength(1) - expect(registry.entries).toContain(myEntry) - }) - - describe('when the callback returns true for some entries', () => { - it('walks all the entries', () => { - const myEntry = {key: 1} - const myEntry2 = {key: 2, remove: true} - const registry = new InstanceRegistry() - registry.add(myEntry) - registry.add(myEntry2) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - return entry.remove === true - }) - - expect(walked).toHaveLength(2) - }) - - it('removes the entries when the callback returns true', () => { - const myEntry = {key: 1} - const myEntry2 = {key: 2, remove: true} - const registry = new InstanceRegistry() - registry.add(myEntry) - registry.add(myEntry2) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - return entry.remove === true - }) - - expect(registry.entries).toHaveLength(1) - expect(registry.entries).toContain(myEntry) - expect(registry.entries).not.toContain(myEntry2) - }) - }) - - describe('when the callback returns true for early entries', () => { - it('walks all the entries', () => { - const myEntry = {key: 1, remove: true} - const myEntry2 = {key: 2} - const registry = new InstanceRegistry() - registry.add(myEntry) - registry.add(myEntry2) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - return entry.remove === true - }) - - expect(walked).toHaveLength(2) - }) - - it('removes the entries when the callback returns true', () => { - const myEntry = {key: 1, remove: true} - const myEntry2 = {key: 2} - const registry = new InstanceRegistry() - registry.add(myEntry) - registry.add(myEntry2) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - return entry.remove === true - }) - - expect(registry.entries).toHaveLength(1) - expect(registry.entries).toContain(myEntry2) - expect(registry.entries).not.toContain(myEntry) - }) - }) - - describe('when the callback itself removes the entries', () => { - it('walks all the entries', () => { - const myEntry = {key: 1, remove: true} - const myEntry2 = {key: 2} - const registry = new InstanceRegistry() - registry.add(myEntry) - registry.add(myEntry2) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - if (entry.remove) registry.remove(entry) - }) - - expect(walked).toHaveLength(2) - }) - - it('removes the entries when the callback returns true', () => { - const myEntry = {key: 1, remove: true} - const myEntry2 = {key: 2} - const registry = new InstanceRegistry() - registry.add(myEntry) - registry.add(myEntry2) - - const walked = [] - - registry.walk((entry) => { - walked.push(entry) - return entry.remove === true - }) - - expect(registry.entries).toHaveLength(1) - expect(registry.entries).toContain(myEntry2) - expect(registry.entries).not.toContain(myEntry) - }) - }) - }) -}) diff --git a/packages/oruga/src/utils/MatchMediaMixin.js b/packages/oruga/src/utils/MatchMediaMixin.js deleted file mode 100644 index 952b5d2aa..000000000 --- a/packages/oruga/src/utils/MatchMediaMixin.js +++ /dev/null @@ -1,41 +0,0 @@ -import { getOptions } from './config' -import { getValueByPath } from './helpers' - -export default { - props: { - /** - * Mobile breakpoint as max-width value - */ - mobileBreakpoint: String - }, - data() { - return { - isMatchMedia: undefined - }; - }, - methods: { - onMatchMedia(event) { - this.isMatchMedia = event.matches - } - }, - mounted() { - let width = this.mobileBreakpoint - if (!width) { - const config = getOptions() - const defaultWidth = getValueByPath(config, 'mobileBreakpoint', '1023px') - width = getValueByPath(config, `${this.$options.configField}.mobileBreakpoint`, defaultWidth) - } - this.$mediaRef = window.matchMedia(`(max-width: ${width})`) - if (this.$mediaRef) { - this.isMatchMedia = this.$mediaRef.matches - this.$mediaRef.addEventListener('change', this.onMatchMedia) - } else { - this.isMatchMedia = false - } - }, - unmounted() { - if (this.$mediaRef) { - this.$mediaRef.removeEventListener('change', this.onMatchMedia) - } - } -} diff --git a/packages/oruga/src/utils/MessageMixin.js b/packages/oruga/src/utils/MessageMixin.js deleted file mode 100644 index 0c19d12f4..000000000 --- a/packages/oruga/src/utils/MessageMixin.js +++ /dev/null @@ -1,110 +0,0 @@ -import Icon from '../components/icon/Icon' - -export default { - components: { - [Icon.name]: Icon - }, - props: { - /** Whether modal is active or not, use the .sync modifier (Vue 2.x) or v-model:active (Vue 3.x) to make it two-way binding */ - active: { - type: Boolean, - default: true - }, - /** Adds an 'X' button that closes the notification. */ - closable: { - type: Boolean, - default: false - }, - /** Message text (can contain HTML). */ - message: String, - /** Type (color) of the notification, optional. */ - type: String, - /** Adds an icon on the left side depending on the type (or the icon prop if defined). */ - hasIcon: Boolean, - /** Icon name to use with has-icon. */ - icon: String, - /** Icon pack to use. */ - iconPack: String, - /** Icon size */ - iconSize: { - type: String, - default: 'large' - }, - /** Hide notification after duration only not programmatic. */ - autoClose: { - type: Boolean, - default: false - }, - /** Visibility duration in miliseconds. */ - duration: { - type: Number, - default: 2000 - } - }, - data() { - return { - isActive: this.active - } - }, - watch: { - active(value) { - this.isActive = value - }, - isActive(value) { - if (value) { - this.setAutoClose() - } else { - if (this.timer) { - clearTimeout(this.timer) - } - } - } - }, - computed: { - /** - * Icon name (MDI) based on type. - */ - computedIcon() { - if (this.icon) { - return this.icon - } - switch (this.type) { - case 'info': - return 'information' - case 'success': - return 'check-circle' - case 'warning': - return 'alert' - case 'danger': - return 'alert-circle' - default: - return null - } - } - }, - methods: { - /** - * Close the Message and emit events. - */ - close() { - this.isActive = false - this.$emit('close', ...arguments) - this.$emit('update:active', false) - }, - /** - * Set timer to auto close message - */ - setAutoClose() { - if (this.autoClose) { - this.timer = setTimeout(() => { - if (this.isActive) { - this.close({action: 'close', method: 'timeout'}) - } - }, this.duration) - } - } - }, - mounted() { - this.setAutoClose() - } -} diff --git a/packages/oruga/src/utils/MessageMixin.spec.js b/packages/oruga/src/utils/MessageMixin.spec.js deleted file mode 100644 index 01d11c378..000000000 --- a/packages/oruga/src/utils/MessageMixin.spec.js +++ /dev/null @@ -1,52 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import MessageMixin from '@utils/MessageMixin' - -let wrapper - -describe('MessageMixin', () => { - HTMLElement.prototype.insertAdjacentElement = jest.fn() - beforeEach(() => { - const component = { - template: '<div class="o-component"></div>' - } - wrapper = shallowMount(component, { - attachToDocument: true, - mixins: [MessageMixin] - }) - }) - - it('is active', () => { - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('should set isActive when active is set', (done) => { - wrapper.setProps({active: false}) - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.isActive).toBeFalsy() - done() - }) - }) - - it('should return correct icon depending on type', () => { - const expected = { - 'info': 'information', - 'success': 'check-circle', - 'warning': 'alert', - 'danger': 'alert-circle', - 'other': null - } - for (let [key, value] of Object.entries(expected)) { - wrapper.setProps({type: key}) - expect(wrapper.vm.computedIcon).toEqual(value) - } - }) - - it('should reset isActive and emit close event on close', (done) => { - wrapper.vm.close() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.isActive).toBeFalsy() - expect(wrapper.emitted()['close']).toBeTruthy() - done() - }) - }) -}) diff --git a/packages/oruga/src/utils/NoticeMixin.js b/packages/oruga/src/utils/NoticeMixin.js deleted file mode 100644 index a7fc66dfa..000000000 --- a/packages/oruga/src/utils/NoticeMixin.js +++ /dev/null @@ -1,193 +0,0 @@ -import { getOptions } from './config' -import { getValueByPath, removeElement, promiseObject } from './helpers' - -export default { - props: { - /** Type (color) of the notification, optional. */ - type: { - type: String, - }, - /** Message text (can contain HTML). */ - message: [String, Array], - /** Visibility duration in miliseconds. */ - duration: { - type: Number, - default: () => { - return getValueByPath(getOptions(), 'notification.duration', 1000) - } - }, - /** If should queue with others notices (snackbar/toast/notification). */ - queue: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'notification.noticeQueue', false) - } - }, - /** Show the Notification indefinitely until it is dismissed when programmatically. */ - indefinite: { - type: Boolean, - default: false - }, - /** Which position the notification will appear when programmatically. */ - position: { - type: String, - default: 'top', - validator(value) { - return [ - 'top-right', - 'top', - 'top-left', - 'bottom-right', - 'bottom', - 'bottom-left' - ].indexOf(value) > -1 - } - }, - /** DOM element the toast will be created on. Note that this also changes the position of the toast from fixed to absolute. Meaning that the container should be fixed. */ - container: { - type: String, - default: () => { - return getValueByPath(getOptions(), 'notification.containerElement', undefined) - } - }, - /** @ignore */ - programmatic: Object, - /** @ignore */ - promise: promiseObject(), - /** Callback function to call after close (programmatically close or user canceled) */ - onClose: { - type: Function, - default: () => {} - } - }, - data() { - return { - isActive: false, - parentTop: null, - parentBottom: null, - newDuration: this.duration, - newContainer: this.container - } - }, - computed: { - correctParent() { - switch (this.position) { - case 'top-right': - case 'top': - case 'top-left': - return this.parentTop - - case 'bottom-right': - case 'bottom': - case 'bottom-left': - return this.parentBottom - } - }, - transition() { - switch (this.position) { - case 'top-right': - case 'top': - case 'top-left': - return { - enter: 'fadeInDown', - leave: 'fadeOut' - } - case 'bottom-right': - case 'bottom': - case 'bottom-left': - return { - enter: 'fadeInUp', - leave: 'fadeOut' - } - } - } - }, - methods: { - shouldQueue() { - if (!this.queue) return false - return ( - this.parentTop.childElementCount > 0 || - this.parentBottom.childElementCount > 0 - ) - }, - - close() { - clearTimeout(this.timer) - this.$emit('close') - this.onClose.apply(null, arguments) - - if (this.programmatic) { - if (this.programmatic.instances) { - this.programmatic.instances.remove(this) - } - if (this.programmatic.resolve) { - this.programmatic.resolve.apply(null, arguments) - } - } - - // Timeout for the animation complete before destroying - setTimeout(() => { - this.isActive = false - this.$destroy() - removeElement(this.$el) - }, 150) - }, - - showNotice() { - if (this.shouldQueue()) this.correctParent.innerHTML = '' - this.correctParent.insertAdjacentElement('afterbegin', this.$el) - this.isActive = true - - if (!this.indefinite) { - this.timer = setTimeout(() => this.timeoutCallback(), this.newDuration) - } - }, - - setupContainer() { - if (this.rootClasses() && this.positionClasses('top') && this.positionClasses('bottom')) { - this.parentTop = document.querySelector((this.newContainer ? this.newContainer : 'body') + `>.${this.rootClasses().join('.')}.${this.positionClasses('top').join('.')}`) - this.parentBottom = document.querySelector((this.newContainer ? this.newContainer : 'body') + `>.${this.rootClasses().join('.')}.${this.positionClasses('bottom').join('.')}`) - - if (this.parentTop && this.parentBottom) return - - if (!this.parentTop) { - this.parentTop = document.createElement('div') - this.parentTop.className = `${this.rootClasses().join(' ')} ${this.positionClasses('top').join(' ')}` - } - - if (!this.parentBottom) { - this.parentBottom = document.createElement('div') - this.parentBottom.className = `${this.rootClasses().join(' ')} ${this.positionClasses('bottom').join(' ')}` - } - - const container = document.querySelector(this.newContainer) || document.body - - container.appendChild(this.parentTop) - container.appendChild(this.parentBottom) - - if (this.newContainer) { - const classes = this.noticeCustomContainerClasses() - if (classes && classes.length) { - classes.filter(c => !!c).forEach(c => { - this.parentTop.classList.add(c) - this.parentBottom.classList.add(c) - }) - } - } - } - }, - - timeoutCallback() { - return this.close({action: 'close', method: 'timeout'}) - } - }, - beforeMount() { - this.setupContainer() - }, - mounted() { - if (this.programmatic && this.programmatic.instances) { - this.programmatic.instances.add(this) - } - this.showNotice() - } -} diff --git a/packages/oruga/src/utils/NoticeMixin.spec.js b/packages/oruga/src/utils/NoticeMixin.spec.js deleted file mode 100644 index 8e95d840d..000000000 --- a/packages/oruga/src/utils/NoticeMixin.spec.js +++ /dev/null @@ -1,56 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import NoticeMixin from '@utils/NoticeMixin' -import BaseComponentMixin from '@utils/BaseComponentMixin' - -let wrapper - -describe('NoticeMixin', () => { - HTMLElement.prototype.insertAdjacentElement = jest.fn() - beforeEach(() => { - const component = { - template: '<div class="o-component"></div>', - methods: { - rootClasses() { return ['o-notices']}, - positionClasses(position) {return ['o-notices--' + position]} - } - } - wrapper = shallowMount(component, { - mixins: [BaseComponentMixin, NoticeMixin] - }) - }) - - it('is active', () => { - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('returns correct transition depending on position', () => { - const topTransition = { - enter: 'fadeInDown', - leave: 'fadeOut' - } - const bottomTransition = { - enter: 'fadeInUp', - leave: 'fadeOut' - } - const expected = { - 'top': topTransition, - 'top-right': topTransition, - 'top-left': topTransition, - 'bottom': bottomTransition, - 'bottom-right': bottomTransition, - 'bottom-left': bottomTransition - } - for (let [key, value] of Object.entries(expected)) { - wrapper.setProps({position: key}) - expect(wrapper.vm.transition).toEqual(value) - } - - expect(wrapper.vm.isActive).toBeTruthy() - }) - - it('reset isActive on close', async () => { - wrapper.vm.close() - await new Promise(resolve => setTimeout(resolve, 200)); - expect(wrapper.vm.isActive).toBeFalsy() - }) -}) diff --git a/packages/oruga/src/utils/ProviderParentMixin.js b/packages/oruga/src/utils/ProviderParentMixin.js deleted file mode 100644 index 76dbade93..000000000 --- a/packages/oruga/src/utils/ProviderParentMixin.js +++ /dev/null @@ -1,60 +0,0 @@ -import { hasFlag } from './helpers' - -const items = 1 -const sorted = 3 - -export const Items = items -export const Sorted = sorted - -export default (itemName, flags = 0) => { - const mixin = { - provide() { - return { - ['o' + itemName]: this - } - } - } - - if (hasFlag(flags, items)) { - mixin.data = function () { - return { - childItems: [], - sequence: 1 - } - } - mixin.methods = { - _registerItem(item) { - item.index = this.childItems.length - this.childItems.push(item) - if (this.$el) { - this.$nextTick(() => { - const ids = this.childItems.map(it => `#${itemName}-${it.newValue}`).join(',') - const sortedIds = Array.from(this.$el.querySelectorAll(ids)) - .map(el => el.id.replace(`${itemName}-`, '')) - this.childItems.forEach(it => it.index = sortedIds.indexOf(`${it.newValue}`)) - }) - } - }, - _unregisterItem(item) { - this.childItems = this.childItems.filter((i) => i !== item) - }, - _nextSequence() { - return this.sequence++ - } - } - - if (hasFlag(flags, sorted)) { - mixin.computed = { - /** - * When items are added/removed sort them according to their position - */ - sortedItems() { - return this.childItems.slice().sort((i1, i2) => { - return i1.index - i2.index - }) - } - } - } - } - return mixin -} diff --git a/packages/oruga/src/utils/SlotComponent.js b/packages/oruga/src/utils/SlotComponent.js deleted file mode 100644 index cac1b82fb..000000000 --- a/packages/oruga/src/utils/SlotComponent.js +++ /dev/null @@ -1,42 +0,0 @@ -export default { - name: 'OSlotComponent', - props: { - component: { - type: Object, - required: true - }, - name: { - type: String, - default: 'default' - }, - scoped: { - type: Boolean - }, - props: { - type: Object - }, - tag: { - type: String, - default: 'div' - }, - event: { - type: String, - default: 'hook:updated' - } - }, - methods: { - refresh() { - this.$forceUpdate() - } - }, - created() { - this.component.$on(this.event, this.refresh) - }, - beforeDestroy() { - this.component.$off(this.event, this.refresh) - }, - render(h) { - const slot = this.scoped ? this.component.$scopedSlots[this.name](this.props) : this.component.$slots[this.name] - return h(this.tag, {}, slot) - } -} diff --git a/packages/oruga/src/utils/SlotComponent.spec.js b/packages/oruga/src/utils/SlotComponent.spec.js deleted file mode 100644 index 91a2efa91..000000000 --- a/packages/oruga/src/utils/SlotComponent.spec.js +++ /dev/null @@ -1,125 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import OSlotComponent from '@utils/SlotComponent' - -describe('OSlotComponent', () => { - const MockComponent = { - render: (h) => h('div', {}, 'Hello!') - } - const defaultEvent = 'hook:updated' - - it('default render', () => { - const slot = '<span>Content</span>' - const Component = shallowMount(MockComponent, { - slots: { - default: slot - } - }) - const wrapper = shallowMount(OSlotComponent, { - propsData: { - component: Component.vm - } - }) - expect(wrapper.html()).toBe(`<div>${slot}</div>`) - }) - - it('render', () => { - const slot = '<span>Content</span>' - const slotName = 'header' - const Component = shallowMount(MockComponent, { - slots: { - [slotName]: slot - } - }) - const tag = 'span' - const wrapper = shallowMount(OSlotComponent, { - propsData: { - component: Component.vm, - tag: tag, - name: slotName - } - }) - expect(wrapper.html()).toBe(`<${tag}>${slot}</${tag}>`) - }) - - it('render after emit event', async () => { - const slot = '<span>Content</span>' - const Component = shallowMount(MockComponent, { - slots: { - default: slot - } - }) - const wrapper = shallowMount(OSlotComponent, { - propsData: { - component: Component.vm - } - }) - Component.vm.$emit(defaultEvent, {}) - await wrapper.vm.$nextTick() - expect(wrapper.html()).toBe(`<div>${slot}</div>`) - }) - - it('refresh after default event (hook)', async () => { - const slot = '<span>Content</span>' - const Component = shallowMount(MockComponent, { - slots: { - default: slot - } - }) - const refresh = jest.fn() - const wrapper = shallowMount(OSlotComponent, { - propsData: { - component: Component.vm - }, - methods: { - refresh - } - }) - Component.vm.$forceUpdate() - await Component.vm.$nextTick() - expect(wrapper.html()).toBe(`<div>${slot}</div>`) - }) - - it('refresh', () => { - const event = 'component-event' - const slot = '<span>Content</span>' - const Component = shallowMount(MockComponent, { - slots: { - default: slot - } - }) - const refresh = jest.fn() - const wrapper = shallowMount(OSlotComponent, { - propsData: { - component: Component.vm, - event - }, - methods: { - refresh - } - }) - Component.vm.$emit(event, {}) - expect(refresh).toHaveBeenCalledTimes(1) - expect(wrapper.html()).toBe(`<div>${slot}</div>`) - }) - - it('destroy', () => { - const slot = '<span>Content</span>' - const Component = shallowMount(MockComponent, { - slots: { - default: slot - } - }) - const refresh = jest.fn() - const wrapper = shallowMount(OSlotComponent, { - propsData: { - component: Component.vm - }, - methods: { - refresh - } - }) - wrapper.destroy() - Component.vm.$emit(defaultEvent, {}) - expect(refresh).toHaveBeenCalledTimes(0) - }) -}) diff --git a/packages/oruga/src/utils/TabbedChildMixin.js b/packages/oruga/src/utils/TabbedChildMixin.js deleted file mode 100644 index 5d1e80767..000000000 --- a/packages/oruga/src/utils/TabbedChildMixin.js +++ /dev/null @@ -1,104 +0,0 @@ -import { default as InjectedChildMixin, Sorted } from './InjectedChildMixin' - -export default (parentCmp) => ({ - mixins: [InjectedChildMixin(parentCmp, Sorted)], - props: { - /** - * Item value (it will be used as v-model of wrapper component) - */ - value: [String, Number], - /** - * Item label - */ - label: String, - /** - * Icon on the left - */ - icon: String, - /** - * Icon pack - */ - iconPack: String, - /** - * Show/hide item - */ - visible: { - type: Boolean, - default: true - }, - /** - * Header class of the item - */ - headerClass: [String, Array, Object] - }, - data() { - return { - transitionName: undefined, - newValue: this.value - } - }, - computed: { - isActive() { - return this.parent.activeItem === this - }, - elementClasses() { - return [] - } - }, - methods: { - /** - * Activate element, alter animation name based on the index. - */ - activate(oldIndex) { - this.transitionName = this.index < oldIndex - ? this.parent.vertical ? 'slide-down' : 'slide-next' - : this.parent.vertical ? 'slide-up' : 'slide-prev' - - this.$emit("activate") - }, - - /** - * Deactivate element, alter animation name based on the index. - */ - deactivate(newIndex) { - this.transitionName = newIndex < this.index - ? this.parent.vertical ? 'slide-down' : 'slide-next' - : this.parent.vertical ? 'slide-up' : 'slide-prev' - } - }, - render(h) { - // if destroy apply v-if - if (this.parent.destroyOnHide) { - if (!this.isActive || !this.visible) return - } - const vnode = h( - 'div', - { - directives: [{ name: 'show', value: this.isActive && this.visible }], - attrs: { - 'class': this.elementClasses, - 'id': `${parentCmp}-${this.newValue}`, - 'tabindex': this.isActive ? 0 : -1 - } - }, - this.$slots.default - ) - // check animated prop - if (this.parent.animated) { - return h( - 'transition', - { - props: { - 'name': this.transitionName - }, - on: { - 'before-enter': () => { this.parent.isTransitioning = true }, - 'after-enter': () => { this.parent.isTransitioning = false } - } - }, - [vnode] - ) - } - return vnode - } -}) diff --git a/packages/oruga/src/utils/TabbedMixin.js b/packages/oruga/src/utils/TabbedMixin.js deleted file mode 100644 index 05ea35c85..000000000 --- a/packages/oruga/src/utils/TabbedMixin.js +++ /dev/null @@ -1,147 +0,0 @@ -import Icon from '../components/icon/Icon' -import SlotComponent from '../utils/SlotComponent' -import { default as ProviderParentMixin, Sorted } from './ProviderParentMixin' -import { mod } from './helpers' - -export default (cmp) => ({ - mixins: [ProviderParentMixin(cmp, Sorted)], - components: { - [Icon.name]: Icon, - [SlotComponent.name]: SlotComponent - }, - props: { - /** @model */ - value: [String, Number], - /** - * Color of the control, optional - * @values primary, info, success, warning, danger, and any other custom color - */ - variant: [String, Object], - /** - * Tab size, optional - * @values small, medium, large - */ - size: String, - animated: { - type: Boolean, - default: true - }, - /** Show tab in vertical layout */ - vertical: { - type: Boolean, - default: false - }, - /** - * Position of the tab, optional - * @values centered, right - */ - position: String, - /** Destroy tab on hide */ - destroyOnHide: { - type: Boolean, - default: false - } - }, - data() { - return { - activeId: this.value, - contentHeight: 0, - isTransitioning: false - } - }, - computed: { - activeItem() { - return this.activeId !== undefined && this.activeId !== null - ? this.childItems.filter((i) => i.newValue === this.activeId)[0] : this.items[0] - }, - activeIndex() { - return this.childItems.findIndex((item => item.newValue === this.activeId)) - }, - items() { - return this.sortedItems - } - }, - watch: { - /** - * When v-model is changed set the new active tab. - */ - value(value) { - if (this.activeId !== value) { - this.performAction(value) - } - }, - }, - methods: { - /** - * Child click listener, emit input event and change active child. - */ - childClick(child) { - if (this.activeId !== child.newValue) { - this.performAction(child.newValue) - this.$emit('input', this.activeId) - } - }, - /** - * Select the first 'viable' child, starting at startingIndex and in the direction specified - * by the boolean parameter forward. In other words, first try to select the child at index - * startingIndex, and if it is not visible or it is disabled, then go to the index in the - * specified direction until either returning to startIndex or finding a viable child item. - */ - clickFirstViableChild(startingIndex, forward) { - let direction = forward ? 1 : -1; - let newIndex = startingIndex - for(; newIndex !== this.activeIndex; newIndex = mod((newIndex + direction), this.childItems.length)) { - // Break if the item at this index is viable (not disabled and is visible) - if(this.childItems[newIndex].visible && !this.childItems[newIndex].disabled) { - break - } - } - this.childClick(this.childItems[newIndex]) - }, - /** - * Go to the next item or wrap around - */ - next() { - let newIndex = mod((this.activeIndex + 1), this.childItems.length) - this.clickFirstViableChild(newIndex, true) - }, - /** - * Go to the previous item or wrap around - */ - prev() { - let newIndex = mod(this.activeIndex - 1, this.childItems.length ) - this.clickFirstViableChild(newIndex, false) - }, - /** - * Go to the first viable item - */ - homePressed() { - if (this.childItems.length < 1) { - return - } - this.clickFirstViableChild(0, true) - }, - /** - * Go to the last viable item - */ - endPressed() { - if (this.childItems.length < 1) { - return - } - this.clickFirstViableChild(this.childItems.length - 1, false) - }, - /** - * Activate next child and deactivate prev child - */ - performAction(newId) { - const oldValue = this.activeId - const oldTab = oldValue !== undefined && oldValue !== null - ? this.childItems.filter((i) => i.newValue === oldValue)[0] : this.items[0] - this.activeId = newId - if (oldTab && this.activeItem) { - oldTab.deactivate(this.activeItem.index) - this.activeItem.activate(oldTab.index) - } - } - } -}) diff --git a/packages/oruga/src/utils/TimepickerMixin.js b/packages/oruga/src/utils/TimepickerMixin.js deleted file mode 100644 index 581702ef8..000000000 --- a/packages/oruga/src/utils/TimepickerMixin.js +++ /dev/null @@ -1,753 +0,0 @@ -import { getOptions } from './config' -import FormElementMixin from './FormElementMixin' -import { getValueByPath, isMobile, matchWithGroups } from './helpers' - -const AM = 'AM' -const PM = 'PM' -const HOUR_FORMAT_24 = '24' -const HOUR_FORMAT_12 = '12' - -const defaultTimeFormatter = (date, vm) => { - return vm.dtf.format(date) -} - -const defaultTimeParser = (timeString, vm) => { - if (timeString) { - let d = null - if (vm.computedValue && !isNaN(vm.computedValue)) { - d = new Date(vm.computedValue) - } else { - d = vm.timeCreator() - d.setMilliseconds(0) - } - - if (vm.dtf.formatToParts && typeof vm.dtf.formatToParts === 'function') { - const formatRegex = vm.dtf - .formatToParts(d).map((part) => { - if (part.type === 'literal') { - return part.value.replace(/ /g, '\\s?') - } else if (part.type === 'dayPeriod') { - return `((?!=<${part.type}>)(${vm.amString}|${vm.pmString}|${AM}|${PM}|${AM.toLowerCase()}|${PM.toLowerCase()})?)` - } - return `((?!=<${part.type}>)\\d+)` - }).join('') - const timeGroups = matchWithGroups(formatRegex, timeString) - - // We do a simple validation for the group. - // If it is not valid, it will fallback to Date.parse below - timeGroups.hour = timeGroups.hour ? parseInt(timeGroups.hour, 10) : null - timeGroups.minute = timeGroups.minute ? parseInt(timeGroups.minute, 10) : null - timeGroups.second = timeGroups.second ? parseInt(timeGroups.second, 10) : null - if ( - timeGroups.hour && - timeGroups.hour >= 0 && - timeGroups.hour < 24 && - timeGroups.minute && - timeGroups.minute >= 0 && - timeGroups.minute < 59 - ) { - if (timeGroups.dayPeriod && - ( - timeGroups.dayPeriod.toLowerCase() === vm.pmString.toLowerCase() || - timeGroups.dayPeriod.toLowerCase() === PM.toLowerCase() - ) && - timeGroups.hour < 12) { - timeGroups.hour += 12 - } - d.setHours(timeGroups.hour) - d.setMinutes(timeGroups.minute) - d.setSeconds(timeGroups.second || 0) - return d - } - } - - // Fallback if formatToParts is not supported or if we were not able to parse a valid date - let am = false - if (vm.hourFormat === HOUR_FORMAT_12) { - const dateString12 = timeString.split(' ') - timeString = dateString12[0] - am = (dateString12[1] === vm.amString || dateString12[1] === AM) - } - const time = timeString.split(':') - let hours = parseInt(time[0], 10) - const minutes = parseInt(time[1], 10) - const seconds = vm.enableSeconds ? parseInt(time[2], 10) : 0 - if (isNaN(hours) || hours < 0 || hours > 23 || - (vm.hourFormat === HOUR_FORMAT_12 && (hours < 1 || hours > 12)) || - isNaN(minutes) || minutes < 0 || minutes > 59) { - return null - } - d.setSeconds(seconds) - d.setMinutes(minutes) - if (vm.hourFormat === HOUR_FORMAT_12) { - if (am && hours === 12) { - hours = 0 - } else if (!am && hours !== 12) { - hours += 12 - } - } - d.setHours(hours) - return new Date(d.getTime()) - } - return null -} - -export default { - mixins: [FormElementMixin], - inheritAttrs: false, - props: { - /* @model */ - value: Date, - /* Timepicker is shown inline, input is removed */ - inline: Boolean, - /* Earliest time available for selection */ - minTime: Date, - /* Latest time available for selection */ - maxTime: Date, - placeholder: String, - /* Enable input/typing. Note that you might have to set a custom time parser */ - editable: Boolean, - disabled: Boolean, - /** - * Size of button, optional - * @values small, medium, large - */ - size: String, - /** - * Hour format for input and display - * @values 12, 24 - */ - hourFormat: { - type: String, - validator: (value) => { - return value === HOUR_FORMAT_24 || value === HOUR_FORMAT_12 - } - }, - /* Step hours for select component */ - incrementHours: { - type: Number, - default: 1 - }, - /* Step minutes for select component */ - incrementMinutes: { - type: Number, - default: 1 - }, - /* Step seconds for select component */ - incrementSeconds: { - type: Number, - default: 1 - }, - /* Function to format time (Date type) to a string for display in the input */ - timeFormatter: { - type: Function, - default: (date, vm) => { - const timeFormatter = getValueByPath(getOptions(), 'timepicker.timeFormatter', undefined) - if (typeof timeFormatter === 'function') { - return timeFormatter(date) - } else { - return defaultTimeFormatter(date, vm) - } - } - }, - /* Function to parse string to a time (Date type) for set a time from the input to the component */ - timeParser: { - type: Function, - default: (date, vm) => { - const timeParser = getValueByPath(getOptions(), 'timepicker.timeParser', undefined) - if (typeof timeParser === 'function') { - return timeParser(date) - } else { - return defaultTimeParser(date, vm) - } - } - }, - /* Enable native timepicker on mobile */ - mobileNative: { - type: Boolean, - default: () => { - return getValueByPath(getOptions(), 'timepicker.mobileNative', true) - } - }, - /* Function used internally to create a new Date instance */ - timeCreator: { - type: Function, - default: () => { - const timeCreator = getValueByPath(getOptions(), 'timepicker.timeCreator', undefined) - if (typeof timeCreator === 'function') { - return timeCreator() - } else { - return new Date() - } - } - }, - /** - * Optional, position of the datepicker relative to the input - * @values top-right, top-left, bottom-left - */ - position: String, - /* Array of unselectable times (Date object) */ - unselectableTimes: Array, - /* Open timepicker on input focus */ - openOnFocus: Boolean, - /* Show seconds picker */ - enableSeconds: Boolean, - /* Default value when hours change */ - defaultMinutes: Number, - /* Default value when hours or minutes change */ - defaultSeconds: Number, - /* Append timepicker calendar to body */ - appendToBody: Boolean, - /* Reset timepicker values on meridian change */ - resetOnMeridianChange: { - type: Boolean, - default: false - } - }, - data() { - return { - dateSelected: this.value, - hoursSelected: null, - minutesSelected: null, - secondsSelected: null, - meridienSelected: null, - _elementRef: 'input' - } - }, - computed: { - computedValue: { - get() { - return this.dateSelected - }, - set(value) { - this.dateSelected = value - this.$emit('input', this.dateSelected) - } - }, - localeOptions() { - return new Intl.DateTimeFormat(this.locale, { - hour: 'numeric', - minute: 'numeric', - second: this.enableSeconds ? 'numeric' : undefined - }).resolvedOptions() - }, - dtf() { - return new Intl.DateTimeFormat(this.locale, { - hour: this.localeOptions.hour || 'numeric', - minute: this.localeOptions.minute || 'numeric', - second: this.enableSeconds ? this.localeOptions.second || 'numeric' : undefined, - hourCycle: !this.isHourFormat24 ? 'h12' : 'h23' - }) - }, - newHourFormat() { - return this.hourFormat || (this.localeOptions.hour12 ? HOUR_FORMAT_12 : HOUR_FORMAT_24) - }, - sampleTime() { - let d = this.timeCreator() - d.setHours(10) - d.setSeconds(0) - d.setMinutes(0) - d.setMilliseconds(0) - return d - }, - hourLiteral() { - if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') { - let d = this.sampleTime - const parts = this.dtf.formatToParts(d) - const literal = parts.find((part, idx) => (idx > 0 && parts[idx - 1].type === 'hour')) - if (literal) { - return literal.value - } - } - return ':' - }, - minuteLiteral() { - if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') { - let d = this.sampleTime - const parts = this.dtf.formatToParts(d) - const literal = parts.find((part, idx) => (idx > 0 && parts[idx - 1].type === 'minute')) - if (literal) { - return literal.value - } - } - return ':' - }, - secondLiteral() { - if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') { - let d = this.sampleTime - const parts = this.dtf.formatToParts(d) - const literal = parts.find((part, idx) => (idx > 0 && parts[idx - 1].type === 'second')) - if (literal) { - return literal.value - } - } - }, - amString() { - if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') { - let d = this.sampleTime - d.setHours(10) - const dayPeriod = this.dtf.formatToParts(d).find((part) => part.type === 'dayPeriod') - if (dayPeriod) { - return dayPeriod.value - } - } - return AM - }, - pmString() { - if (this.dtf.formatToParts && typeof this.dtf.formatToParts === 'function') { - let d = this.sampleTime - d.setHours(20) - const dayPeriod = this.dtf.formatToParts(d).find((part) => part.type === 'dayPeriod') - if (dayPeriod) { - return dayPeriod.value - } - } - return PM - }, - hours() { - if (!this.incrementHours || this.incrementHours < 1) throw new Error('Hour increment cannot be null or less than 1.') - const hours = [] - const numberOfHours = this.isHourFormat24 ? 24 : 12 - for (let i = 0; i < numberOfHours; i += this.incrementHours) { - let value = i - let label = value - if (!this.isHourFormat24) { - value = (i + 1) - label = value - if (this.meridienSelected === this.amString) { - if (value === 12) { - value = 0 - } - } else if (this.meridienSelected === this.pmString) { - if (value !== 12) { - value += 12 - } - } - } - hours.push({ - label: this.formatNumber(label), - value: value - }) - } - return hours - }, - - minutes() { - if (!this.incrementMinutes || this.incrementMinutes < 1) throw new Error('Minute increment cannot be null or less than 1.') - const minutes = [] - for (let i = 0; i < 60; i += this.incrementMinutes) { - minutes.push({ - label: this.formatNumber(i, true), - value: i - }) - } - return minutes - }, - - seconds() { - if (!this.incrementSeconds || this.incrementSeconds < 1) throw new Error('Second increment cannot be null or less than 1.') - const seconds = [] - for (let i = 0; i < 60; i += this.incrementSeconds) { - seconds.push({ - label: this.formatNumber(i, true), - value: i - }) - } - return seconds - }, - - meridiens() { - return [this.amString, this.pmString] - }, - - isMobile() { - return this.mobileNative && isMobile.any() - }, - - isHourFormat24() { - return this.newHourFormat === HOUR_FORMAT_24 - } - }, - watch: { - hourFormat() { - if (this.hoursSelected !== null) { - this.meridienSelected = this.hoursSelected >= 12 ? this.pmString : this.amString - } - }, - locale() { - // see updateInternalState default - if (!this.value) { - this.meridienSelected = this.amString - } - }, - /** - * When v-model is changed: - * 1. Update internal value. - * 2. If it's invalid, validate again. - */ - value: { - handler(value) { - this.updateInternalState(value) - !this.isValid && this.$refs.input.checkHtml5Validity() - }, - immediate: true - } - }, - methods: { - onMeridienChange(value) { - if (this.hoursSelected !== null && this.resetOnMeridianChange) { - this.hoursSelected = null - this.minutesSelected = null - this.secondsSelected = null - this.computedValue = null - } else if (this.hoursSelected !== null) { - if (value === this.pmString) { - this.hoursSelected += 12 - } else if (value === this.amString) { - this.hoursSelected -= 12 - } - } - this.updateDateSelected( - this.hoursSelected, - this.minutesSelected, - this.enableSeconds ? this.secondsSelected : 0, - value) - }, - - onHoursChange(value) { - if (!this.minutesSelected && typeof this.defaultMinutes !== 'undefined') { - this.minutesSelected = this.defaultMinutes - } - if (!this.secondsSelected && typeof this.defaultSeconds !== 'undefined') { - this.secondsSelected = this.defaultSeconds - } - this.updateDateSelected( - parseInt(value, 10), - this.minutesSelected, - this.enableSeconds ? this.secondsSelected : 0, - this.meridienSelected - ) - }, - - onMinutesChange(value) { - if (!this.secondsSelected && this.defaultSeconds) { - this.secondsSelected = this.defaultSeconds - } - this.updateDateSelected( - this.hoursSelected, - parseInt(value, 10), - this.enableSeconds ? this.secondsSelected : 0, - this.meridienSelected - ) - }, - - onSecondsChange(value) { - this.updateDateSelected( - this.hoursSelected, - this.minutesSelected, - parseInt(value, 10), - this.meridienSelected - ) - }, - - updateDateSelected(hours, minutes, seconds, meridiens) { - if (hours != null && minutes != null && - ((!this.isHourFormat24 && meridiens !== null) || this.isHourFormat24)) { - let time = null - if (this.computedValue && !isNaN(this.computedValue)) { - time = new Date(this.computedValue) - } else { - time = this.timeCreator() - time.setMilliseconds(0) - } - time.setHours(hours) - time.setMinutes(minutes) - time.setSeconds(seconds) - if (!isNaN(time.getTime())) { - this.computedValue = new Date(time.getTime()) - } - } - }, - - updateInternalState(value) { - if (value) { - this.hoursSelected = value.getHours() - this.minutesSelected = value.getMinutes() - this.secondsSelected = value.getSeconds() - this.meridienSelected = value.getHours() >= 12 ? this.pmString : this.amString - } else { - this.hoursSelected = null - this.minutesSelected = null - this.secondsSelected = null - this.meridienSelected = this.amString - } - this.dateSelected = value - }, - - isHourDisabled(hour) { - let disabled = false - if (this.minTime) { - const minHours = this.minTime.getHours() - const noMinutesAvailable = this.minutes.every((minute) => { - return this.isMinuteDisabledForHour(hour, minute.value) - }) - disabled = hour < minHours || noMinutesAvailable - } - if (this.maxTime) { - if (!disabled) { - const maxHours = this.maxTime.getHours() - disabled = hour > maxHours - } - } - if (this.unselectableTimes) { - if (!disabled) { - const unselectable = this.unselectableTimes.filter((time) => { - if (this.enableSeconds && this.secondsSelected !== null) { - return time.getHours() === hour && - time.getMinutes() === this.minutesSelected && - time.getSeconds() === this.secondsSelected - } else if (this.minutesSelected !== null) { - return time.getHours() === hour && - time.getMinutes() === this.minutesSelected - } - return false - }) - if (unselectable.length > 0) { - disabled = true - } else { - disabled = this.minutes.every((minute) => { - return this.unselectableTimes.filter((time) => { - return time.getHours() === hour && - time.getMinutes() === minute.value - }).length > 0 - }) - } - } - } - return disabled - }, - - isMinuteDisabledForHour(hour, minute) { - let disabled = false - if (this.minTime) { - const minHours = this.minTime.getHours() - const minMinutes = this.minTime.getMinutes() - disabled = hour === minHours && minute < minMinutes - } - if (this.maxTime) { - if (!disabled) { - const maxHours = this.maxTime.getHours() - const maxMinutes = this.maxTime.getMinutes() - disabled = hour === maxHours && minute > maxMinutes - } - } - - return disabled - }, - - isMinuteDisabled(minute) { - let disabled = false - if (this.hoursSelected !== null) { - if (this.isHourDisabled(this.hoursSelected)) { - disabled = true - } else { - disabled = this.isMinuteDisabledForHour(this.hoursSelected, minute) - } - if (this.unselectableTimes) { - if (!disabled) { - const unselectable = this.unselectableTimes.filter((time) => { - if (this.enableSeconds && this.secondsSelected !== null) { - return time.getHours() === this.hoursSelected && - time.getMinutes() === minute && - time.getSeconds() === this.secondsSelected - } else { - return time.getHours() === this.hoursSelected && - time.getMinutes() === minute - } - }) - disabled = unselectable.length > 0 - } - } - } - return disabled - }, - - isSecondDisabled(second) { - let disabled = false - if (this.minutesSelected !== null) { - if (this.isMinuteDisabled(this.minutesSelected)) { - disabled = true - } else { - if (this.minTime) { - const minHours = this.minTime.getHours() - const minMinutes = this.minTime.getMinutes() - const minSeconds = this.minTime.getSeconds() - disabled = this.hoursSelected === minHours && - this.minutesSelected === minMinutes && - second < minSeconds - } - if (this.maxTime) { - if (!disabled) { - const maxHours = this.maxTime.getHours() - const maxMinutes = this.maxTime.getMinutes() - const maxSeconds = this.maxTime.getSeconds() - disabled = this.hoursSelected === maxHours && - this.minutesSelected === maxMinutes && - second > maxSeconds - } - } - } - if (this.unselectableTimes) { - if (!disabled) { - const unselectable = this.unselectableTimes.filter((time) => { - return time.getHours() === this.hoursSelected && - time.getMinutes() === this.minutesSelected && - time.getSeconds() === second - }) - disabled = unselectable.length > 0 - } - } - } - return disabled - }, - - isMeridienDisabled(meridienString){ - const offset = meridienString == "AM" ? 0 : 12; - for(let i = 0; i < 12; i++){ - if(!this.isHourDisabled(i + offset)){ - return false; - } - } - return true; - }, - - /* - * Parse string into date - */ - onChange(value) { - const date = this.timeParser(value, this) - this.updateInternalState(date) - if (date && !isNaN(date)) { - this.computedValue = date - } else { - // Force refresh input value when not valid date - this.computedValue = null - this.$refs.input.newValue = this.computedValue - } - }, - - /* - * Toggle timepicker - */ - toggle(active) { - if (this.$refs.dropdown) { - this.$refs.dropdown.isActive = typeof active === 'boolean' - ? active - : !this.$refs.dropdown.isActive - } - }, - - /* - * Close timepicker - */ - close() { - this.toggle(false) - }, - - /* - * Call default onFocus method and show timepicker - */ - handleOnFocus() { - this.onFocus() - if (this.openOnFocus) { - this.toggle(true) - } - }, - - /* - * Format date into string 'HH-MM-SS' - */ - formatHHMMSS(value) { - const date = new Date(value) - if (value && !isNaN(date)) { - const hours = date.getHours() - const minutes = date.getMinutes() - const seconds = date.getSeconds() - return this.formatNumber(hours, true) + ':' + - this.formatNumber(minutes, true) + ':' + - this.formatNumber(seconds, true) - } - return '' - }, - - /* - * Parse time from string - */ - onChangeNativePicker(event) { - const date = event.target.value - if (date) { - let time = null - if (this.computedValue && !isNaN(this.computedValue)) { - time = new Date(this.computedValue) - } else { - time = new Date() - time.setMilliseconds(0) - } - const t = date.split(':') - time.setHours(parseInt(t[0], 10)) - time.setMinutes(parseInt(t[1], 10)) - time.setSeconds(t[2] ? parseInt(t[2], 10) : 0) - this.computedValue = new Date(time.getTime()) - } else { - this.computedValue = null - } - }, - - formatNumber(value, prependZero) { - return this.isHourFormat24 || prependZero - ? this.pad(value) - : value - }, - - pad(value) { - return (value < 10 ? '0' : '') + value - }, - - /* - * Format date into string - */ - formatValue(date) { - if (date && !isNaN(date)) { - return this.timeFormatter(date, this) - } else { - return null - } - }, - /** - * Keypress event that is bound to the document. - */ - keyPress({ key }) { - if (this.$refs.dropdown && this.$refs.dropdown.isActive && (key === 'Escape' || key === 'Esc')) { - this.toggle(false) - } - }, - /** - * Emit 'blur' event on dropdown is not active (closed) - */ - onActiveChange(value) { - if (!value) { - this.onBlur() - } - } - }, - created() { - if (typeof window !== 'undefined') { - document.addEventListener('keyup', this.keyPress) - } - }, - beforeDestroy() { - if (typeof window !== 'undefined') { - document.removeEventListener('keyup', this.keyPress) - } - } -} diff --git a/packages/oruga/src/utils/TimepickerMixin.spec.js b/packages/oruga/src/utils/TimepickerMixin.spec.js deleted file mode 100644 index 437dfe444..000000000 --- a/packages/oruga/src/utils/TimepickerMixin.spec.js +++ /dev/null @@ -1,82 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import TimepickerMixin from '@utils/TimepickerMixin' - -const AM = 'AM' -const PM = 'PM' -let wrapper - -describe('TimepickerMixin', () => { - HTMLElement.prototype.insertAdjacentElement = jest.fn() - beforeEach(() => { - const component = { - template: '<div class="b-component"></div>' - } - wrapper = shallowMount(component, { - attachToDocument: true, - mixins: [TimepickerMixin] - }) - }) - - it('should set dateSelected and emit input event when setting computedValue', (done) => { - const date = new Date() - wrapper.vm.computedValue = date - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.dateSelected).toEqual(date) - expect(wrapper.emitted()['input']).toBeTruthy() - done() - }) - }) - - it('should return correct value for meridiens', () => { - expect(wrapper.vm.meridiens).toEqual([AM, PM]) - }) - - it('should call updateDateSelected on onSecondsChange', (done) => { - wrapper.vm.updateDateSelected = jest.fn() - wrapper.vm.onSecondsChange() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.updateDateSelected).toHaveBeenCalledTimes(1) - done() - }) - }) - - it('should update internal state with passed value on updateInternalState', (done) => { - const date = new Date() - wrapper.vm.updateInternalState(date) - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.hoursSelected).toEqual(date.getHours()) - expect(wrapper.vm.minutesSelected).toEqual(date.getMinutes()) - expect(wrapper.vm.secondsSelected).toEqual(date.getSeconds()) - done() - }) - }) - - it('should update internal state on updateInternalState', (done) => { - wrapper.vm.updateInternalState() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.hoursSelected).toBeNull() - expect(wrapper.vm.minutesSelected).toBeNull() - expect(wrapper.vm.secondsSelected).toBeNull() - expect(wrapper.vm.meridienSelected).toEqual(AM) - done() - }) - }) - - it('should call onFocus on handleOnFocus', (done) => { - wrapper.vm.onFocus = jest.fn() - wrapper.vm.handleOnFocus() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.onFocus).toHaveBeenCalledTimes(1) - done() - }) - }) - - it('should call toggle on close', (done) => { - wrapper.vm.toggle = jest.fn() - wrapper.vm.close() - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.toggle).toHaveBeenCalledTimes(1) - done() - }) - }) -}) diff --git a/packages/oruga/src/utils/config.js b/packages/oruga/src/utils/config.js deleted file mode 100644 index 38754a66c..000000000 --- a/packages/oruga/src/utils/config.js +++ /dev/null @@ -1,30 +0,0 @@ -import { merge } from "./helpers" - -let config = { - iconPack: 'mdi', - useHtml5Validation: true, - statusIcon: true -} - -export const setOptions = (options) => { config = options } - -export const getOptions = () => { return config } - -export let VueInstance - -export const setVueInstance = (Vue) => { VueInstance = Vue } - -export const Programmatic = { - getOptions, - setOptions(options) { - setOptions(merge(getOptions(), options, true)) - } -} - -export const Plugin = { - install(Vue, options = {}) { - setVueInstance(Vue) - // Options - setOptions(merge(getOptions(), options, true)) - } -} diff --git a/packages/oruga/src/utils/config.spec.js b/packages/oruga/src/utils/config.spec.js deleted file mode 100644 index c173dd8eb..000000000 --- a/packages/oruga/src/utils/config.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -import { getOptions, setOptions } from '@utils/config' - -describe('Config', () => { - describe('Test options', () => { - test('defaultToastDuration option should be 1000', () => { - const config = getOptions() - setOptions(Object.assign(config, {defaultToastDuration: 1000})) - expect(config.defaultToastDuration).toBe(1000) - }) - }) -}) diff --git a/packages/oruga/src/utils/helpers.js b/packages/oruga/src/utils/helpers.js deleted file mode 100644 index 60521d967..000000000 --- a/packages/oruga/src/utils/helpers.js +++ /dev/null @@ -1,361 +0,0 @@ -/** - * +/- function to native math sign - */ -function signPoly(value) { - if (value < 0) return -1 - return value > 0 ? 1 : 0 -} -export const sign = Math.sign || signPoly - -/** - * Checks if the flag is set - * @param val - * @param flag - * @returns {boolean} - */ -function hasFlag(val, flag) { - return (val & flag) === flag -} - -/** - * Native modulo bug with negative numbers - * @param n - * @param mod - * @returns {number} - */ -function mod(n, mod) { - return ((n % mod) + mod) % mod -} - -/** - * Asserts a value is beetween min and max - * @param val - * @param min - * @param max - * @returns {number} - */ -function bound(val, min, max) { - return Math.max(min, Math.min(max, val)) -} - -export { mod, bound, hasFlag } - -/** - * Get value of an object property/path even if it's nested - */ -export function getValueByPath(obj, path, defaultValue = undefined) { - const value = path.split('.').reduce((o, i) => typeof o !== 'undefined' ? o[i] : undefined, obj) - return typeof value !== 'undefined' ? value : defaultValue -} - -/** - * Set value of an object property/path even if it's nested - */ - export function setValueByPath(obj, path, value) { - const p = path.split('.') - if (p.length === 1) { - obj[path] = value - return - } - const field = p[0] - if (typeof obj[field] === 'undefined') obj[field] = {} - return setValueByPath(obj[field], p.slice(1).join('.'), value) -} - -/** - * Extension of indexOf method by equality function if specified - */ -export function indexOf(array, obj, fn) { - if (!array) return -1 - if (!fn || typeof fn !== 'function') return array.indexOf(obj) - for (let i = 0; i < array.length; i++) { - if (fn(array[i], obj)) { - return i - } - } - return -1 -} - -/** - * Merge function to replace Object.assign with deep merging possibility - */ -const isObject = (item) => typeof item === 'object' && !Array.isArray(item) -const mergeFn = (target, source, deep = false) => { - if (deep || !Object.assign) { - const isDeep = (prop) => - isObject(source[prop]) && - target !== null && - Object.prototype.hasOwnProperty.call(target, prop) && - isObject(target[prop]) - let replaced - if (source === null || typeof source === 'undefined') { - replaced = false; - } else { - replaced = Object.getOwnPropertyNames(source) - .map((prop) => ({ [prop]: isDeep(prop) - ? mergeFn(target[prop], source[prop], deep) - : source[prop] })) - .reduce((a, b) => ({ ...a, ...b }), {}) - } - return { - ...target, - ...replaced - } - } else { - return Object.assign(target, source) - } -} -export const merge = mergeFn - -/** - * Mobile detection - * https://www.abeautifulsite.net/detecting-mobile-devices-with-javascript - */ -export const isMobile = { - Android: function () { - return ( - typeof window !== 'undefined' && - window.navigator.userAgent.match(/Android/i) - ) - }, - BlackBerry: function () { - return ( - typeof window !== 'undefined' && - window.navigator.userAgent.match(/BlackBerry/i) - ) - }, - iOS: function () { - return ( - typeof window !== 'undefined' && - window.navigator.userAgent.match(/iPhone|iPad|iPod/i) - ) - }, - Opera: function () { - return ( - typeof window !== 'undefined' && - window.navigator.userAgent.match(/Opera Mini/i) - ) - }, - Windows: function () { - return ( - typeof window !== 'undefined' && - window.navigator.userAgent.match(/IEMobile/i) - ) - }, - any: function () { - return ( - isMobile.Android() || - isMobile.BlackBerry() || - isMobile.iOS() || - isMobile.Opera() || - isMobile.Windows() - ) - } -} - -// Microsoft Edge "pretends" to be all other major browsers, so we need to filter it out. -// It doesn't use a very consistent string to represent its own name ("Edge", "Edg", "EdgA", etc.), -// but it looks like WebKit never pretends to be Chrome, Edge does, and Chrome doesn't have the bug -// that this flag is used to work around. -export function isWebKit() { - return typeof window !== 'undefined' - && window.navigator.userAgent.indexOf('AppleWebKit/') !== -1 - && window.navigator.userAgent.indexOf('Chrome/') === -1 -} - -export function removeElement(el) { - if (typeof el.remove !== 'undefined') { - el.remove() - } else if (typeof el.parentNode !== 'undefined' && el.parentNode !== null) { - el.parentNode.removeChild(el) - } -} - -export function createAbsoluteElement(el) { - const root = document.createElement('div') - root.style.position = 'absolute' - root.style.left = '0px' - root.style.top = '0px' - const wrapper = document.createElement('div') - root.appendChild(wrapper) - wrapper.appendChild(el) - document.body.appendChild(root) - return root -} - -/** - * Escape regex characters - * http://stackoverflow.com/a/6969486 - */ -export function escapeRegExpChars(value) { - if (!value) return value - // eslint-disable-next-line - return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&') -} - -export function multiColumnSort(inputArray, sortingPriority) { - // clone it to prevent the any watchers from triggering every sorting iteration - const array = JSON.parse(JSON.stringify(inputArray)) - const fieldSorter = (fields) => (a, b) => fields.map((o) => { - let dir = 1 - if (o[0] === '-') { dir = -1; o = o.substring(1) } - const aValue = getValueByPath(a, o) - const bValue = getValueByPath(b, o) - return aValue > bValue ? dir : aValue < bValue ? -(dir) : 0 - }).reduce((p, n) => p || n, 0) - - return array.sort(fieldSorter(sortingPriority)) -} - -export function createNewEvent(eventName) { - let event - if (typeof Event === 'function') { - event = new Event(eventName) - } else { - event = document.createEvent('Event') - event.initEvent(eventName, true, true) - } - return event -} - -export function toCssDimension(width) { - return width === undefined ? null : (isNaN(width) ? width : width + 'px') -} - -export function blankIfUndefined(value) { - return typeof value !== 'undefined' && value !== null ? value : '' -} - -export function defaultIfUndefined(value, defaultValue) { - return typeof value !== 'undefined' && value !== null ? value : defaultValue -} - -/** - * Return month names according to a specified locale - * @param {String} locale A bcp47 localerouter. undefined will use the user browser locale - * @param {String} format long (ex. March), short (ex. Mar) or narrow (M) - * @return {Array<String>} An array of month names - */ -export function getMonthNames(locale = undefined, format = 'long') { - const dates = [] - for (let i = 0; i < 12; i++) { - dates.push(new Date(2000, i, 15)) - } - const dtf = new Intl.DateTimeFormat(locale, { - month: format, - // timeZone: 'UTC' - }) - return dates.map((d) => dtf.format(d)) -} - -/** - * Return weekday names according to a specified locale - * @param {String} locale A bcp47 localerouter. undefined will use the user browser locale - * @param {Number} first day of week index - * @param {String} format long (ex. Thursday), short (ex. Thu) or narrow (T) - * @return {Array<String>} An array of weekday names - */ -export function getWeekdayNames(locale = undefined, firstDayOfWeek = 0, format = 'narrow') { - const dates = [] - for (let i = 1, j = 0; j < 7; i++) { - const d = new Date(2000, 0, i) - const day = d.getDay() - if (day === firstDayOfWeek || j > 0) { - dates.push(d) - j++ - } - } - const dtf = new Intl.DateTimeFormat(locale, { - weekday: format, - // timeZone: 'UTC' - }) - return dates.map((d) => dtf.format(d)) -} - -/** - * Accept a regex with group names and return an object - * ex. matchWithGroups(/((?!=<year>)\d+)\/((?!=<month>)\d+)\/((?!=<day>)\d+)/, '2000/12/25') - * will return { year: 2000, month: 12, day: 25 } - * @param {String} includes injections of (?!={groupname}) for each group - * @param {String} the string to run regex - * @return {Object} an object with a property for each group having the group's match as the value - */ -export function matchWithGroups(pattern, str) { - const matches = str.match(pattern) - return pattern - // get the pattern as a string - .toString() - // suss out the groups - .match(/<(.+?)>/g) - // remove the braces - .map((group) => { - const groupMatches = group.match(/<(.+)>/) - if (!groupMatches || groupMatches.length <= 0) { - return null - } - return group.match(/<(.+)>/)[1] - }) - // create an object with a property for each group having the group's match as the value - .reduce((acc, curr, index) => { - if (matches && matches.length > index) { - acc[curr] = matches[index + 1] - } else { - acc[curr] = null - } - return acc - }, {}) -} - -export function getStyleValue(value) { - if (typeof value === 'object') { - for (const key in value) { - if (value[key]) return key - } - return '' - } - return value -} - -export function debounce(func, wait, immediate) { - let timeout - return function () { - const context = this - const args = arguments - const later = function () { - timeout = null - if (!immediate) func.apply(context, args) - } - const callNow = immediate && !timeout - clearTimeout(timeout) - timeout = setTimeout(later, wait) - if (callNow) func.apply(context, args) - } -} - -export function endsWith(str, suffix) { - return str.indexOf(suffix, str.length - suffix.length) !== -1; -} - -/** - * Returns the "promise" object. - * - * This is to handle browsers that do not have Promise support (IE 11) which are still supported - * by Vue 2 - */ -export function promiseObject() { - // the typedef window is to that vuepress won't break when it tries to run this method - return ((typeof window !== "undefined") && window.Promise) ? window.Promise : Object; -} - - -export const isDefined = (d) => d !== undefined - -/** - * Remove accents/diacritics in a string in JavaScript - * https://stackoverflow.com/a/37511463 - */ - export function removeDiacriticsFromString(value) { - if (!value) return value - - return value.normalize('NFD').replace(/[\u0300-\u036f]/g, '') -} diff --git a/packages/oruga/src/utils/helpers.spec.js b/packages/oruga/src/utils/helpers.spec.js deleted file mode 100644 index eced6859f..000000000 --- a/packages/oruga/src/utils/helpers.spec.js +++ /dev/null @@ -1,200 +0,0 @@ -import { useFakeTimers } from 'sinon' -import { - getValueByPath, indexOf, merge, - escapeRegExpChars, removeElement, debounce -} from './helpers' - -describe('helpers', () => { - describe('getValueByPath', () => { - it('get value of an object property/path even if it is nested', () => { - const obj = { - val1: 'val1', - val2: { - val21: 'val21' - }, - val3: { - val31: { - val311: 'val311' - } - } - } - - expect(getValueByPath(obj, 'val1')).toBe('val1') - expect(getValueByPath(obj, 'val2.val21')).toBe('val21') - expect(getValueByPath(obj, 'val3.val31.val311')).toBe('val311') - }) - }) - - describe('indexOf', () => { - it('get index of an array element using equality function', () => { - const obj1 = { - id: 1 - } - const obj2 = { - id: 2 - } - const obj3 = { - id: 3 - } - const obj4 = { - id: 4 - } - const obj5 = { - id: 5 - } - const arr = [ - obj1, - obj2, - obj3, - obj4 - ] - const fnc = (obj1, obj2) => { - return obj1.id === obj2.id - } - - expect(indexOf(arr, obj1, fnc)).toBe(0) - expect(indexOf(arr, obj2, fnc)).toBe(1) - expect(indexOf(arr, obj3, fnc)).toBe(2) - expect(indexOf(arr, obj4, fnc)).toBe(3) - expect(indexOf(arr, obj5, fnc)).toBe(-1) - expect(indexOf(null, obj1, fnc)).toBe(-1) - expect(indexOf(arr, obj1)).toBe(0) - }) - }) - - describe('merge', () => { - describe('shallow merges', () => { - it('merges objects', () => { - const a = { a: 'discard' } - const b = { a: 'test' } - expect(merge(a, b)).toEqual({ a: 'test' }) - }) - - it('extends objects', () => { - const a = { a: 'test' } - const b = { b: 'test' } - expect(merge(a, b)).toEqual({ a: 'test', b: 'test' }) - }) - - it('extends a property with an object', () => { - const a = { a: 'test' } - const b = { b: { c: 'test' } } - expect(merge(a, b)).toEqual({ a: 'test', b: { c: 'test' } }) - }) - - it('replaces a property with an object', () => { - const a = { b: 'whatever', a: 'test' } - const b = { b: { c: 'test' } } - expect(merge(a, b)).toEqual({ a: 'test', b: { c: 'test' } }) - }) - }) - - describe('deep merges', () => { - it('merges objects', () => { - const a = { test: { a: 'discard', b: 'test' } } - const b = { test: { a: 'test' } } - expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: 'test' } }) - }) - - it('extends objects', () => { - const a = { test: { a: 'test' } } - const b = { test: { b: 'test' } } - expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: 'test' } }) - }) - - it('extends a property with an object', () => { - const a = { test: { a: 'test' } } - const b = { test: { b: { c: 'test' } } } - expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: { c: 'test' } } }) - }) - - it('replaces a property with an object', () => { - const a = { test: { b: 'whatever', a: 'test' } } - const b = { test: { b: { c: 'test' } } } - expect(merge(a, b, true)).toEqual({ test: { a: 'test', b: { c: 'test' } } }) - }) - }) - }) - - describe('escapeRegExpChars', () => { - it('escape regex characters', () => { - const initial = 'All of these should be escaped: \\ ^ $ * + ? . ( ) | { } [ ]' - const expected = 'All of these should be escaped: \\\\ \\^ \\$ \\* \\+ \\? \\. \\( \\) \\| \\{ \\} \\[ \\]' - - expect(escapeRegExpChars(null)).toBeNull() - expect(escapeRegExpChars(initial)).toBe(expected) - }) - }) - - describe('removeElement', () => { - it('calls remove function from the element if it exists', () => { - const elm = { - remove: jest.fn() - } - - removeElement(elm) - expect(elm.remove).toHaveBeenCalled() - }) - - it('calls parentNode.removeChild function from the element if it exists', () => { - const elm = { - parentNode: { - removeChild: jest.fn() - } - } - - removeElement(elm) - expect(elm.parentNode.removeChild).toHaveBeenCalled() - }) - }) - - let clock - let func - beforeEach(() => { - clock = useFakeTimers() - func = jest.fn() - }) - - afterEach(() => { - clock.restore() - }) - - describe('debounce', () => { - it('is not called immediately', () => { - const debouncedFunc = debounce(func, 1000) - debouncedFunc() - expect(func).toHaveBeenCalledTimes(0) - }) - - it('is not called upon several rapid calls', () => { - const debouncedFunc = debounce(func, 1000) - for (let i = 0; i < 10; i++) { - clock.tick(500) - debouncedFunc() - } - expect(func).toHaveBeenCalledTimes(0) - }) - - it('is called after debounce time', () => { - const debouncedFunc = debounce(func, 1000) - debouncedFunc() - clock.tick(1000) - expect(func).toHaveBeenCalledTimes(1) - }) - - it('is called immediately if immediate is true', () => { - const debouncedFunc = debounce(func, 1000, true) - debouncedFunc() - expect(func).toHaveBeenCalledTimes(1) - }) - - it('is called once upon several rapid calls if immediate is true', () => { - const debouncedFunc = debounce(func, 1000, true) - for (let i = 0; i < 10; i++) { - clock.tick(500) - debouncedFunc() - } - expect(func).toHaveBeenCalledTimes(1) - }) - }) -}) diff --git a/packages/oruga/src/utils/icons.js b/packages/oruga/src/utils/icons.js deleted file mode 100644 index 84ba8d498..000000000 --- a/packages/oruga/src/utils/icons.js +++ /dev/null @@ -1,65 +0,0 @@ -import { merge, getValueByPath } from '../utils/helpers' -import { getOptions } from './config' - -const mdiIcons = { - sizes: { - 'default': 'mdi-24px', - 'small': null, - 'medium': 'mdi-36px', - 'large': 'mdi-48px' - }, - iconPrefix: 'mdi-' -} - -const faIcons = () => { - const iconComponent = getValueByPath(getOptions(), 'iconComponent') - const faIconPrefix = iconComponent ? '' : 'fa-' - return { - sizes: { - 'default': null, - 'small': null, - 'medium': faIconPrefix + 'lg', - 'large': faIconPrefix + '2x' - }, - iconPrefix: faIconPrefix, - internalIcons: { - 'check': 'check', - 'information': 'info-circle', - 'alert': 'exclamation-triangle', - 'alert-circle': 'exclamation-circle', - 'arrow-up': 'arrow-up', - 'chevron-right': 'angle-right', - 'chevron-left': 'angle-left', - 'chevron-down': 'angle-down', - 'chevron-up': 'angle-up', - 'eye': 'eye', - 'eye-off': 'eye-slash', - 'caret-down': 'caret-down', - 'caret-up': 'caret-up', - 'close-circle': 'times-circle', - 'close': 'times', - 'loading': 'circle-notch' - } - } -} - -const getIcons = () => { - let icons = { - mdi: mdiIcons, - fa: faIcons(), - fas: faIcons(), - far: faIcons(), - fad: faIcons(), - fab: faIcons(), - fal: faIcons() - } - - const customIconPacks = getValueByPath(getOptions(), 'customIconPacks') - if (customIconPacks) { - icons = merge(icons, customIconPacks, true) - } - - return icons -} - -export default getIcons diff --git a/packages/oruga/src/utils/plugins.js b/packages/oruga/src/utils/plugins.js deleted file mode 100644 index 14bb283a1..000000000 --- a/packages/oruga/src/utils/plugins.js +++ /dev/null @@ -1,19 +0,0 @@ - -export const use = (plugin) => { - if (typeof window !== 'undefined' && window.Vue) { - window.Vue.use(plugin) - } -} - -export const registerPlugin = (vm, plugin) => { - vm.use(plugin) -} - -export const registerComponent = (vm, component) => { - vm.component(component.name, component) -} - -export const registerComponentProgrammatic = (vm, property, component) => { - if (!vm.prototype.$oruga) vm.prototype.$oruga = {} - vm.prototype.$oruga[property] = component -} diff --git a/packages/oruga/src/utils/ssr.js b/packages/oruga/src/utils/ssr.js deleted file mode 100644 index a2d892535..000000000 --- a/packages/oruga/src/utils/ssr.js +++ /dev/null @@ -1,6 +0,0 @@ -// Polyfills for SSR - -export const isSSR = typeof window === 'undefined' - -export const HTMLElement = isSSR ? Object : window.HTMLElement -export const File = isSSR ? Object : window.File diff --git a/packages/oruga/types/components/Loading.d.ts b/packages/oruga/types/components/Loading.d.ts deleted file mode 100644 index 19a482ebd..000000000 --- a/packages/oruga/types/components/Loading.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { SizesModifiers } from '../helpers' - -export interface LoadingProps { - active?: boolean; - programmatic?: boolean; - container?: object | (() => any) | string; - 'full-page'?: boolean; - animation?: string; - 'can-cancel'?: boolean; - 'on-cancel'?: () => any; - icon?: string; - 'icon-spin'?: boolean; - 'icon-size'?: SizesModifiers; - overlay?: boolean; - 'root-class'?: string | (() => any) | string[]; - 'overlay-class'?: string | (() => any) | string[]; - 'icon-class'?: string | (() => any) | string[]; -} diff --git a/packages/oruga/types/components/Modal.d.ts b/packages/oruga/types/components/Modal.d.ts deleted file mode 100644 index 600be52b7..000000000 --- a/packages/oruga/types/components/Modal.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { SizesModifiers } from '../helpers' - -export interface ModalProps { - active?: boolean; - component?: object | (() => any); - content?: string; - 'close-button-content'?: string; - programmatic?: boolean; - props?: object; - events?: object; - width?: string | number; - custom?: boolean; - animation?: string; - 'can-cancel'?: [] | boolean; - 'on-cancel'?: () => any; - 'on-close'?: () => any; - scroll?: string; - 'full-screen'?: boolean; - 'trap-focus'?: boolean; - 'aria-role'?: string; - 'aria-modal'?: boolean; - 'aria-label'?: string; - 'destroy-on-hide'?: boolean; - 'auto-focus'?: boolean; - 'close-icon'?: string; - 'close-icon-size'?: SizesModifiers; - 'root-class'?: string | (() => any) | string[]; - 'overlay-class'?: string | (() => any) | string[]; - 'content-class'?: string | (() => any) | string[]; - 'close-class'?: string | (() => any) | string[]; - 'full-screen-class'?: string | (() => any) | string[]; - 'mobile-class'?: string | (() => any) | string[]; -} diff --git a/packages/oruga/types/components/Notification.d.ts b/packages/oruga/types/components/Notification.d.ts deleted file mode 100644 index 777f18f7d..000000000 --- a/packages/oruga/types/components/Notification.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ColorsModifiers, GlobalPositions } from '../helpers' - -export interface ModalProps { - position?: GlobalPositions; - variant?: ColorsModifiers | object; - 'aria-close-label'?: string; - animation?: string; - component?: object | (() => any); - props?: object; - events?: object; - 'close-icon'?: string; - 'root-class'?: string | (() => any) | string[]; - 'close-class'?: string | (() => any) | string[]; - 'content-class'?: string | (() => any) | string[]; - 'icon-class'?: string | (() => any) | string[]; - 'position-class'?: string | (() => any) | string[]; - 'variant-class'?: string | (() => any) | string[]; - 'wrapper-class'?: string | (() => any) | string[]; -} diff --git a/packages/oruga/types/helpers.d.ts b/packages/oruga/types/helpers.d.ts deleted file mode 100644 index 867f890b3..000000000 --- a/packages/oruga/types/helpers.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type SizesModifiers = 'small' | 'medium' | 'large'; -export type ColorsModifiers = 'primary' | 'danger' | 'warning' | 'success' | 'info'; -export type GlobalPositions = 'top-right' | 'top' | 'top-left' | 'bottom-right' | 'bottom' | 'bottom-left'; \ No newline at end of file diff --git a/packages/oruga/types/index.d.ts b/packages/oruga/types/index.d.ts deleted file mode 100644 index cbb7cbdcd..000000000 --- a/packages/oruga/types/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '@oruga-ui/oruga'; \ No newline at end of file