diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..4fedfa53 --- /dev/null +++ b/.babelrc @@ -0,0 +1,17 @@ +{ + "presets": [ + ["vue-app", { + "modules": false + }] + ], + "plugins": [ + ["module-resolver", { + "extensions": [".js", ".vue", ".json"] + }] + ], + "env": { + "test": { + "plugins": ["dynamic-import-node"] + } + } +} \ No newline at end of file diff --git a/.commitlintrc.json b/.commitlintrc.json new file mode 100644 index 00000000..0df1d253 --- /dev/null +++ b/.commitlintrc.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "@commitlint/config-conventional" + ] +} diff --git a/.editorconfig b/.editorconfig index ebe51d3b..4039ff11 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,12 +1,12 @@ -# EditorConfig is awesome: https://EditorConfig.org - -# top-most EditorConfig file root = true [*] -indent_style = space -indent_size = 2 -end_of_line = lf charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] trim_trailing_whitespace = false -insert_final_newline = false \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..502f12e7 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +.github/ +_book/ +docs/ +coverage/ +dist/ \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..64977756 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,55 @@ +// https://eslint.org/docs/user-guide/configuring + +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + ecmaVersion: 2017, + sourceType: 'module' + }, + plugins: ['html', 'vue'], + extends: [ + 'eslint:recommended', + 'plugin:vue/recommended', + 'plugin:import/errors', + 'plugin:import/warnings' + ], + env: { + browser: true, + node: true, + commonjs: true, + es6: true, + jest: true + }, + rules: { + // allow async-await + 'generator-star-spacing': 'off', + // don't require .vue extension when importing + 'import/extensions': ['error', 'always', { + 'js': 'never', + 'vue': 'never' + }], + // disallow reassignment of function parameters + // disallow parameter object manipulation except for specific exclusions + 'no-param-reassign': ['error', { + props: true, + ignorePropertyModificationsFor: [ + 'state', // for vuex state + 'acc', // for reduce accumulators + 'e' // for e.returnvalue + ] + }], + // allow optionalDependencies + 'import/no-extraneous-dependencies': ['error', { + optionalDependencies: ['test/index.js'] + }], + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' + }, + "settings": { + // resolve using plugin babel module resolver + "import/resolver": { + "babel-module": {} + } + } +} \ No newline at end of file diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 205021e4..00000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Enforce Unix newlines -* text=auto eol=lf diff --git a/.github/.stale.yml b/.github/.stale.yml deleted file mode 100644 index c2b8bcee..00000000 --- a/.github/.stale.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 360 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security -# Label to use when marking an issue as stale -staleLabel: wontfix -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false \ No newline at end of file diff --git a/.github/COMMIT_CONVENTION.md b/.github/COMMIT_CONVENTION.md index 261c7ca2..fc436da5 100644 --- a/.github/COMMIT_CONVENTION.md +++ b/.github/COMMIT_CONVENTION.md @@ -10,10 +10,10 @@ Appears under "Features" header, `compiler` subheader: feat(compiler): add 'comments' option ``` -Appears under "Bug Fixes" header, `sidebar` subheader, with a link to issue #28: +Appears under "Bug Fixes" header, `v-model` subheader, with a link to issue #28: ``` -fix(sidebar): handle events on blur +fix(v-model): handle events on blur close #28 ``` diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 77fd8019..37d6ae2a 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,178 +1,34 @@ -# Contributing to CoreUI +# Contributing -Looking to contribute something to CoreUI? **Here's how you can help.** +## Usage -Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved. +```bash +# Install dependencies +npm install -Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing -patches and features. +# Build +npm run build -## Using the issue tracker +# Run all tests with lint/jest +npm run test -The [issue tracker](https://github.com/coreui/coreui-vue/issues) is -the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests) -and [submitting pull requests](#pull-requests), but please respect the following -restrictions: +# Run test in watch mode +npm run test:watch -* Please **do not** use the issue tracker for personal support requests. +# Update test snapshot +npm run test:update -* Please **do not** post comments consisting solely of "+1" or ":thumbsup:". - Use [GitHub's "reactions" feature](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) - instead. +# Run linter +npm run lint -## Bug reports +# Run linter with auto fix +npm run lint:fix +``` +## Workflow -A bug is a _demonstrable problem_ that is caused by the code in the repository. -Good bug reports are extremely helpful, so thanks! - -Guidelines for bug reports: - -0. **Validate and lint your code** — to ensure your problem isn't caused by a simple error in your own code. - -1. **Use the GitHub issue search** — check if the issue has already been reported. - -2. **Check if the issue has been fixed** — try to reproduce it using the latest `master` or development branch in the repository. - -3. **Isolate the problem** — ideally create a [reduced test case](https://css-tricks.com/reduced-test-cases/) and a live example. [This JS Bin](http://jsbin.com/lefey/1/edit?html,output) is a helpful template. - - -A good bug report shouldn't leave others needing to chase you up for more -information. Please try to be as detailed as possible in your report. What is -your environment? What steps will reproduce the issue? What browser(s) and OS -experience the problem? Do other browsers show the bug differently? What -would you expect to be the outcome? All these details will help people to fix -any potential bugs. - -Example: - -> Short and descriptive example bug report title -> -> A summary of the issue and the browser/OS environment in which it occurs. If -> suitable, include the steps required to reproduce the bug. -> -> 1. This is the first step -> 2. This is the second step -> 3. Further steps, etc. -> -> `` - a link to the reduced test case -> -> Any other information you want to share that is relevant to the issue being -> reported. This might include the lines of code that you have identified as -> causing the bug, and potential solutions (and your opinions on their -> merits). - -## Feature requests - -Feature requests are welcome. Before opening a feature request, please take a -moment to find out whether your idea fits with the scope and aims of the -project. It's up to *you* to make a strong case to convince the project's -developers of the merits of this feature. Please provide as much detail -and context as possible. - - -## Pull requests - -Good pull requests—patches, improvements, new features—are a fantastic -help. They should remain focused in scope and avoid containing unrelated -commits. - -**Please ask first** before embarking on any significant pull request (e.g. -implementing features, refactoring code, porting to a different language), -otherwise you risk spending a lot of time working on something that the -project's developers might not want to merge into the project. - -Adhering to the following process is the best way to get your work -included in the project: - -1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, - and configure the remotes: - - ```bash - # Clone your fork of the repo into the current directory - git clone https://github.com//coreui-react.git - # Navigate to the newly cloned directory - cd coreui - # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/coreui/coreui-vue.git - ``` - -2. If you cloned a while ago, get the latest changes from upstream: - - ```bash - git checkout master - git pull upstream master - ``` - -3. Create a new topic branch (off the main project development branch) to - contain your feature, change, or fix: - - ```bash - git checkout -b - ``` - -4. Commit your changes in logical chunks. Please adhere to these [git commit - message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) - or your code is unlikely to be merged into the main project. Use Git's - [interactive rebase](https://help.github.com/articles/interactive-rebase) - feature to tidy up your commits before making them public. - -5. Locally merge (or rebase) the upstream development branch into your topic branch: - - ```bash - git pull [--rebase] upstream master - ``` - -6. Push your topic branch up to your fork: - - ```bash - git push origin - ``` - -7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) - with a clear title and description against the `master` branch. - -**IMPORTANT**: By submitting a patch, you agree to allow the project owners to -license your work under the terms of the [MIT License](LICENSE). - -### Semantic Git commit messages - -Inspired by Sparkbox's awesome article on -[semantic commit messages](http://seesparkbox.com/foundry/semantic_commit_messages). -Please use following commit message format. - -* chore (updating npm tasks etc; no production code change) -> ```git test -m 'chore: commit-message-here'``` -* docs (changes to documentation) -> ```git commit -m 'docs: commit-message-here'``` -* feat (new feature) -> ```git commit -m 'feat: commit-message-here'``` -* fix (bug fix) -> ```git commit -m 'fix: commit-message-here'``` -* refactor (refactoring production code) -> ```git commit -m 'refactor: commit-message-here'``` -* style (formatting, missing semi colons, etc; no code change) -> ```git commit -m 'style: commit-message-here'``` -* test (adding missing tests, refactoring tests; no production code change) -> ```git test -m 'refactor: commit-message-here'``` - -## Code guidelines - -### HTML - -[Adhere to the Code Guide.](http://codeguide.co/#html) - -- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags). -- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`. -- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility. - -### CSS - -[Adhere to the Code Guide.](http://codeguide.co/#css) - -- When feasible, default color palettes should comply with [WCAG color contrast guidelines](http://www.w3.org/TR/WCAG20/#visual-audio-contrast). -- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](http://a11yproject.com/posts/never-remove-css-outlines) for more details. - -### JS - -- No semicolons (in client-side JS) -- 2 spaces (no tabs) -- strict mode -- "Attractive" -- Don't use [jQuery event alias convenience methods](https://github.com/jquery/jquery/blob/master/src/event/alias.js) (such as `$().focus()`). Instead, use [`$().trigger(eventType, ...)`](http://api.jquery.com/trigger/) or [`$().on(eventType, ...)`](http://api.jquery.com/on/), depending on whether you're firing an event or listening for an event. (For example, `$().trigger('focus')` or `$().on('focus', function (event) { /* handle focus event */ })`) We do this to be compatible with custom builds of jQuery where the event aliases module has been excluded. - -## License - -By contributing your code, you agree to license your contribution under the [MIT License](LICENSE). \ No newline at end of file +- Create a component in the src/components folder +- Add tests in the src/components/\_\_tests\_\_ folder +- Register this component in src/index.js +- Run lint and tests before commiting anything +- Commit using [Commit Convention](./COMMIT_CONVENTION.md) +- PR on github diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 544d42d2..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,4 +0,0 @@ -# These are supported funding model platforms - -custom: "https://coreui.io/pricing/?support=true" -open_collective: coreui diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..db59f8ab --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,20 @@ +Before opening an issue: + +- [Search for duplicate or closed issues](https://github.com/coreui/coreui-vue/issues?utf8=%E2%9C%93&q=is%3Aissue) +- Prepare a [reduced test case](https://css-tricks.com/reduced-test-cases/) for any bugs +- Read the [contributing guidelines](./CONTRIBUTING.md) + +When asking general "how to" questions: + +- Please do not open an issue here + +When reporting a bug, include: + +- Operating system and version (Windows, Mac OS X, Android, iOS, etc...) +- Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser) +- Reduced test cases and potential fixes using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/) + +When suggesting a feature, include: + +- As much detail as possible for what we should add and why it's important to CoreUI Admin Template +- Relevant links to prior art, screenshots, or live demos whenever possible diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 7600be55..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Bug report -about: Tell us about a bug you may have identified in Bootstrap. -title: '' -labels: '' -assignees: '' - ---- - -Before opening: - -- [Search for duplicate or closed issues](https://github.com/coreui/coreui-vue/issues?utf8=%E2%9C%93&q=is%3Aissue) -- [Validate](https://html5.validator.nu/) any HTML to avoid common problems -- Read the [contributing guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md) - -Bug reports must include: - -- Operating system and version (Windows, macOS, Android, iOS) -- Browser and version (Chrome, Firefox, Safari, Microsoft Edge, Opera, Android Browser) -- A [reduced test case](https://css-tricks.com/reduced-test-cases/) or suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 5b09443c..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for a new feature in CoreUI. -title: '' -labels: feature -assignees: '' - ---- - -Before opening: - -- [Search for duplicate or closed issues](https://github.com/coreui/coreui-vue/issues?utf8=%E2%9C%93&q=is%3Aissue) -- Read the [contributing guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md) - -Feature requests must include: - -- As much detail as possible for what we should add and why it's important to Bootstrap -- Relevant links to prior art, screenshots, or live demos whenever possible diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..e3286a13 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,35 @@ + + + + + +**What kind of change does this PR introduce?** (check at least one) + +- [ ] Bugfix +- [ ] Feature +- [ ] Code style update +- [ ] Refactor +- [ ] Build-related changes +- [ ] Other, please describe: + +**Does this PR introduce a breaking change?** (check one) + +- [ ] Yes +- [ ] No + +If yes, please describe the impact and migration path for existing applications: + +**The PR fulfills these requirements:** + +- [ ] It's submitted to the `develop` branch (or to a previous version branch), _not_ the `master` branch +- [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix #xxx[,#xxx]`, where "xxx" is the issue number) +- [ ] All tests are passing +- [ ] New/updated tests are included + +If adding a **new feature**, the PR's description includes: +- [ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it) + +**Other information:** diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md deleted file mode 100644 index 74584c95..00000000 --- a/.github/SUPPORT.md +++ /dev/null @@ -1,9 +0,0 @@ -### Bug reports - -See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports. - -### How-to - -For general troubleshooting or help getting started: - -- Join [GitHub Discussions](https://github.com/coreui/coreui-vue/discussions). diff --git a/.github/workflows/daily-project-check.yml b/.github/workflows/daily-project-check.yml deleted file mode 100644 index 5776ce77..00000000 --- a/.github/workflows/daily-project-check.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Daily project check - -on: - schedule: - # build runs every weekday at 6AM UTC - - cron: '0 6 * * 1-5' - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [12.x] - os: [ubuntu-latest, windows-latest, macOS-latest] - - steps: - - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: npm install, build, test and lint - run: | - npm i - npm run build - npm run jest:test - npm run lint - env: - CI: true diff --git a/.github/workflows/project-check.yml b/.github/workflows/project-check.yml deleted file mode 100644 index 854186a4..00000000 --- a/.github/workflows/project-check.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Project check - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [12.x] - os: [ubuntu-latest, windows-latest, macOS-latest] - - steps: - - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: npm install, build, test and lint - run: | - npm i - npm run build - npm run jest:test - npm run lint - env: - CI: true diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 93e2ebb1..00000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,27 +0,0 @@ -# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. -# -# You can adjust the behavior by modifying this file. -# For more information, see: -# https://github.com/actions/stale -name: Mark stale issues and pull requests - -on: - schedule: - - cron: '17 14 * * *' - -jobs: - stale: - - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - - steps: - - uses: actions/stale@v3 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions' - stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions' - stale-issue-label: 'no-issue-activity' - stale-pr-label: 'no-pr-activity' diff --git a/.gitignore b/.gitignore index 054fb7a7..063b74e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,42 +1,38 @@ -# Folders to ignore +# Dependency directories +node_modules/ + +# Coverage directory coverage/ + +# Generated code dist/ -node_modules/ -yarn.lock -# local env files -.env.local -.env.*.local +### Node ### +# Logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* -# OS or Editor folders -._* -.cache -.temp -.DS_Store +# Integrity files +.yarn-integrity + +# Optional npm cache directory +.npm + +# Editor directories and files .idea -.project -.settings -.tmproj -*.esproj -*.sublime-project -*.sublime-workspace +.vscode *.suo *.ntvs* *.njsproj *.sln -*.sw? -nbproject -Thumbs.db -/.vscode/ - -# Numerous always-ignore extensions -*.diff -*.err -*.log -*.orig -*.rej -*.swo -*.swp -*.vi -*.zip -*~ + +# Misc +.DS_Store + +# Optional eslint cache +.eslintcache + +# dotenv environment variables file +.env diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 0aa07a72..00000000 --- a/.gitmodules +++ /dev/null @@ -1,8 +0,0 @@ -[submodule "packages/coreui-icons-vue"] - path = packages/coreui-icons-vue - url = https://github.com/coreui/coreui-icons-vue.git - branch = main -[submodule "packages/coreui-vue-chartjs"] - path = packages/coreui-vue-chartjs - url = https://github.com/coreui/coreui-vue-chartjs.git - branch = main diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..aa2c86f4 --- /dev/null +++ b/.npmignore @@ -0,0 +1,14 @@ +.babelrc +.commitlintrc +.editorconfig +.esdoc.json +.travis.yml +yarn.lock +.github/ +.storybook/ +coverage/ +node_modules/ +src/ +stories/ +jest.*.js +rollup.config.js \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..3ecb3981 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +8.9.0 \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 567609b1..00000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -build/ diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 27a44689..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "editor.defaultFormatter": "esbenp.prettier-vscode" - } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..8bfbea92 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,80 @@ +### [@coreui/vue](https://coreui.io/) changelog + +##### v2.1.2 +- update `babel-plugin-module-resolver` to `^3.1.2` +- update `eslint-config-prettier` to `^3.5.0` +- update `eslint-plugin-jest` to `^22.1.3` +- update `rollup-plugin-uglify` to `^6.0.1` +- update `vue` to `^2.5.22` +- update `vue-server-renderer` to `^2.5.22` +- update `vue-template-compiler` to `^2.5.22` +- lock `rollup-plugin-vue` on `4.3.2` + +##### v2.1.1 +- update `@vue/test-utils` to `^1.0.0-beta.28` +- update `eslint` to `^5.12.0` +- update `eslint-plugin-prettier` to `^3.0.1` +- update `eslint-plugin-vue` to `^5.1.0` +- update `husky` to `^1.3.1` +- update `vue` to `^2.5.21` +- update `vue-jest` to `^3.0.2` +- update `vue-loader` to `^15.5.1` +- update `vue-server-renderer` to `^2.5.21` +- update `vue-template-compiler` to `^2.5.21` +- update `jest-serializer-html` to `^6.0.0` +- update `rollup` to `^0.68.2` + +##### v2.1.0 +- feat(SidebarNavLink): attributes +- refactor(SidebarNav*): classes type [String, Array, Object] +- test: update SidebarNavLabel, SidebarNavLink, SidebarNavDivider +- refactor: rollup.config.js uglify() +- chore: update jest.config.js +- update `@vue/test-utils` to `^1.0.0-beta.27` +- update `babel-plugin-dynamic-import-node` to `^2.2.0` +- update `eslint` to `^5.10.0` +- update `eslint-config-prettier` to `^3.3.0` +- update `eslint-plugin-html` to `^5.0.0` +- update `eslint-plugin-jest` to `^22.1.2` +- update `eslint-plugin-vue` to `^5.0.0` +- update `husky` to `^1.2.0` +- update `lint-staged` to `^8.1.0` +- update `node-sass` to `^4.11.0` +- update `prettier` to `^1.15.3` +- update `rollup` to `^0.67.4` +- update `rollup-plugin-commonjs` to `^9.2.0` +- update `rollup-plugin-filesize` to `^5.0.1` +- update `rollup-plugin-replace` to `^2.1.0` +- update `rollup-plugin-uglify` to `^6.0.0` +- update `vue` to `^2.5.19` +- update `vue-server-renderer` to `^2.5.19` +- update `vue-template-compiler` to `^2.5.19` +- update `vue-jest` to `^3.0.1` +- update `vue-router` to `^3.0.2` +- update `@coreui/coreui` to `^2.1.4` + +##### v2.0.2 +- fix(AsideToggler): add missing `display { default:'lg' }` prop value +- fix(AsideToggler): add missing `defaultOpen` prop value handling +- refactor(shared): add missing `index.js` + +##### v2.0.1 +- fix(SidebarNav): dirty fix for `rtl` ps scrolling issue +- refactor(SidebarMinimizer): extract `togglePs` mixin +- update `@vue/test-utils` to `^1.0.0-beta.25` +- update `babel-eslint` to `^10.0.1` +- update `babel-jest` to `^23.6.0` +- update `eslint` to `^5.6.1` +- update `eslint-config-prettier` to `^3.1.0` +- update `eslint-plugin-html` to `^4.0.6` +- update `eslint-plugin-jest` to `^21.24.1` +- update `eslint-plugin-prettier` to `^3.0.0` +- update `husky` to `^1.1.0` +- update `jest` to `^23.6.0` +- update `lint-staged` to `^7.3.0` +- update `lodash` to `^4.17.11` +- update `prettier` to `^1.14.3` +- update `rollup-plugin-filesize` to `^4.0.1` +- update `rollup-plugin-json` to `^3.1.0` +- update `rollup-plugin-node-resolve` to `^3.4.0` +- update `vue-loader` to `^15.4.2` diff --git a/LICENSE b/LICENSE deleted file mode 100644 index fbb053e0..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 creativeLabs Łukasz Holeczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..374976a1 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright 2018 Łukasz Holeczek + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 3d4aab99..444788f3 100644 --- a/README.md +++ b/README.md @@ -1,230 +1,54 @@ -

- - CoreUI logo - -

+# @coreui/vue -

CoreUI for Vue.js

+[![Npm badge](https://img.shields.io/npm/v/@coreui/vue.svg)][npm] +[![NPM downloads][npm-download]][npm] +![Rollup badge](https://img.shields.io/badge/Rollup-^0.68.2-ff69b4.svg) +![Jest](https://img.shields.io/badge/Jest-^23.6.0-blue.svg) +![Vue](https://img.shields.io/badge/Vue-^2.5.22-brightgreen.svg) -

- Vue.js Components Library built on top of Bootstrap 5 and TypeScript. -
- Explore CoreUI for Vue.js docs » -
-
- Report bug - · - Request feature - · - Blog -

+[npm]: https://www.npmjs.com/package/@coreui/vue +[npm-download]: https://img.shields.io/npm/dm/@coreui/vue.svg?style=flat-square +> A [@coreui/vue](https://coreui.io/vue) `v2` library project -## Table of contents +for use with [CoreUI](https://coreui.io/vue/) `v2` Open Source Bootstrap Admin Template -- [Quick start](#quick-start) -- [Components](#components) -- [Status](#status) -- [Bugs and feature requests](#bugs-and-feature-requests) -- [Documentation](#documentation) -- [Frameworks](#frameworks) -- [Templates](#templates) -- [Contributing](#contributing) -- [Community](#community) -- [Versioning](#versioning) -- [Creators](#creators) -- [Support CoreUI Development](#support-coreui-development) -- [Copyright and license](#copyright-and-license) - -## Quick start - -### Instalation - -Several quick start options are available: - -- [Download the latest release](https://github.com/coreui/coreui-vue/archive/v5.4.1.zip) -- Clone the repo: `git clone https://github.com/coreui/coreui-vue.git` -- Install with [npm](https://www.npmjs.com/): `npm install @coreui/vue` -- Install with [yarn](https://yarnpkg.com/): `yarn add @coreui/vue` - -Read the [Getting started page](https://coreui.io/vue/docs/getting-started/introduction/) for information on the framework contents, templates and examples, and more. - -### Stylesheets - -Vue components are styled using `@coreui/coreui` CSS library, but you can use them also with bootstrap CSS library. That is possible because `@coreui/coreui` library is compatible with bootstrap, it just extends its functionalities. The only exception are custom CoreUI components, which don't exist in the Bootstrap ecosystem. - -#### CoreUI CSS files - -##### Installation - -```bash -yarn add @coreui/coreui -``` - -or - -```bash -npm install @coreui/coreui --save -``` - -##### Basic usage - -```js -import '@coreui/coreui/dist/css/coreui.min.css' -``` - -#### Bootstrap CSS files - -##### Installation - -```bash -yarn add bootstrap +## Installation ``` - -or - -```bash -npm install bootstrap +npm install @coreui/vue ``` +@coreui/vue can be used as a module in both CommonJS and ES modular environments. -##### Basic usage +When in non-modular environment, @coreui/vue will register all the components to vue by itself.

+### ES6 ```js -import "bootstrap/dist/css/bootstrap.min.css"; +// +// You can register a component manually +// +import { Switch } from '@coreui/vue'; + +export default { + ... + components: { + Switch + }, + ... +}; + +// +// or register the whole module with vue +// +import ModuleLibrary from '@coreui/vue'; + +// Install this library +Vue.use(ModuleLibrary); ``` -## Components - -- [Vue Accordion](https://coreui.io/vue/docs/components/accordion.html) -- [Vue Alert](https://coreui.io/vue/docs/components/alert.html) -- [Vue Avatar](https://coreui.io/vue/docs/components/avatar.html) -- [Vue Badge](https://coreui.io/vue/docs/components/badge.html) -- [Vue Breadcrumb](https://coreui.io/vue/docs/components/breadcrumb.html) -- [Vue Button](https://coreui.io/vue/docs/components/button.html) -- [Vue Button Group](https://coreui.io/vue/docs/components/button-group.html) -- [Vue Callout](https://coreui.io/vue/docs/components/callout.html) -- [Vue Card](https://coreui.io/vue/docs/components/card.html) -- [Vue Carousel](https://coreui.io/vue/docs/components/carousel.html) -- [Vue Checkbox](https://coreui.io/vue/docs/forms/checkbox.html) -- [Vue Close Button](https://coreui.io/vue/docs/components/close-button.html) -- [Vue Collapse](https://coreui.io/vue/docs/components/collapse.html) -- [Vue Date Picker](https://coreui.io/vue/docs/forms/date-picker.html) **PRO** -- [Vue Date Range Picker](https://coreui.io/vue/docs/forms/date-range-picker.html) **PRO** -- [Vue Dropdown](https://coreui.io/vue/docs/components/dropdown.html) -- [Vue Floating Labels](https://coreui.io/vue/docs/forms/floating-labels.html) -- [Vue Footer](https://coreui.io/vue/docs/components/footer.html) -- [Vue Header](https://coreui.io/vue/docs/components/header.html) -- [Vue Image](https://coreui.io/vue/docs/components/image.html) -- [Vue Input](https://coreui.io/vue/docs/forms/input.html) -- [Vue Input Group](https://coreui.io/vue/docs/forms/input-group.html) -- [Vue List Group](https://coreui.io/vue/docs/components/list-group.html) -- [Vue Loading Button](https://coreui.io/vue/docs/components/loading-button.html) **PRO** -- [Vue Modal](https://coreui.io/vue/docs/components/modal.html) -- [Vue Multi Select](https://coreui.io/vue/docs/forms/multi-select.html) **PRO** -- [Vue Navs & Tabs](https://coreui.io/vue/docs/components/navs-tabs.html) -- [Vue Navbar](https://coreui.io/vue/docs/components/navbar.html) -- [Vue Offcanvas](https://coreui.io/vue/docs/components/offcanvas.html) -- [Vue Pagination](https://coreui.io/vue/docs/components/pagination.html) -- [Vue Placeholder](https://coreui.io/vue/docs/components/placeholder.html) -- [Vue Popover](https://coreui.io/vue/docs/components/popover.html) -- [Vue Progress](https://coreui.io/vue/docs/components/progress.html) -- [Vue Radio](https://coreui.io/vue/docs/forms/radio.html) -- [Vue Range](https://coreui.io/vue/docs/forms/range.html) -- [Vue Rating](https://coreui.io/vue/docs/forms/rating.html) -- [Vue Select](https://coreui.io/vue/docs/forms/select.html) -- [Vue Sidebar](https://coreui.io/vue/docs/components/sidebar.html) -- [Vue Smart Pagination](https://coreui.io/vue/docs/components/smart-pagination.html) **PRO** -- [Vue Smart Table](https://coreui.io/vue/docs/components/smart-table.html) **PRO** -- [Vue Spinner](https://coreui.io/vue/docs/components/spinner.html) -- [Vue Switch](https://coreui.io/vue/docs/forms/switch.html) -- [Vue Table](https://coreui.io/vue/docs/components/table.html) -- [Vue Textarea](https://coreui.io/vue/docs/forms/textarea.html) -- [Vue Time Picker](https://coreui.io/vue/docs/forms/time-picker.html) **PRO** -- [Vue Toast](https://coreui.io/vue/docs/components/toast.html) -- [Vue Tooltip](https://coreui.io/vue/docs/components/tooltip.html) - -## Status - -[![npm version](https://img.shields.io/npm/v/@coreui/vue)](https://www.npmjs.com/package/@coreui/vue) - -## Bugs and feature requests - -Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/coreui/coreui-vue/issues/new). +## Changelog -## Documentation - -The documentation for the CoreUI & CoreUI PRO is hosted at our website [CoreUI for Vue](https://coreui.io/vue/docs/getting-started/introduction) - -### Running documentation locally - -1. Run `yarn install` or `npm install` to install the Node.js dependencies. -2. Run `yarn bootstrap` or `npm run bootstrap` to link local packages together and install remaining package dependencies. -3. From the root directory, run `yarn docs:dev` or `npm run docs:dev` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. -4. Open `http://localhost:8000/` in your browser, and voilà. - -## Frameworks - -CoreUI supports most popular frameworks. - -- [CoreUI for Angular](https://github.com/coreui/coreui-angular) -- [CoreUI for Bootstrap (Vanilla JS)](https://github.com/coreui/coreui) -- [CoreUI for React](https://github.com/coreui/coreui-react) -- [CoreUI for Vue](https://github.com/coreui/coreui-vue) - -## Templates - -Fully featured, out-of-the-box, templates for your application based on CoreUI. - -- [Angular Admin Template](https://coreui.io/angular) -- [Bootstrap Admin Template](https://coreui.io/) -- [React Admin Template](https://coreui.io/react) -- [Vue Admin Template](https://coreui.io/vue) +See the GitHub [release history](https://github.com/coreui/coreui-vue/releases). ## Contributing -Please read through our [contributing guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. - -Editor preferences are available in the [editor config](https://github.com/coreui/coreui-vue/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at . - -## Community - -Stay up to date on the development of CoreUI and reach out to the community with these helpful resources. - -- Read and subscribe to [The Official CoreUI Blog](https://coreui.io/blog/). - -You can also follow [@core_ui on Twitter](https://twitter.com/core_ui). - -## Versioning - -For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI is maintained under [the Semantic Versioning guidelines](http://semver.org/). - -See [the Releases section of our project](https://github.com/coreui/coreui-vue/releases) for changelogs for each release version. - -## Creators - -**Łukasz Holeczek** - -* -* - -**Andrzej Kopański** - -* - -**CoreUI Team** - -* -* -* - -## Support CoreUI Development - -CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/?framework=vue&src=github-coreui-vue) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/). - -## Copyright and license - -Copyright 2025 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-vue/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). +See [CONTRIBUTING.md](.github/CONTRIBUTING.md). diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 15164bf5..00000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,76 +0,0 @@ -import eslint from '@eslint/js' -import eslintPluginUnicorn from 'eslint-plugin-unicorn' -import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' -import eslintPluginVue from 'eslint-plugin-vue' -import globals from 'globals' -import typescriptEslint from 'typescript-eslint' - -export default typescriptEslint.config( - { ignores: ['**/*.d.ts', '**/coverage', '**/dist', '**/docs'] }, - { - extends: [ - eslint.configs.recommended, - ...typescriptEslint.configs.recommended, - ...eslintPluginVue.configs['flat/recommended'], - eslintPluginUnicorn.configs['flat/recommended'], - ], - files: ['packages/**/src/**/*.{js,ts,tsx}'], - languageOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - globals: globals.browser, - parserOptions: { - parser: typescriptEslint.parser, - }, - }, - rules: { - 'no-console': 'off', - 'no-debugger': 'off', - 'unicorn/filename-case': 'off', - 'unicorn/no-array-for-each': 'off', - 'unicorn/no-null': 'off', - 'unicorn/prefer-dom-node-append': 'off', - 'unicorn/prefer-export-from': 'off', - 'unicorn/prefer-query-selector': 'off', - 'unicorn/prevent-abbreviations': 'off', - 'vue/require-default-prop': 'off', - }, - }, - { - files: ['**/*.mjs'], - languageOptions: { - globals: { - ...Object.fromEntries(Object.entries(globals.browser).map(([key]) => [key, 'off'])), - ...globals.node, - }, - - ecmaVersion: 'latest', - sourceType: 'module', - }, - }, - { - files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'], - languageOptions: { - globals: { - ...globals.jest, - }, - }, - }, - { - files: ['packages/docs/build/**'], - languageOptions: { - globals: { - ...Object.fromEntries(Object.entries(globals.browser).map(([key]) => [key, 'off'])), - ...globals.node, - }, - - ecmaVersion: 5, - sourceType: 'commonjs', - }, - rules: { - 'no-console': 'off', - strict: 'error', - }, - }, - eslintPluginPrettierRecommended, -) diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..393fedfc --- /dev/null +++ b/jest.config.js @@ -0,0 +1,19 @@ +const path = require("path"); + +module.exports = { + rootDir: path.resolve(__dirname, "./"), + moduleFileExtensions: ["js", "json", "vue"], + transform: { + ".*\\.js$": "/node_modules/babel-jest", + ".*\\.vue$": "/node_modules/vue-jest" + }, + snapshotSerializers: ["/node_modules/jest-serializer-vue"], + setupFiles: ["/jest.setup"], + coverageDirectory: "/coverage", + collectCoverageFrom: [ + "src/**/*.{js,vue}", + "!src/components/index.js", + "!src/index.umd.js", + "!**/node_modules/**" + ] +}; diff --git a/jest.setup.js b/jest.setup.js new file mode 100644 index 00000000..5b97c61c --- /dev/null +++ b/jest.setup.js @@ -0,0 +1,3 @@ +import Vue from "vue"; + +Vue.config.productionTip = false; diff --git a/lerna.json b/lerna.json deleted file mode 100644 index 6fea4400..00000000 --- a/lerna.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "npmClient": "yarn", - "packages": ["packages/*"], - "version": "5.4.1", - "$schema": "node_modules/lerna/schemas/lerna-schema.json" -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..62723bf7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10956 @@ +{ + "name": "@coreui/vue", + "version": "2.1.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", + "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "dev": true, + "requires": { + "@babel/types": "^7.5.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", + "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", + "dev": true + }, + "@babel/runtime": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", + "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.5.5", + "@babel/types": "^7.5.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", + "dev": true + }, + "@types/node": { + "version": "12.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", + "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@typescript-eslint/experimental-utils": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz", + "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-scope": "^4.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz", + "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==", + "dev": true, + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + } + } + }, + "@vue/component-compiler": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler/-/component-compiler-3.6.0.tgz", + "integrity": "sha512-NIA0vmOI4zbtJAn69iZls8IJ8VxmguswAuiUdu8TcR+YYTYzntfw290HUCSFjzAdRg+FUWZv8r+wc3TzJ/IjwA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^2.1.0", + "clean-css": "^4.1.11", + "hash-sum": "^1.0.2", + "postcss-modules-sync": "^1.0.0", + "source-map": "0.6.*" + }, + "dependencies": { + "@vue/component-compiler-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", + "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + } + }, + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.0.0.tgz", + "integrity": "sha512-am+04/0UX7ektcmvhYmrf84BDVAD8afFOf4asZjN84q8xzxFclbk5x0MtxuKGfp+zjN5WWPJn3fjFAWtDdIGSw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/test-utils": { + "version": "1.0.0-beta.29", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz", + "integrity": "sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA==", + "dev": true, + "requires": { + "dom-event-types": "^1.0.0", + "lodash": "^4.17.4" + } + }, + "abab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", + "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "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 + }, + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.3.tgz", + "integrity": "sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "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" + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "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": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "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": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "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": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "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": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "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 + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", + "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", + "dev": true + }, + "babel-plugin-jsx-event-modifiers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-event-modifiers/-/babel-plugin-jsx-event-modifiers-2.0.5.tgz", + "integrity": "sha512-tWGnCk0whZ+nZcj9tYLw4+y08tPJXqaEjIxRJZS6DkUUae72Kz4BsoGpxt/Kow7mmgQJpvFCw8IPLSNh5rkZCg==", + "dev": true + }, + "babel-plugin-jsx-v-model": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-v-model/-/babel-plugin-jsx-v-model-2.0.3.tgz", + "integrity": "sha512-SIx3Y3XxwGEz56Q1atwr5GaZsxJ2IRYmn5dl38LFkaTAvjnbNQxsZHO+ylJPsd+Hmv+ixJBYYFEekPBTHwiGfQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.18.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", + "dev": true, + "requires": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "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-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + } + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-vue-jsx": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz", + "integrity": "sha512-W39X07/n3oJMQd8tALBO+440NraGSF//Lo1ydd/9Nme3+QiRGFBb1Q39T9iixh0jZPPbfv3so18tNoIgLatymw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + } + } + }, + "babel-preset-jest": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "babel-preset-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-vue/-/babel-preset-vue-2.0.2.tgz", + "integrity": "sha1-z63xvXNhJTl0gbX4UlztAEmgxx8=", + "dev": true, + "requires": { + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-plugin-jsx-event-modifiers": "^2.0.2", + "babel-plugin-jsx-v-model": "^2.0.1", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.5.0" + } + }, + "babel-preset-vue-app": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-vue-app/-/babel-preset-vue-app-2.0.0.tgz", + "integrity": "sha512-w81q5FMPvD+VNC1Sc1vXeSkNb8hVehQzhoUrESt4edzghuBgb3twLWkknbNxh5W4SN5Cz75b/rUPOvxDuh2low==", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-env": "^1.6.0", + "babel-preset-vue": "^2.0.0", + "babel-runtime": "^6.20.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "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", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "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", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "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", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "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" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "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 + }, + "bl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", + "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "dev": true, + "requires": { + "readable-stream": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "boxen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-2.1.0.tgz", + "integrity": "sha512-luq3RQOt2U5sUX+fiu+qnT+wWnHDcATLpEe63jvge6GUZO99AKbVRfp97d2jgLvq1iQa0ORzaAm4lGVG52ZSlw==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.0.0", + "chalk": "^2.4.1", + "cli-boxes": "^1.0.0", + "string-width": "^3.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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": "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brotli-size": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-0.0.3.tgz", + "integrity": "sha512-bBIdd8uUGxKGldAVykxOqPegl+HlIm4FpXJamwWw5x77WCE8jO7AhXFE1YXOhOB28gS+2pTQete0FqRE6U5hQQ==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "iltorb": "^2.0.5" + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "bser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "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" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "dev": true + }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "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" + } + }, + "chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "dev": true + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "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.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "commenting": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/commenting/-/commenting-1.0.5.tgz", + "integrity": "sha512-U7qGbcDLSNpOcV3RQRKHp7hFpy9WUmfawbkPdS4R2RhrSu4dOF85QQpx/Zjcv7uLF6tWSUKEKUIkxknPCrVjwg==", + "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 + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "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", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "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" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "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" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-assign": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", + "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=", + "dev": true, + "requires": { + "is-obj": "^1.0.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 + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diffable-html": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/diffable-html/-/diffable-html-4.0.0.tgz", + "integrity": "sha512-keJdgy2qBkdrrnwP1YE6e834d4Y+mV0aRFzk8w7WzyAJVbQVfcJltSmUWB3r/NOoO/0jt7RdJlvy5ioyqvmQcw==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + } + }, + "dom-event-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", + "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", + "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "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 + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "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" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "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", + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.3.252", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.252.tgz", + "integrity": "sha512-NWJ5TztDnjExFISZHFwpoJjMbLUifsNBnx7u2JI0gCw6SbKyQYYWWtBHasO/jPtHym69F4EZuTpRNGN11MT/jg==", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, + "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.14.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.1.tgz", + "integrity": "sha512-cp/Tb1oA/rh2X7vqeSOvM+TSo3UkJLX70eNihgVEvnzwAgikjkTFr/QVgRCaxjm0knCNQzNoxxxcw2zO2LJdZA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.0.0", + "string.prototype.trimright": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "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 + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "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" + } + } + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-config-prettier": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-3.6.0.tgz", + "integrity": "sha512-ixJ4U3uTLXwJts4rmSVW/lMXjlGwCijhBJHk8iVqKKSifeI0qgFEfWl8L63isfc8Od7EiBALF6BX3jKLluf/jQ==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, + "eslint-import-resolver-babel-module": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-4.0.0.tgz", + "integrity": "sha512-aPj0+pG0H3HCaMD9eRDYEzPdMyKrLE2oNhAzTXd2w86ZBe3s7drSrrPwVTfzO1CBp13FGk8S84oRmZHZvSo0mA==", + "dev": true, + "requires": { + "pkg-up": "^2.0.0", + "resolve": "^1.4.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", + "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^2.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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-html": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-5.0.5.tgz", + "integrity": "sha512-v/33i3OD0fuXcRXexVyXXBOe4mLBLBQoF1UO1Uy9D+XLq4MC8K45GcQKfqjC/FnHAHp3pYUjpHHktYNCtShGmg==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "eslint-plugin-import": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.11.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" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-plugin-jest": { + "version": "22.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.17.0.tgz", + "integrity": "sha512-WT4DP4RoGBhIQjv+5D0FM20fAdAUstfYAf/mkufLNTojsfgzc5/IYW22cIg/Q4QBavAZsROQlqppiWDpFZDS8Q==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^1.13.0" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz", + "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz", + "integrity": "sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw==", + "dev": true, + "requires": { + "vue-eslint-parser": "^5.0.0" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "dev": true + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "vue-eslint-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz", + "integrity": "sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.1.0", + "esquery": "^1.0.1", + "lodash": "^4.17.11" + } + } + } + }, + "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" + } + }, + "eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "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": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/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 + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "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" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, + "expect": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", + "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.6.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + } + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "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" + } + } + } + }, + "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.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" + } + } + } + }, + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", + "dev": true, + "requires": { + "css": "^2.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "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", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "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" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "generic-names": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz", + "integrity": "sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=", + "dev": true, + "requires": { + "loader-utils": "^0.2.16" + }, + "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 + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "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-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "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": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "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": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "handlebars": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.2.0.tgz", + "integrity": "sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "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-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "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": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "dependencies": { + "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 + }, + "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" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "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" + } + }, + "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-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.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" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + } + } + }, + "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": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "iltorb": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-2.4.3.tgz", + "integrity": "sha512-cr/kC07Cf9sW3TWH7yUxV2QkNjby4LMCsXGmxPCQs5x//QzTpF3GLPNY7L66G+DkNGaTRCgY+vYZ+dyAcuDOnQ==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "nan": "^2.13.2", + "npmlog": "^4.1.2", + "prebuild-install": "^5.3.0", + "which-pm-runs": "^1.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "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": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "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.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "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": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "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-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "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": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", + "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", + "dev": true, + "requires": { + "import-local": "^1.0.0", + "jest-cli": "^23.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-cli": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", + "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.6.0", + "jest-environment-jsdom": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.6.0", + "jest-runner": "^23.6.0", + "jest-runtime": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "prompts": "^0.1.9", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^11.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", + "dev": true, + "requires": { + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", + "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.6.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.6.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "babel-jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", + "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "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" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "jest-diff": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", + "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + } + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", + "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.6.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-haste-map": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", + "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "jest-jasmine2": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", + "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.6.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.6.0", + "jest-each": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + } + } + }, + "jest-leak-detector": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", + "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", + "dev": true, + "requires": { + "pretty-format": "^23.6.0" + } + }, + "jest-matcher-utils": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", + "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", + "dev": true + }, + "jest-regex-util": { + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "dev": true + }, + "jest-resolve": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", + "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", + "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", + "dev": true, + "requires": { + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.6.0" + } + }, + "jest-runner": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", + "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.6.0", + "jest-jasmine2": "^23.6.0", + "jest-leak-detector": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.6.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", + "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "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" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-serializer": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", + "dev": true + }, + "jest-serializer-html": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jest-serializer-html/-/jest-serializer-html-6.0.0.tgz", + "integrity": "sha512-S855oT9Yt1T07I45+uRaLsH22TR5lAvgqBxKreqDKs6QmcaxzapGgKamc4J2KxMrPc2uDdWcuOaprcjIuVUxvQ==", + "dev": true, + "requires": { + "diffable-html": "^4.0.0" + } + }, + "jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "dev": true, + "requires": { + "pretty": "2.0.0" + } + }, + "jest-snapshot": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", + "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", + "dev": true, + "requires": { + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.6.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.6.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "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==", + "dev": true + } + } + }, + "jest-validate": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", + "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-vue-preprocessor": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jest-vue-preprocessor/-/jest-vue-preprocessor-1.5.0.tgz", + "integrity": "sha512-2O0pewvL8urvjjkDq/ZorvFpk3vKtXFawfJ3nVlv38o7V3j4YY0nAWh+7p/2yYLZrBOg2aDTiQTwxCRt4qZNWA==", + "dev": true, + "requires": { + "babel-plugin-transform-runtime": "6.23.0", + "find-babel-config": "1.2.0", + "typescript": "2.7.2", + "vue-property-decorator": "6.1.0" + } + }, + "jest-watcher": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "dev": true, + "requires": { + "merge-stream": "^1.0.1" + } + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-beautify": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", + "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~0.5.1", + "nopt": "~4.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "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.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "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-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.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "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-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "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": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", + "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lint-staged": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.2.1.tgz", + "integrity": "sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^5.2.0", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "listr": "^0.14.2", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2", + "yup": "^0.27.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "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 + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "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": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.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": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "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.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "magic-string": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "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" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "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" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", + "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", + "dev": true + }, + "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 + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "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" + } + }, + "napi-build-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", + "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "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 + }, + "node-abi": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.11.0.tgz", + "integrity": "sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-cache": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.1.tgz", + "integrity": "sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==", + "dev": true, + "requires": { + "clone": "2.x", + "lodash": "^4.17.15" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + } + } + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "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-sass": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", + "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.11", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "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" + } + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "^1.2.10" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "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": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "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", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "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": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "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", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.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" + }, + "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-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.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" + } + }, + "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 + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-sync": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-sync/-/postcss-modules-sync-1.0.0.tgz", + "integrity": "sha1-YZpxnPeN0WpINBNRQLMkz3czS+E=", + "dev": true, + "requires": { + "generic-names": "^1.0.2", + "icss-replace-symbols": "^1.0.2", + "postcss": "^5.2.5", + "postcss-modules-local-by-default": "^1.1.1", + "postcss-modules-scope": "^1.0.2", + "string-hash": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prebuild-install": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.2.tgz", + "integrity": "sha512-INDfXzTPnhT+WYQemqnAXlP7SvfiFMopMozSgXCZ+RDLb279gKfIuLk4o7PgEawLp3WrMgIYGBpkxpraROHsSA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", + "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "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", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "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 + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "dev": true, + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.1.tgz", + "integrity": "sha512-2KLd5fKOdAfShtY2d/8XDWVRnmp3zp40Qt6ge2zBPFARLXOGUf2fHD5eg+TV/5oxBtQKVhjUaKFsAaE4HnwfSA==", + "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" + } + }, + "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 + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "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": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "dependencies": { + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + } + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "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" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "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.0", + "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.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "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 + }, + "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" + } + }, + "rollup": { + "version": "0.68.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.68.2.tgz", + "integrity": "sha512-WgjNCXYv7ZbtStIap1+tz4pd2zwz0XYN//OILwEY6dINIFLVizK1iWdu+ZtUURL/OKnp8Lv2w8FBds8YihzX7Q==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "*" + } + }, + "rollup-plugin-babel": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.7.tgz", + "integrity": "sha512-bVe2y0z/V5Ax1qU8NX/0idmzIwJPdUGu8Xx3vXH73h0yGjxfv2gkFI82MBVg49SlsFlLTBadBHb67zy4TWM3hA==", + "dev": true, + "requires": { + "rollup-pluginutils": "^1.5.0" + }, + "dependencies": { + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "^0.2.1", + "minimatch": "^3.0.2" + } + } + } + }, + "rollup-plugin-commonjs": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", + "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "magic-string": "^0.25.2", + "resolve": "^1.10.0", + "rollup-pluginutils": "^2.6.0" + } + }, + "rollup-plugin-filesize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-5.0.1.tgz", + "integrity": "sha512-zVUkEuJ543D86EaC5Ql2M6d6aAXwWbRwJ9NWSzTUS7F3vdd1cf+zlL+roQY8sW2hLIpbDMnGfev0dcy4bHQbjw==", + "dev": true, + "requires": { + "boxen": "^2.0.0", + "brotli-size": "0.0.3", + "colors": "^1.3.2", + "deep-assign": "^2.0.0", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "terser": "^3.10.0" + } + }, + "rollup-plugin-json": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-3.1.0.tgz", + "integrity": "sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.3.1" + } + }, + "rollup-plugin-license": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-license/-/rollup-plugin-license-0.7.0.tgz", + "integrity": "sha512-KoZxV+UxBUaubo3mu7IHjMFryCuZIU8Q9tm8GLUl/lz6DQCEJUEgcp+urItEuux8xa7M0Qx7Fjoe4g3s9hsUFg==", + "dev": true, + "requires": { + "commenting": "1.0.5", + "lodash": "4.17.9", + "magic-string": "0.25.0", + "mkdirp": "0.5.1", + "moment": "2.22.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.9.tgz", + "integrity": "sha512-vuRLquvot5sKUldMBumG0YqLvX6m/RGBBOmqb3CWR/MC/QvvD1cTH1fOqxz2FJAQeoExeUdX5Gu9vP2EP6ik+Q==", + "dev": true + }, + "magic-string": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.0.tgz", + "integrity": "sha512-Msbwa9oNYNPjwVh9ury5X2BHbTFWoirTlzuf4X+pIoSOQVKNRJHXTx1WmKYuXzRM4QZFv8dGXyZvhDMmWhGLPw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.1" + } + } + } + }, + "rollup-plugin-node-resolve": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", + "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", + "dev": true, + "requires": { + "builtin-modules": "^2.0.0", + "is-module": "^1.0.0", + "resolve": "^1.1.6" + } + }, + "rollup-plugin-replace": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz", + "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==", + "dev": true, + "requires": { + "magic-string": "^0.25.2", + "rollup-pluginutils": "^2.6.0" + } + }, + "rollup-plugin-uglify": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.3.tgz", + "integrity": "sha512-PIv3CfhZJlOG8C85N0GX+uK09TPggmAS6Nk6fpp2ELzDAV5VUhNzOURDU2j7+MwuRr0zq9IZttUTADc/jH8Gkg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "jest-worker": "^24.0.0", + "serialize-javascript": "^1.9.0", + "uglify-js": "^3.4.9" + }, + "dependencies": { + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "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" + } + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "dev": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + } + } + }, + "rollup-plugin-vue": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-vue/-/rollup-plugin-vue-4.3.2.tgz", + "integrity": "sha512-XPd7bE8O8W1c2fkRwUmlKioXEjE3Zvn/ksbwPkPsyoT+Wik0XVtzyDjoHg/qYcqNm+gzc8idBo3/fgNkTCiSTA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0-beta.46", + "@vue/component-compiler": "^3.4.4", + "@vue/component-compiler-utils": "^2.1.0", + "debug": "^2.6.0", + "hash-sum": "^1.0.2", + "querystring": "^0.2.0", + "rollup-pluginutils": "^2.0.1" + }, + "dependencies": { + "@vue/component-compiler-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", + "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + } + }, + "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" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "rollup-pluginutils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", + "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "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": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", + "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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 + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "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": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-git": { + "version": "1.126.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.126.0.tgz", + "integrity": "sha512-47mqHxgZnN8XRa9HbpWprzUv3Ooqz9RY/LSZgvA7jCkW8jcwLahMz7LKugY91KZehfG0sCVPtgXiU72hd6b1Bw==", + "dev": true, + "requires": { + "debug": "^4.0.1" + } + }, + "sisteransi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "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.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "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" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "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" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "staged-git-files": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.0.0.tgz", + "integrity": "sha1-aLaqjhYsaoDnbjqKDC50cYbicf8=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.0.2" + } + }, + "string.prototype.trimright": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.0.0.tgz", + "integrity": "sha1-q0pW2AKgH75yk+EehPJNyBZGYd0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.0.2" + } + }, + "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" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "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": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "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" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "synchronous-promise": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.10.tgz", + "integrity": "sha512-6PC+JRGmNjiG3kJ56ZMNWDPL8hjyghF5cMXIFOKg+NiwwEZZIvxTWd0pinWKyD227odg9ygF8xVhhz7gb8Uq7A==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "tar-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", + "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp": "^0.5.1", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", + "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "dev": true, + "requires": { + "bl": "^3.0.0", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "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", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "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": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "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": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "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": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "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" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "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": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typescript": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "dev": true + }, + "uglify-es": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.10.tgz", + "integrity": "sha512-rPzPisCzW68Okj1zNrfa2dR9uEm43SevDmpR6FChoZABFk9dANGnzzBMgHYUXI3609//63fnVkyQ1SQmAMyjww==", + "dev": true, + "requires": { + "commander": "~2.14.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "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==", + "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": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "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": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "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": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "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": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "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-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "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" + } + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "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" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vue": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==", + "dev": true + }, + "vue-class-component": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz", + "integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A==", + "dev": true + }, + "vue-clickaway": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vue-clickaway/-/vue-clickaway-2.2.2.tgz", + "integrity": "sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A==", + "requires": { + "loose-envify": "^1.2.0" + } + }, + "vue-hot-reload-api": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz", + "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==", + "dev": true + }, + "vue-jest": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.4.tgz", + "integrity": "sha512-PY9Rwt4OyaVlA+KDJJ0614CbEvNOkffDI9g9moLQC/2DDoo0YrqZm7dHi13Q10uoK5Nt5WCYFdeAheOExPah0w==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "chalk": "^2.1.0", + "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.7.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.1.tgz", + "integrity": "sha512-fwIKtA23Pl/rqfYP5TSGK7gkEuLhoTvRYW+TU7ER3q9GpNLt/PjG5NLv3XHRDiTg7OPM1JcckBgds+VnAc+HbA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.0.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-perfect-scrollbar": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-perfect-scrollbar/-/vue-perfect-scrollbar-0.1.0.tgz", + "integrity": "sha512-l/ZEidPDFplXeDtxs+gO3D8efhwqyIEcUtfvfRujCQemcn39ghpSNoizWWZYI6Ro0iz3yP+w7LqNxEBjE+T1qQ==" + }, + "vue-property-decorator": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-6.1.0.tgz", + "integrity": "sha512-NM4PYPOkOIO7SFtWiQqVrbp+ORzd7CJXcIz0X710PNW9pxGfbil0/x/ULFympzIUoHXBKN2dqoOQzh6oeMzpTQ==", + "dev": true, + "requires": { + "reflect-metadata": "^0.1.10", + "vue-class-component": "^6.1.0" + } + }, + "vue-router": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz", + "integrity": "sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==", + "dev": true + }, + "vue-server-renderer": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.10.tgz", + "integrity": "sha512-UYoCEutBpKzL2fKCwx8zlRtRtwxbPZXKTqbl2iIF4yRZUNO/ovrHyDAJDljft0kd+K0tZhN53XRHkgvCZoIhug==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "resolve": "^1.2.0", + "serialize-javascript": "^1.3.0", + "source-map": "0.5.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", + "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "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-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "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": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yup": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", + "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" + }, + "dependencies": { + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json index 9b945921..26214af4 100644 --- a/package.json +++ b/package.json @@ -1,37 +1,118 @@ { - "private": true, - "workspaces": [ - "packages/*" + "name": "@coreui/vue", + "description": "CoreUI Vue Bootstrap 4 layout components", + "version": "2.1.2", + "license": "MIT", + "main": "dist/coreui-vue.common.js", + "module": "dist/coreui-vue.esm.js", + "files": [ + "src", + "dist/*.js" ], + "homepage": "https://coreui.io/", + "author": { + "name": "Łukasz Holeczek", + "url": "http://holeczek.pl/", + "github": "https://github.com/mrholek", + "twitter": "https://twitter.com/lukaszholeczek" + }, + "contributors": [ + { + "name": "Andrzej Kopański", + "url": "https://github.com/xidedix" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/coreui/coreui-vue.git" + }, + "bugs": { + "url": "https://github.com/coreui/coreui-vue/issues" + }, + "keywords": [ + "coreui", + "vue", + "vue-component", + "vue-library", + "bootstrap", + "framework", + "responsive", + "layout", + "component", + "components" + ], + "engines": { + "node": ">=8.9.0", + "npm": ">= 5.6.0" + }, "scripts": { - "charts:build": "lerna run --scope \"@coreui/vue-chartjs\" build --stream", - "charts:test": "lerna run --scope \"@coreui/vue-chartjs\" test --stream", - "charts:test:update": "lerna run --scope \"@coreui/vue-chartjs\" test:update --stream", - "docs:api": "lerna run --scope \"@coreui/vue-docs\" api --stream", - "docs:dev": "lerna run --scope \"@coreui/vue-docs\" dev --stream", - "docs:build": "lerna run --scope \"@coreui/vue-docs\" build --stream", - "docs:dist": "lerna run --scope \"@coreui/vue-docs\" dist --stream", - "icons:build": "lerna run --scope \"@coreui/icons-vue\" build --stream", - "icons:test": "lerna run --scope \"@coreui/icons-vue\" test --stream", - "icons:test:update": "lerna run --scope \"@coreui/icons-vue\" test:update --stream", - "lib:build": "lerna run --scope \"@coreui/vue\" build --stream", - "lib:test": "lerna run --scope \"@coreui/vue\" test --stream", - "lib:test:update": "lerna run --scope \"@coreui/vue\" test:update --stream", - "lint": "eslint", - "test": "npm-run-all charts:test icons:test lib:test", - "test:update": "npm-run-all charts:test:update icons:test:update lib:test:update" + "build": "npm run build:cjs && npm run build:es && npm run build:umd:dev && npm run build:umd:prod", + "build:cjs": "rollup -c --environment TARGET:cjs", + "build:es": "rollup -c --environment TARGET:esm", + "build:umd:dev": "rollup -c --environment TARGET:umd-dev", + "build:umd:prod": "rollup -c --environment TARGET:umd-prod", + "precommit": "lint-staged", + "test": "npm run lint && jest --verbose --coverage", + "test:update": "jest --verbose --updateSnapshot", + "test:watch": "jest --verbose --watchAll --notify", + "lint": "eslint --ext .js,.vue .", + "lint:fix": "eslint --ext .js,.vue . --fix" + }, + "dependencies": { + "vue-clickaway": "^2.2.2", + "vue-perfect-scrollbar": "^0.1.0" }, "devDependencies": { - "@vue/vue3-jest": "29.2.6", - "eslint": "^9.17.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-unicorn": "^56.0.1", - "eslint-plugin-vue": "^9.32.0", - "globals": "^15.14.0", - "lerna": "^8.1.9", - "npm-run-all": "^4.1.5", - "prettier": "^3.4.2", - "typescript-eslint": "^8.19.1" + "@vue/test-utils": "^1.0.0-beta.28", + "babel-core": "^6.26.3", + "babel-eslint": "^10.0.1", + "babel-jest": "^23.6.0", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "^3.1.2", + "babel-preset-vue-app": "^2.0.0", + "eslint": "^5.12.0", + "eslint-config-prettier": "^3.5.0", + "eslint-import-resolver-babel-module": "^4.0.0", + "eslint-plugin-html": "^5.0.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-jest": "^22.1.3", + "eslint-plugin-prettier": "^3.0.1", + "eslint-plugin-vue": "^5.1.0", + "husky": "^1.3.1", + "jest": "^23.6.0", + "jest-serializer-html": "^6.0.0", + "jest-serializer-vue": "^2.0.2", + "jest-vue-preprocessor": "^1.4.0", + "lint-staged": "^8.1.0", + "lodash": "^4.17.11", + "node-sass": "^4.11.0", + "prettier": "^1.15.3", + "rollup": "^0.68.2", + "rollup-plugin-babel": "^3.0.7", + "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-filesize": "^5.0.1", + "rollup-plugin-json": "^3.1.0", + "rollup-plugin-license": "^0.7.0", + "rollup-plugin-node-resolve": "^3.4.0", + "rollup-plugin-replace": "^2.1.0", + "rollup-plugin-uglify": "^6.0.1", + "rollup-plugin-vue": "4.3.2", + "sass-loader": "^7.1.0", + "uglify-es": "^3.3.9", + "vue": "^2.5.22", + "vue-jest": "^3.0.2", + "vue-loader": "^15.5.1", + "vue-router": "^3.0.2", + "vue-server-renderer": "^2.5.22", + "vue-template-compiler": "^2.5.22" + }, + "peerDependencies": { + "@coreui/coreui": "^2.1.4" + }, + "lint-staged": { + "*.{js,vue}": [ + "eslint --fix", + "git add" + ] } } diff --git a/packages/coreui-icons-vue b/packages/coreui-icons-vue deleted file mode 160000 index 009583d5..00000000 --- a/packages/coreui-icons-vue +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 009583d58f7ea9a2a7bc7a2e62861eba48c0d911 diff --git a/packages/coreui-vue-chartjs b/packages/coreui-vue-chartjs deleted file mode 160000 index f3b8364d..00000000 --- a/packages/coreui-vue-chartjs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f3b8364d04dcd94c273ead1f740e1d792a5fb041 diff --git a/packages/coreui-vue/.browserslistrc b/packages/coreui-vue/.browserslistrc deleted file mode 100644 index bd3ad98e..00000000 --- a/packages/coreui-vue/.browserslistrc +++ /dev/null @@ -1,3 +0,0 @@ -> 1% -last 2 versions -not ie <= 8 \ No newline at end of file diff --git a/packages/coreui-vue/LICENSE b/packages/coreui-vue/LICENSE deleted file mode 100644 index f19fc729..00000000 --- a/packages/coreui-vue/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 creativeLabs Łukasz Holeczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/packages/coreui-vue/README.md b/packages/coreui-vue/README.md deleted file mode 100644 index d422298c..00000000 --- a/packages/coreui-vue/README.md +++ /dev/null @@ -1,266 +0,0 @@ -

- - CoreUI logo - -

- -

CoreUI for Vue.js

- -

- Vue.js Components Library built on top of Bootstrap 5 and TypeScript. -
- Explore CoreUI for Vue.js docs » -
-
- Report bug - · - Request feature - · - Blog -

- - -## Table of contents - -- [Quick start](#quick-start) -- [Components](#components) -- [Status](#status) -- [Bugs and feature requests](#bugs-and-feature-requests) -- [Documentation](#documentation) -- [Frameworks](#frameworks) -- [Templates](#templates) -- [Contributing](#contributing) -- [Community](#community) -- [Versioning](#versioning) -- [Creators](#creators) -- [Support CoreUI Development](#support-coreui-development) -- [Copyright and license](#copyright-and-license) - -## Quick start - -### Instalation - -Several quick start options are available: - -- [Download the latest release](https://github.com/coreui/coreui-vue/archive/v5.4.1.zip) -- Clone the repo: `git clone https://github.com/coreui/coreui-vue.git` -- Install with [npm](https://www.npmjs.com/): `npm install @coreui/vue` -- Install with [yarn](https://yarnpkg.com/): `yarn add @coreui/vue` - -Read the [Getting started page](https://coreui.io/vue/docs/getting-started/introduction/) for information on the framework contents, templates and examples, and more. - -### Stylesheets - -Vue components are styled using `@coreui/coreui` CSS library, but you can use them also with bootstrap CSS library. That is possible because `@coreui/coreui` library is compatible with bootstrap, it just extends its functionalities. The only exception are custom CoreUI components, which don't exist in the Bootstrap ecosystem. - -#### CoreUI CSS files - -##### Installation - -```bash -yarn add @coreui/coreui -``` - -or - -```bash -npm install @coreui/coreui --save -``` - -##### Basic usage - -```js -import '@coreui/coreui/dist/css/coreui.min.css' -``` - -#### Bootstrap CSS files - -##### Installation - -```bash -yarn add bootstrap -``` - -or - -```bash -npm install bootstrap -``` - -##### Basic usage - -```js -import "bootstrap/dist/css/bootstrap.min.css"; -``` - -## Components - -- [Vue Accordion](https://coreui.io/vue/docs/components/accordion.html) -- [Vue Alert](https://coreui.io/vue/docs/components/alert.html) -- [Vue Avatar](https://coreui.io/vue/docs/components/avatar.html) -- [Vue Badge](https://coreui.io/vue/docs/components/badge.html) -- [Vue Breadcrumb](https://coreui.io/vue/docs/components/breadcrumb.html) -- [Vue Button](https://coreui.io/vue/docs/components/button.html) -- [Vue Button Group](https://coreui.io/vue/docs/components/button-group.html) -- [Vue Callout](https://coreui.io/vue/docs/components/callout.html) -- [Vue Card](https://coreui.io/vue/docs/components/card.html) -- [Vue Carousel](https://coreui.io/vue/docs/components/carousel.html) -- [Vue Checkbox](https://coreui.io/vue/docs/forms/checkbox.html) -- [Vue Close Button](https://coreui.io/vue/docs/components/close-button.html) -- [Vue Collapse](https://coreui.io/vue/docs/components/collapse.html) -- [Vue Date Picker](https://coreui.io/vue/docs/forms/date-picker.html) **PRO** -- [Vue Date Range Picker](https://coreui.io/vue/docs/forms/date-range-picker.html) **PRO** -- [Vue Dropdown](https://coreui.io/vue/docs/components/dropdown.html) -- [Vue Floating Labels](https://coreui.io/vue/docs/forms/floating-labels.html) -- [Vue Footer](https://coreui.io/vue/docs/components/footer.html) -- [Vue Header](https://coreui.io/vue/docs/components/header.html) -- [Vue Image](https://coreui.io/vue/docs/components/image.html) -- [Vue Input](https://coreui.io/vue/docs/forms/input.html) -- [Vue Input Group](https://coreui.io/vue/docs/forms/input-group.html) -- [Vue List Group](https://coreui.io/vue/docs/components/list-group.html) -- [Vue Loading Button](https://coreui.io/vue/docs/components/loading-button.html) **PRO** -- [Vue Modal](https://coreui.io/vue/docs/components/modal.html) -- [Vue Multi Select](https://coreui.io/vue/docs/forms/multi-select.html) **PRO** -- [Vue Navs & Tabs](https://coreui.io/vue/docs/components/navs-tabs.html) -- [Vue Navbar](https://coreui.io/vue/docs/components/navbar.html) -- [Vue Offcanvas](https://coreui.io/vue/docs/components/offcanvas.html) -- [Vue Pagination](https://coreui.io/vue/docs/components/pagination.html) -- [Vue Placeholder](https://coreui.io/vue/docs/components/placeholder.html) -- [Vue Popover](https://coreui.io/vue/docs/components/popover.html) -- [Vue Progress](https://coreui.io/vue/docs/components/progress.html) -- [Vue Radio](https://coreui.io/vue/docs/forms/radio.html) -- [Vue Range](https://coreui.io/vue/docs/forms/range.html) -- [Vue Rating](https://coreui.io/vue/docs/forms/rating.html) -- [Vue Select](https://coreui.io/vue/docs/forms/select.html) -- [Vue Sidebar](https://coreui.io/vue/docs/components/sidebar.html) -- [Vue Smart Pagination](https://coreui.io/vue/docs/components/smart-pagination.html) **PRO** -- [Vue Smart Table](https://coreui.io/vue/docs/components/smart-table.html) **PRO** -- [Vue Spinner](https://coreui.io/vue/docs/components/spinner.html) -- [Vue Switch](https://coreui.io/vue/docs/forms/switch.html) -- [Vue Table](https://coreui.io/vue/docs/components/table.html) -- [Vue Textarea](https://coreui.io/vue/docs/forms/textarea.html) -- [Vue Time Picker](https://coreui.io/vue/docs/forms/time-picker.html) **PRO** -- [Vue Toast](https://coreui.io/vue/docs/components/toast.html) -- [Vue Tooltip](https://coreui.io/vue/docs/components/tooltip.html) - -## Status - -[![Build Status](https://github.com/coreui/coreui-vue/workflows/JS%20Tests/badge.svg?branch=main)](https://github.com/coreui/coreui-vue/actions?query=workflow%3AJS+Tests+branch%3Amain) -[![npm version](https://img.shields.io/npm/v/@coreui/vue)](https://www.npmjs.com/package/@coreui/vue) -[![peerDependencies Status](https://img.shields.io/david/peer/coreui/coreui)](https://david-dm.org/coreui/coreui?type=peer) -[![devDependency Status](https://img.shields.io/david/dev/coreui/coreui)](https://david-dm.org/coreui/coreui?type=dev) -[![Coverage Status](https://img.shields.io/coveralls/github/coreui/coreui-vue/v4)](https://coveralls.io/github/coreui/coreui-vue?branch=v4) - -## Bugs and feature requests - -Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/coreui/coreui-vue/issues/new). - -## Documentation - -The documentation for the CoreUI & CoreUI PRO is hosted at our website [CoreUI for Vue](https://coreui.io/vue/docs/getting-started/introduction) - -### Running documentation locally - -1. Run `yarn install` or `npm install` to install the Node.js dependencies. -2. Run `yarn bootstrap` or `npm run bootstrap` to link local packages together and install remaining package dependencies. -3. From the root directory, run `yarn docs:dev` or `npm run docs:dev` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. -4. Open `http://localhost:8000/` in your browser, and voilà. - -## Frameworks - -CoreUI supports most popular frameworks. - -- [CoreUI for Angular](https://github.com/coreui/coreui-angular) -- [CoreUI for Bootstrap (Vanilla JS)](https://github.com/coreui/coreui) -- [CoreUI for React](https://github.com/coreui/coreui-react) -- [CoreUI for Vue](https://github.com/coreui/coreui-vue) - -## Templates - -Fully featured, out-of-the-box, templates for your application based on CoreUI. - -- [Angular Admin Template](https://coreui.io/angular) -- [Bootstrap Admin Template](https://coreui.io/) -- [React Admin Template](https://coreui.io/react) -- [Vue Admin Template](https://coreui.io/vue) - -## Contributing - -Please read through our [contributing guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. - -Editor preferences are available in the [editor config](https://github.com/coreui/coreui-vue/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at . - -## Community - -Stay up to date on the development of CoreUI and reach out to the community with these helpful resources. - -- Read and subscribe to [The Official CoreUI Blog](https://coreui.io/blog/). - -You can also follow [@core_ui on Twitter](https://twitter.com/core_ui). - -## Versioning - -For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI is maintained under [the Semantic Versioning guidelines](http://semver.org/). - -See [the Releases section of our project](https://github.com/coreui/coreui-vue/releases) for changelogs for each release version. - -## Creators - -**Łukasz Holeczek** - -- -- - -**Andrzej Kopański** - -- - -**The CoreUI Team** - -- - -## Support CoreUI Development - -CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/). - - - -### Platinum Sponsors - -Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website. - - - -### Gold Sponsors - -Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website. - - - -### Silver Sponsors - -Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website. - - - -### Bronze Sponsors - -Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile. - - - -### Backers - -Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/). - - - - - -## Copyright and license - -Copyright 2022 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-vue/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). diff --git a/packages/coreui-vue/jest.config.js b/packages/coreui-vue/jest.config.js deleted file mode 100644 index 8367c2b3..00000000 --- a/packages/coreui-vue/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) 2013-present, creativeLabs Lukasz Holeczek. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -'use strict' - -module.exports = { - moduleFileExtensions: ['tsx', 'js', 'ts', 'json', 'vue'], - preset: 'ts-jest', - testEnvironment: 'jsdom', - testEnvironmentOptions: { - customExportConditions: ['node', 'node-addons'], - }, - testPathIgnorePatterns: ['dist/'], - transform: { - '.*\\.(ts)$': 'ts-jest', - '.*\\.(vue)$': '@vue/vue3-jest', - }, -} diff --git a/packages/coreui-vue/package.json b/packages/coreui-vue/package.json deleted file mode 100644 index bc94fec7..00000000 --- a/packages/coreui-vue/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "@coreui/vue", - "version": "5.4.1", - "description": "UI Components Library for Vue.js", - "keywords": [ - "vue", - "vue-component", - "vue component", - "vue bootstrap", - "bootstrap vue", - "ui library", - "ui components", - "component library", - "components" - ], - "homepage": "https://coreui.io/vue/", - "bugs": { - "url": "https://github.com/coreui/coreui-vue/issues" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/coreui/coreui-vue.git" - }, - "license": "MIT", - "author": "The CoreUI Team (https://github.com/orgs/coreui/people)", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", - "jsnext:main": "dist/esm/index.js", - "types": "dist/esm/index.d.ts", - "files": [ - "dist/", - "src/" - ], - "scripts": { - "build": "npm-run-all clean build-*", - "build-cjs": "rollup --environment ESM:false --config", - "build-esm": "rollup --environment ESM:true --config", - "clean": "cross-env-shell \"rm -rf dist\"", - "test": "jest --coverage", - "test:clear": "jest --clearCache", - "test:update": "jest --coverage --updateSnapshot" - }, - "dependencies": { - "@coreui/coreui": "^5.2.0", - "@popperjs/core": "^2.11.8" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^28.0.2", - "@rollup/plugin-node-resolve": "^16.0.0", - "@rollup/plugin-typescript": "^12.1.2", - "@types/jest": "^29.5.14", - "@vue/test-utils": "^2.4.6", - "@vue/vue3-jest": "29.2.6", - "cross-env": "^7.0.3", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "rollup": "^4.30.1", - "rollup-plugin-vue": "^6.0.0", - "ts-jest": "^29.2.5", - "typescript": "^5.7.2", - "vue": "^3.5.13", - "vue-types": "^5.1.3" - }, - "peerDependencies": { - "vue": "^3.5.0" - } -} diff --git a/packages/coreui-vue/rollup.config.mjs b/packages/coreui-vue/rollup.config.mjs deleted file mode 100644 index c47d4ac0..00000000 --- a/packages/coreui-vue/rollup.config.mjs +++ /dev/null @@ -1,52 +0,0 @@ -import commonjs from '@rollup/plugin-commonjs' -import typescript from '@rollup/plugin-typescript' -import resolve from '@rollup/plugin-node-resolve' -import vue from 'rollup-plugin-vue' -import { readFileSync } from 'node:fs' -import { dirname } from 'node:path' - -const pkg = JSON.parse(readFileSync(new URL('package.json', import.meta.url))) - -const DIR_CJS = dirname(pkg.main) -const DIR_ESM = dirname(pkg.module) -const ESM = process.env.ESM === 'true' - -const plugins = [ - resolve({ - dedupe: ['vue'], - extensions: ['.ts', '.json', '.vue'], - }), - typescript({ - exclude: ['**/__tests__/**'], - tsconfig: './tsconfig.json', - compilerOptions: { - declarationDir: ESM ? DIR_ESM : DIR_CJS, - outDir: ESM ? DIR_ESM : DIR_CJS, - }, - }), - commonjs({ - include: ['../../node_modules/**'], - }), - ESM ? vue({ template: { optimizeSSR: true } }) : vue(), -] - -const external = ['@popperjs/core', 'vue'] - -const rollupConfig = { - input: 'src/index.ts', - output: { - dir: ESM ? DIR_ESM : DIR_CJS, - format: ESM ? 'esm' : 'cjs', - exports: 'named', - preserveModules: true, - preserveModulesRoot: 'src', - sourcemap: true, - sourcemapPathTransform: (relativeSourcePath) => { - return relativeSourcePath.replace('../../node_modules/', '../').replace('../src/', 'src/') - }, - }, - external, - plugins, -} - -export default rollupConfig diff --git a/packages/coreui-vue/src/components/accordion/CAccordion.ts b/packages/coreui-vue/src/components/accordion/CAccordion.ts deleted file mode 100644 index 639b5af2..00000000 --- a/packages/coreui-vue/src/components/accordion/CAccordion.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { defineComponent, h, provide, ref, watch } from 'vue' - -const CAccordion = defineComponent({ - name: 'CAccordion', - props: { - /** - * The active item key. - */ - activeItemKey: [Number, String], - /** - * Make accordion items stay open when another item is opened - */ - alwaysOpen: Boolean, - /** - * Removes the default background-color, some borders, and some rounded corners to render accordions edge-to-edge with their parent container. - */ - flush: Boolean, - }, - setup(props, { slots }) { - const activeItemKey = ref(props.activeItemKey) - const setActiveItemKey = (key: string | number) => { - activeItemKey.value = key - } - - watch( - () => props.activeItemKey, - (value) => (activeItemKey.value = value), - ) - - provide('activeItemKey', activeItemKey) - provide('alwaysOpen', props.alwaysOpen) - provide('setActiveItemKey', setActiveItemKey) - - return () => - h( - 'div', - { class: ['accordion', { ['accordion-flush']: props.flush }] }, - slots.default && slots.default(), - ) - }, -}) - -export { CAccordion } diff --git a/packages/coreui-vue/src/components/accordion/CAccordionBody.ts b/packages/coreui-vue/src/components/accordion/CAccordionBody.ts deleted file mode 100644 index c8907021..00000000 --- a/packages/coreui-vue/src/components/accordion/CAccordionBody.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineComponent, h, inject, Ref } from 'vue' -import { CCollapse } from '../collapse/CCollapse' - -const CAccordionBody = defineComponent({ - name: 'CAccordionBody', - setup(_, { slots }) { - const id = inject('id') - const visible = inject('visible') as Ref - return () => - h( - CCollapse, - { class: 'accordion-collapse', id, visible: visible.value }, - { - default: () => h('div', { class: ['accordion-body'] }, slots.default && slots.default()), - }, - ) - }, -}) - -export { CAccordionBody } diff --git a/packages/coreui-vue/src/components/accordion/CAccordionButton.ts b/packages/coreui-vue/src/components/accordion/CAccordionButton.ts deleted file mode 100644 index f9820b4a..00000000 --- a/packages/coreui-vue/src/components/accordion/CAccordionButton.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { defineComponent, h, inject, Ref } from 'vue' - -const CAccordionButton = defineComponent({ - name: 'CAccordionButton', - setup(_, { slots }) { - const id = inject('id') as string - const toggleVisibility = inject('toggleVisibility') as () => void - const visible = inject('visible') as Ref - - return () => - h( - 'button', - { - type: 'button', - 'aria-control': id, - 'aria-expanded': visible.value, - class: ['accordion-button', { ['collapsed']: !visible.value }], - onClick: () => toggleVisibility(), - }, - slots.default && slots.default(), - ) - }, -}) - -export { CAccordionButton } diff --git a/packages/coreui-vue/src/components/accordion/CAccordionHeader.ts b/packages/coreui-vue/src/components/accordion/CAccordionHeader.ts deleted file mode 100644 index a74a2821..00000000 --- a/packages/coreui-vue/src/components/accordion/CAccordionHeader.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CAccordionButton } from './CAccordionButton' - -const CAccordionHeader = defineComponent({ - name: 'CAccordionHeader', - setup(_, { slots }) { - return () => - h( - 'div', - { class: ['accordion-header'] }, - h( - CAccordionButton, - {}, - { - default: () => slots.default && slots.default(), - }, - ), - ) - }, -}) - -export { CAccordionHeader } diff --git a/packages/coreui-vue/src/components/accordion/CAccordionItem.ts b/packages/coreui-vue/src/components/accordion/CAccordionItem.ts deleted file mode 100644 index f2ebe594..00000000 --- a/packages/coreui-vue/src/components/accordion/CAccordionItem.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { defineComponent, h, inject, provide, ref, watch, Ref, useId } from 'vue' - -const CAccordionItem = defineComponent({ - name: 'CAccordionItem', - props: { - /** - * The id global attribute defines an identifier (ID) that must be unique in the whole document. - */ - id: String, - /** - * The item key. - */ - itemKey: [Number, String], - }, - setup(props, { slots }) { - const activeItemKey = inject('activeItemKey') as Ref - const alwaysOpen = inject('alwaysOpen') as boolean - const setActiveItemKey = inject('setActiveItemKey') as (key: number | string) => void - - const id = props.id ?? useId() - const itemKey = ref(props.itemKey ?? id) - const visible = ref(Boolean(activeItemKey.value === itemKey.value)) - - watch(activeItemKey, () => (visible.value = Boolean(activeItemKey.value === itemKey.value))) - - const toggleVisibility = () => { - visible.value = !visible.value - if (!alwaysOpen && visible) { - setActiveItemKey(itemKey.value) - } - } - - provide('id', id) - provide('visible', visible) - provide('toggleVisibility', toggleVisibility) - - return () => h('div', { class: ['accordion-item'] }, slots.default && slots.default()) - }, -}) - -export { CAccordionItem } diff --git a/packages/coreui-vue/src/components/accordion/__tests__/CAccordion.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordion.spec.ts deleted file mode 100644 index f4a15e0d..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/CAccordion.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAccordion as Component } from '../../../index' - -const ComponentName = 'CAccordion' - -const defaultWrapper = mount(Component, { - propsData: { - flush: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('accordion')).toBe(true) - expect(defaultWrapper.classes('accordion-flush')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionBody.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionBody.spec.ts deleted file mode 100644 index 09b94266..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionBody.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAccordionBody as Component } from '../../../index' - -const ComponentName = 'CAccordionBody' - -const defaultWrapper = mount(Component, { - global: { - provide: { - visible: true, - }, - }, - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.find('.accordion-body').classes('accordion-body')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionButton.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionButton.spec.ts deleted file mode 100644 index bbaad1a7..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionButton.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAccordionButton as Component } from '../../../index' - -const ComponentName = 'CAccordionButton' - -const toggleVisibility = (v: boolean) => { - return v -} - -const defaultWrapper = mount(Component, { - global: { - provide: { - toggleVisibility: toggleVisibility, - visible: true, - }, - }, - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('accordion-button')).toBe(true) - expect(defaultWrapper.classes('collapsed')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionHeader.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionHeader.spec.ts deleted file mode 100644 index 4bbf217d..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionHeader.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAccordionHeader as Component } from '../../../index' - -const ComponentName = 'CAccordionHeader' - -const defaultWrapper = mount(Component, { - global: { - provide: { - visible: true, - }, - }, - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('accordion-header')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionItem.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionItem.spec.ts deleted file mode 100644 index aab28ac8..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/CAccordionItem.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAccordionItem as Component } from '../../../index' - -const ComponentName = 'CAccordionItem' - -const defaultWrapper = mount(Component, { - global: { - provide: { - activeItemKey: 1, - }, - }, - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('accordion-item')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap deleted file mode 100644 index 3bd49f3b..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAccordion component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap deleted file mode 100644 index 30734b2b..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAccordionBody component renders correctly 1`] = ` -" -
-
Default slot
-
-
" -`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap deleted file mode 100644 index fb38caae..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAccordionButton component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap deleted file mode 100644 index 01863eed..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAccordionHeader component renders correctly 1`] = `"
"`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap deleted file mode 100644 index cead44ef..00000000 --- a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAccordionItem component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/accordion/index.ts b/packages/coreui-vue/src/components/accordion/index.ts deleted file mode 100644 index 0d3d51dd..00000000 --- a/packages/coreui-vue/src/components/accordion/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { App } from 'vue' -import { CAccordion } from './CAccordion' -import { CAccordionBody } from './CAccordionBody' -import { CAccordionButton } from './CAccordionButton' -import { CAccordionHeader } from './CAccordionHeader' -import { CAccordionItem } from './CAccordionItem' - -const CAccordionPlugin = { - install: (app: App): void => { - app.component(CAccordion.name as string, CAccordion) - app.component(CAccordionBody.name as string, CAccordionBody) - app.component(CAccordionButton.name as string, CAccordionButton) - app.component(CAccordionHeader.name as string, CAccordionHeader) - app.component(CAccordionItem.name as string, CAccordionItem) - }, -} - -export { - CAccordionPlugin, - CAccordion, - CAccordionBody, - CAccordionButton, - CAccordionHeader, - CAccordionItem, -} diff --git a/packages/coreui-vue/src/components/alert/CAlert.ts b/packages/coreui-vue/src/components/alert/CAlert.ts deleted file mode 100644 index 117c4ee2..00000000 --- a/packages/coreui-vue/src/components/alert/CAlert.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { defineComponent, h, ref, Transition, watch } from 'vue' - -import { CCloseButton } from '../close-button' - -import { Color } from '../../props' - -export const CAlert = defineComponent({ - name: 'CAlert', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Optionally add a close button to alert and allow it to self dismisss. - */ - dismissible: Boolean, - /** - * Set the alert variant to a solid. - * - * @values 'solid' - */ - variant: { - type: String, - validator: (value: string) => { - return value === 'solid' - }, - }, - /** - * Toggle the visibility of alert component. - */ - visible: { - type: Boolean, - default: true, - }, - }, - emits: [ - /** - * Callback fired when the component requests to be closed. - */ - 'close', - ], - setup(props, { slots, emit }) { - const visible = ref(props.visible) - - watch( - () => props.visible, - () => { - visible.value = props.visible - }, - ) - - const handleDismiss = () => { - visible.value = false - emit('close') - } - - return () => - h( - Transition, - { - enterFromClass: '', - enterActiveClass: 'fade', - enterToClass: 'fade show', - leaveActiveClass: 'fade', - }, - { - default: () => - visible.value && - h( - 'div', - { - class: [ - 'alert', - props.variant === 'solid' - ? `bg-${props.color} text-white border-0` - : `alert-${props.color}`, - { - [`alert-${props.color}`]: props.color, - 'alert-dismissible': props.dismissible, - }, - ], - }, - [ - slots.default && slots.default(), - props.dismissible && - h(CCloseButton, { - onClick: () => { - handleDismiss() - }, - }), - ], - ), - }, - ) - }, -}) diff --git a/packages/coreui-vue/src/components/alert/CAlertHeading.ts b/packages/coreui-vue/src/components/alert/CAlertHeading.ts deleted file mode 100644 index 94ed187c..00000000 --- a/packages/coreui-vue/src/components/alert/CAlertHeading.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { defineComponent, h } from 'vue' - -export const CAlertHeading = defineComponent({ - name: 'CAlertHeading', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'h4', - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: 'alert-heading', - }, - slots, - ) - }, -}) diff --git a/packages/coreui-vue/src/components/alert/CAlertLink.ts b/packages/coreui-vue/src/components/alert/CAlertLink.ts deleted file mode 100644 index 4866a888..00000000 --- a/packages/coreui-vue/src/components/alert/CAlertLink.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineComponent, h } from 'vue' - -export const CAlertLink = defineComponent({ - name: 'CAlertLink', - setup(_, { slots }) { - return () => - h( - 'a', - { - class: 'alert-link', - }, - slots, - ) - }, -}) diff --git a/packages/coreui-vue/src/components/alert/__tests__/CAlert.spec.ts b/packages/coreui-vue/src/components/alert/__tests__/CAlert.spec.ts deleted file mode 100644 index 572cd284..00000000 --- a/packages/coreui-vue/src/components/alert/__tests__/CAlert.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import { CAlert as Component } from '../../' - -const ComponentName = 'CAlert' -const wrapper = shallowMount(Component) -const customWrapper = shallowMount(Component, { - props: { - color: 'success', - }, - attrs: { - class: 'bazinga', - }, - slots: { - default: 'Hello World!', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(wrapper.element).toMatchSnapshot() - }) - it('renders correctly with slot', () => { - expect(customWrapper.element).toMatchSnapshot() - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('has a prope class names', () => { - expect(customWrapper.find('div').classes('alert')).toBe(true) - expect(customWrapper.find('div').classes('alert-success')).toBe(true) - }) - it('default slot contains text', () => { - expect(customWrapper.text()).toBe('Hello World!') - }) -}) diff --git a/packages/coreui-vue/src/components/alert/__tests__/CAlertHeading.spec.ts b/packages/coreui-vue/src/components/alert/__tests__/CAlertHeading.spec.ts deleted file mode 100644 index 73448f41..00000000 --- a/packages/coreui-vue/src/components/alert/__tests__/CAlertHeading.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAlertHeading as Component } from '../../../index' - -const ComponentName = 'CAlertHeading' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'h2', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('alert-heading')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('alert-heading')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/alert/__tests__/CAlertLink.spec.ts b/packages/coreui-vue/src/components/alert/__tests__/CAlertLink.spec.ts deleted file mode 100644 index 161ff262..00000000 --- a/packages/coreui-vue/src/components/alert/__tests__/CAlertLink.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAlertLink as Component } from '../../../index' - -const ComponentName = 'CAlertLink' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('alert-link')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap deleted file mode 100644 index cbb36d96..00000000 --- a/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap +++ /dev/null @@ -1,42 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAlert component renders correctly 1`] = ` - -
- - -
-
-`; - -exports[`Loads and display CAlert component renders correctly with slot 1`] = ` - -
- - Hello World! - - -
-
-`; diff --git a/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertHeading.spec.ts.snap b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertHeading.spec.ts.snap deleted file mode 100644 index c24927f7..00000000 --- a/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertHeading.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CAlertHeading component renders correctly 1`] = `"

Default slot

"`; - -exports[`Loads and display CAlertHeading component renders correctly 1`] = `"

Default slot

"`; diff --git a/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap deleted file mode 100644 index 02173479..00000000 --- a/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAlertLink component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/alert/index.ts b/packages/coreui-vue/src/components/alert/index.ts deleted file mode 100644 index d3fadac4..00000000 --- a/packages/coreui-vue/src/components/alert/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { App } from 'vue' -import { CAlert } from './CAlert' -import { CAlertHeading } from './CAlertHeading' -import { CAlertLink } from './CAlertLink' - -const CAlertPlugin = { - install: (app: App): void => { - app.component(CAlert.name as string, CAlert) - app.component(CAlertHeading.name as string, CAlertHeading) - app.component(CAlertLink.name as string, CAlertLink) - }, -} - -export { CAlertPlugin, CAlert, CAlertHeading, CAlertLink } diff --git a/packages/coreui-vue/src/components/avatar/CAvatar.ts b/packages/coreui-vue/src/components/avatar/CAvatar.ts deleted file mode 100644 index d35ee265..00000000 --- a/packages/coreui-vue/src/components/avatar/CAvatar.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color, Shape, TextColor } from '../../props' - -const CAvatar = defineComponent({ - name: 'CAvatar', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Select the shape of the component. - * - * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' - */ - shape: Shape, - /** - * Size the component small, large, or extra large. - * - * @values 'sm', 'md', 'lg', 'xl' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'md', 'lg', 'xl'].includes(value) - }, - }, - /** - * The src attribute for the img element. - */ - src: String, - /** - * Sets the color context of the status indicator to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - status: { - type: String, - validator: (value: string) => { - return [ - 'primary', - 'secondary', - 'success', - 'danger', - 'warning', - 'info', - 'dark', - 'light', - ].includes(value) - }, - }, - /** - * Sets the text color of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'primary-emphasis', 'secondary-emphasis', 'success-emphasis', 'danger-emphasis', 'warning-emphasis', 'info-emphasis', 'light-emphasis', 'body', 'body-emphasis', 'body-secondary', 'body-tertiary', 'black', 'black-50', 'white', 'white-50' - */ - textColor: TextColor, - }, - setup(props, { slots }) { - return () => - h( - 'div', - { - class: [ - 'avatar', - { - [`bg-${props.color}`]: props.color, - [`avatar-${props.size}`]: props.size, - [`text-${props.textColor}`]: props.textColor, - }, - `${props.shape}`, - ], - }, - [ - props.src - ? h('img', { src: props.src, class: 'avatar-img' }) - : slots.default && slots.default(), - props.status && h('span', { class: ['avatar-status', `bg-${props.status}`] }), - ], - ) - }, -}) -export { CAvatar } diff --git a/packages/coreui-vue/src/components/avatar/__tests__/CAvatar.spec.ts b/packages/coreui-vue/src/components/avatar/__tests__/CAvatar.spec.ts deleted file mode 100644 index 427a120b..00000000 --- a/packages/coreui-vue/src/components/avatar/__tests__/CAvatar.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CAvatar as Component } from '../../../index' - -const ComponentName = 'CAvatar' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - shape: 'rounded-bottom', - size: 'md', - src: '/bazinga', - status: 'danger', - textColor: 'light', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('avatar')).toBe(true) - }) -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('avatar')).toBe(true) - expect(customWrapper.classes('bg-warning')).toBe(true) - expect(customWrapper.classes('avatar-md')).toBe(true) - expect(customWrapper.classes('text-light')).toBe(true) - expect(customWrapper.find('img').classes('avatar-img')).toBe(true) - expect(customWrapper.find('img').attributes('src')).toBe('/bazinga') - expect(customWrapper.find('span').classes('avatar-status')).toBe(true) - expect(customWrapper.find('span').classes('bg-danger')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap b/packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap deleted file mode 100644 index 5166a5f1..00000000 --- a/packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CAvatar component renders correctly 1`] = ` -"
Default slot - -
" -`; - -exports[`Loads and display CAvatar component renders correctly 2`] = `"
"`; diff --git a/packages/coreui-vue/src/components/avatar/index.ts b/packages/coreui-vue/src/components/avatar/index.ts deleted file mode 100644 index 479ab9f4..00000000 --- a/packages/coreui-vue/src/components/avatar/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CAvatar } from './CAvatar' - -const CAvatarPlugin = { - install: (app: App): void => { - app.component(CAvatar.name as string, CAvatar) - }, -} - -export { CAvatarPlugin, CAvatar } diff --git a/packages/coreui-vue/src/components/backdrop/CBackdrop.ts b/packages/coreui-vue/src/components/backdrop/CBackdrop.ts deleted file mode 100644 index adea3428..00000000 --- a/packages/coreui-vue/src/components/backdrop/CBackdrop.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineComponent, h, Transition } from 'vue' - -const CBackdrop = defineComponent({ - name: 'CBackdrop', - props: { - /** - * Toggle the visibility of modal component. - */ - visible: { - type: Boolean, - default: false, - }, - }, - setup(props) { - return () => - h( - Transition, - { - onEnter: (el) => { - el.classList.add('show') - }, - onLeave: (el) => { - el.classList.remove('show') - }, - }, - () => - props.visible && - h('div', { - class: 'fade', - }), - ) - }, -}) - -export { CBackdrop } diff --git a/packages/coreui-vue/src/components/backdrop/__tests__/CBackdrop.spec.ts b/packages/coreui-vue/src/components/backdrop/__tests__/CBackdrop.spec.ts deleted file mode 100644 index 016cf75d..00000000 --- a/packages/coreui-vue/src/components/backdrop/__tests__/CBackdrop.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CBackdrop as Component } from '../../../index' - -const ComponentName = 'CBackdrop' - -const defaultWrapper = mount(Component, { - propsData: { - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.find('div').classes('fade')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap b/packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap deleted file mode 100644 index 2bf4c264..00000000 --- a/packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CBackdrop component renders correctly 1`] = ` -" -
-
" -`; diff --git a/packages/coreui-vue/src/components/backdrop/index.ts b/packages/coreui-vue/src/components/backdrop/index.ts deleted file mode 100644 index 440292ba..00000000 --- a/packages/coreui-vue/src/components/backdrop/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CBackdrop } from './CBackdrop' - -const CBackdropPlugin = { - install: (app: App): void => { - app.component(CBackdrop.name as string, CBackdrop) - }, -} - -export { CBackdropPlugin, CBackdrop } diff --git a/packages/coreui-vue/src/components/badge/CBadge.ts b/packages/coreui-vue/src/components/badge/CBadge.ts deleted file mode 100644 index 3802015d..00000000 --- a/packages/coreui-vue/src/components/badge/CBadge.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color, Shape, TextColor } from '../../props' - -const CBadge = defineComponent({ - name: 'CBadge', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'span', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Position badge in one of the corners of a link or button. - * - * @values 'top-start', 'top-end', 'bottom-end', 'bottom-start' - */ - position: { - type: String, - validator: (value: string) => { - return ['top-start', 'top-end', 'bottom-end', 'bottom-start'].includes(value) - }, - }, - /** - * Select the shape of the component. - * - * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' - */ - shape: Shape, - /** - * Size the component small. - * - * @values 'sm' - */ - size: { - type: String, - validator: (value: string) => { - return value === 'sm' - }, - }, - /** - * Sets the component's color scheme to one of CoreUI's themed colors, ensuring the text color contrast adheres to the WCAG 4.5:1 contrast ratio standard for accessibility. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - * @since 5.0.0 - */ - textBgColor: Color, - /** - * Sets the text color of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'primary-emphasis', 'secondary-emphasis', 'success-emphasis', 'danger-emphasis', 'warning-emphasis', 'info-emphasis', 'light-emphasis', 'body', 'body-emphasis', 'body-secondary', 'body-tertiary', 'black', 'black-50', 'white', 'white-50' - */ - textColor: TextColor, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: [ - 'badge', - { - [`bg-${props.color}`]: props.color, - 'position-absolute translate-middle': props.position, - 'top-0': props.position && props.position.includes('top'), - 'top-100': props.position && props.position.includes('bottom'), - 'start-100': props.position && props.position.includes('end'), - 'start-0': props.position && props.position.includes('start'), - [`badge-${props.size}`]: props.size, - [`text-${props.textColor}`]: props.textColor, - [`text-bg-${props.textBgColor}`]: props.textBgColor, - }, - props.shape, - ], - }, - slots.default && slots.default(), - ) - }, -}) -export { CBadge } diff --git a/packages/coreui-vue/src/components/badge/__tests__/CBadge.spec.ts b/packages/coreui-vue/src/components/badge/__tests__/CBadge.spec.ts deleted file mode 100644 index 4d132901..00000000 --- a/packages/coreui-vue/src/components/badge/__tests__/CBadge.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import { CBadge as Component } from '../../' - -const ComponentName = 'CBadge' -const wrapper = shallowMount(Component) -const customWrapper = shallowMount(Component, { - props: { - color: 'success', - }, - attrs: { - class: 'bazinga', - }, - slots: { - default: 'Hello World!', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(wrapper.element).toMatchSnapshot() - }) - it('renders correctly with slot', () => { - expect(customWrapper.element).toMatchSnapshot() - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('has a prope class names', () => { - expect(customWrapper.classes('bazinga')).toBe(true) - expect(customWrapper.classes('badge')).toBe(true) - expect(customWrapper.classes('bg-success')).toBe(true) - }) - it('default slot contains text', () => { - expect(customWrapper.text()).toBe('Hello World!') - }) -}) diff --git a/packages/coreui-vue/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap b/packages/coreui-vue/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap deleted file mode 100644 index 249fb4fd..00000000 --- a/packages/coreui-vue/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap +++ /dev/null @@ -1,15 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CBadge component renders correctly 1`] = ` - -`; - -exports[`Loads and display CBadge component renders correctly with slot 1`] = ` - - Hello World! - -`; diff --git a/packages/coreui-vue/src/components/badge/index.ts b/packages/coreui-vue/src/components/badge/index.ts deleted file mode 100644 index 9a2e47a3..00000000 --- a/packages/coreui-vue/src/components/badge/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CBadge } from './CBadge' - -const CBadgePlugin = { - install: (app: App): void => { - app.component(CBadge.name as string, CBadge) - }, -} - -export { CBadge, CBadgePlugin } diff --git a/packages/coreui-vue/src/components/breadcrumb/CBreadcrumb.ts b/packages/coreui-vue/src/components/breadcrumb/CBreadcrumb.ts deleted file mode 100644 index df95f2ff..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/CBreadcrumb.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CBreadcrumb = defineComponent({ - name: 'CBreadcrumb', - inheritAttrs: false, - setup(_, { slots, attrs }) { - return () => - h( - 'nav', - { - 'aria-label': 'breadcrumb', - }, - h('ol', { class: ['breadcrumb', attrs.class] }, slots.default && slots.default()), - ) - }, -}) - -export { CBreadcrumb } diff --git a/packages/coreui-vue/src/components/breadcrumb/CBreadcrumbItem.ts b/packages/coreui-vue/src/components/breadcrumb/CBreadcrumbItem.ts deleted file mode 100644 index 4b5fa4a6..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/CBreadcrumbItem.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CBreadcrumbItem = defineComponent({ - name: 'CBreadcrumbItem', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * The `href` attribute for the inner link component. - */ - href: String, - }, - - setup(props, { slots }) { - return () => - h( - 'li', - { - class: [ - 'breadcrumb-item', - { - active: props.active, - }, - ], - ...(props.active && { 'aria-current': 'page' }), - }, - props.href - ? h('a', { href: props.href }, slots.default && slots.default()) - : slots.default && slots.default(), - ) - }, -}) -export { CBreadcrumbItem } diff --git a/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts b/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts deleted file mode 100644 index 28dee35b..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CBreadcrumb as Component } from '../../../index' - -const ComponentName = 'CBreadcrumb' - -const defaultWrapper = mount(Component, { - propsData: { - class: 'bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.find('ol').text()).toContain('Default slot') - expect(defaultWrapper.attributes('aria-label')).toBe('breadcrumb') - expect(defaultWrapper.find('ol').classes('breadcrumb')).toBe(true) - expect(defaultWrapper.find('ol').classes('bazinga')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts b/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts deleted file mode 100644 index 39cc7b07..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CBreadcrumbItem as Component } from '../../../index' - -const ComponentName = 'CBreadcrumbItem' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('breadcrumb-item')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('breadcrumb-item')).toBe(true) - expect(customWrapper.attributes('aria-current')).toBe('page') - expect(customWrapper.find('a').attributes('href')).toBe('/bazinga') - expect(customWrapper.find('a').text()).toContain('Default slot') - }) -}) diff --git a/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap b/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap deleted file mode 100644 index 2cccad76..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CBreadcrumb component renders correctly 1`] = ` -"" -`; diff --git a/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumbItem.spec.ts.snap b/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumbItem.spec.ts.snap deleted file mode 100644 index 7ffb98a0..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumbItem.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CBreadcrumbItem component renders correctly 1`] = `""`; - -exports[`Loads and display CBreadcrumbItem component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/breadcrumb/index.ts b/packages/coreui-vue/src/components/breadcrumb/index.ts deleted file mode 100644 index b7bad130..00000000 --- a/packages/coreui-vue/src/components/breadcrumb/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { App } from 'vue' -import { CBreadcrumbItem } from './CBreadcrumbItem' -import { CBreadcrumb } from './CBreadcrumb' - -const CBreadcrumbPlugin = { - install: (app: App): void => { - app.component(CBreadcrumb.name as string, CBreadcrumb) - app.component(CBreadcrumbItem.name as string, CBreadcrumbItem) - }, -} - -export { CBreadcrumbPlugin, CBreadcrumb, CBreadcrumbItem } diff --git a/packages/coreui-vue/src/components/button-group/CButtonGroup.ts b/packages/coreui-vue/src/components/button-group/CButtonGroup.ts deleted file mode 100644 index 58add3d8..00000000 --- a/packages/coreui-vue/src/components/button-group/CButtonGroup.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CButtonGroup = defineComponent({ - name: 'CButtonGroup', - props: { - /** - * Size the component small or large. - * - * @values 'sm', 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg'].includes(value) - }, - }, - /** - * Create a set of buttons that appear vertically stacked rather than horizontally. Split button dropdowns are not supported here. - */ - vertical: Boolean, - }, - setup(props, { slots }) { - return () => - h( - 'div', - { - class: [ - props.vertical ? 'btn-group-vertical' : 'btn-group', - { [`btn-group-${props.size}`]: props.size }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CButtonGroup } diff --git a/packages/coreui-vue/src/components/button-group/CButtonToolbar.ts b/packages/coreui-vue/src/components/button-group/CButtonToolbar.ts deleted file mode 100644 index 8bda3003..00000000 --- a/packages/coreui-vue/src/components/button-group/CButtonToolbar.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CButtonToolbar = defineComponent({ - name: 'CButtonToolbar', - setup(_, { slots }) { - return () => h('div', { class: 'btn-toolbar' }, slots.default && slots.default()) - }, -}) -export { CButtonToolbar } diff --git a/packages/coreui-vue/src/components/button-group/__tests__/CButtonGroup.spec.ts b/packages/coreui-vue/src/components/button-group/__tests__/CButtonGroup.spec.ts deleted file mode 100644 index a3b5faca..00000000 --- a/packages/coreui-vue/src/components/button-group/__tests__/CButtonGroup.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CButtonGroup as Component } from '../../../index' - -const ComponentName = 'CButtonGroup' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - size: 'lg', - vertical: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('btn-group')).toBe(true) - }) -}) - -describe(`Custom ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('btn-group-vertical')).toBe(true) - expect(customWrapper.classes('btn-group-lg')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/button-group/__tests__/CButtonToolbar.spec.ts b/packages/coreui-vue/src/components/button-group/__tests__/CButtonToolbar.spec.ts deleted file mode 100644 index e6133737..00000000 --- a/packages/coreui-vue/src/components/button-group/__tests__/CButtonToolbar.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CButtonToolbar as Component } from '../../../index' - -const ComponentName = 'CButtonToolbar' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('btn-toolbar')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonGroup.spec.ts.snap b/packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonGroup.spec.ts.snap deleted file mode 100644 index 051888f8..00000000 --- a/packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonGroup.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Custom CButtonGroup component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CButtonGroup component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonToolbar.spec.ts.snap b/packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonToolbar.spec.ts.snap deleted file mode 100644 index 70a5ee4e..00000000 --- a/packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonToolbar.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CButtonToolbar component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/button-group/index.ts b/packages/coreui-vue/src/components/button-group/index.ts deleted file mode 100644 index f038168b..00000000 --- a/packages/coreui-vue/src/components/button-group/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { App } from 'vue' -import { CButtonToolbar } from './CButtonToolbar' -import { CButtonGroup } from './CButtonGroup' - -const CButtonGroupPlugin = { - install: (app: App): void => { - app.component(CButtonToolbar.name as string, CButtonToolbar) - app.component(CButtonGroup.name as string, CButtonGroup) - }, -} - -export { CButtonGroupPlugin, CButtonToolbar, CButtonGroup } diff --git a/packages/coreui-vue/src/components/button/CButton.ts b/packages/coreui-vue/src/components/button/CButton.ts deleted file mode 100644 index 287bfd12..00000000 --- a/packages/coreui-vue/src/components/button/CButton.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color, Shape } from '../../props' - -export const CButton = defineComponent({ - name: 'CButton', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'button', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: String, - /** - * Select the shape of the component. - * - * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' - */ - shape: Shape, - /** - * Size the component small or large. - * - * @values 'sm', 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg'].includes(value) - }, - }, - /** - * Specifies the type of button. Always specify the type attribute for the `"`; diff --git a/packages/coreui-vue/src/components/button/index.ts b/packages/coreui-vue/src/components/button/index.ts deleted file mode 100644 index 679616e0..00000000 --- a/packages/coreui-vue/src/components/button/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CButton } from './CButton' - -const CButtonPlugin = { - install: (app: App): void => { - app.component(CButton.name as string, CButton) - }, -} - -export { CButtonPlugin, CButton } diff --git a/packages/coreui-vue/src/components/callout/CCallout.ts b/packages/coreui-vue/src/components/callout/CCallout.ts deleted file mode 100644 index 04947cf2..00000000 --- a/packages/coreui-vue/src/components/callout/CCallout.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CCallout = defineComponent({ - name: 'CCallout', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - }, - setup(props, { slots }) { - return () => - h( - 'div', - { - class: [ - 'callout', - { - [`callout-${props.color}`]: props.color, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) -export { CCallout } diff --git a/packages/coreui-vue/src/components/callout/__tests__/CCallout.spec.ts b/packages/coreui-vue/src/components/callout/__tests__/CCallout.spec.ts deleted file mode 100644 index df2376dc..00000000 --- a/packages/coreui-vue/src/components/callout/__tests__/CCallout.spec.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCallout as Component } from '../../../index' - -const ComponentName = 'CCallout' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('callout')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('callout')).toBe(true) - expect(customWrapper.classes('callout-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/callout/__tests__/__snapshots__/CCallout.spec.ts.snap b/packages/coreui-vue/src/components/callout/__tests__/__snapshots__/CCallout.spec.ts.snap deleted file mode 100644 index 07edc5ef..00000000 --- a/packages/coreui-vue/src/components/callout/__tests__/__snapshots__/CCallout.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCallout component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CCallout component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/callout/index.ts b/packages/coreui-vue/src/components/callout/index.ts deleted file mode 100644 index e0baf185..00000000 --- a/packages/coreui-vue/src/components/callout/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CCallout } from './CCallout' - -const CCalloutPlugin = { - install: (app: App): void => { - app.component(CCallout.name as string, CCallout) - }, -} - -export { CCalloutPlugin, CCallout } diff --git a/packages/coreui-vue/src/components/card/CCard.ts b/packages/coreui-vue/src/components/card/CCard.ts deleted file mode 100644 index 580dc207..00000000 --- a/packages/coreui-vue/src/components/card/CCard.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color, TextColor } from '../../props' - -const CCard = defineComponent({ - name: 'CCard', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Sets the component's color scheme to one of CoreUI's themed colors, ensuring the text color contrast adheres to the WCAG 4.5:1 contrast ratio standard for accessibility. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - * @since 5.0.0 - */ - textBgColor: Color, - /** - * Sets the text color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'primary-emphasis', 'secondary-emphasis', 'success-emphasis', 'danger-emphasis', 'warning-emphasis', 'info-emphasis', 'light-emphasis', 'body', 'body-emphasis', 'body-secondary', 'body-tertiary', 'black', 'black-50', 'white', 'white-50' - */ - textColor: TextColor, - }, - setup(props, { slots }) { - return () => - h( - 'div', - { - class: [ - 'card', - { - [`bg-${props.color}`]: props.color, - [`text-${props.textColor}`]: props.textColor, - [`text-bg-${props.textBgColor}`]: props.textBgColor, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CCard } diff --git a/packages/coreui-vue/src/components/card/CCardBody.ts b/packages/coreui-vue/src/components/card/CCardBody.ts deleted file mode 100644 index 51813148..00000000 --- a/packages/coreui-vue/src/components/card/CCardBody.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardBody = defineComponent({ - name: 'CCardBody', - setup(_, { slots }) { - return () => h('div', { class: 'card-body' }, slots.default && slots.default()) - }, -}) -export { CCardBody } diff --git a/packages/coreui-vue/src/components/card/CCardFooter.ts b/packages/coreui-vue/src/components/card/CCardFooter.ts deleted file mode 100644 index 4ff28cec..00000000 --- a/packages/coreui-vue/src/components/card/CCardFooter.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardFooter = defineComponent({ - name: 'CCardFooter', - setup(_, { slots }) { - return () => h('div', { class: 'card-footer' }, slots.default && slots.default()) - }, -}) - -export { CCardFooter } diff --git a/packages/coreui-vue/src/components/card/CCardGroup.ts b/packages/coreui-vue/src/components/card/CCardGroup.ts deleted file mode 100644 index f7b0139e..00000000 --- a/packages/coreui-vue/src/components/card/CCardGroup.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardGroup = defineComponent({ - name: 'CCardGroup', - setup(_, { slots }) { - return () => h('div', { class: 'card-group' }, slots.default && slots.default()) - }, -}) - -export { CCardGroup } diff --git a/packages/coreui-vue/src/components/card/CCardHeader.ts b/packages/coreui-vue/src/components/card/CCardHeader.ts deleted file mode 100644 index d216d892..00000000 --- a/packages/coreui-vue/src/components/card/CCardHeader.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardHeader = defineComponent({ - name: 'CCardHeader', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'div', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'card-header' }, slots.default && slots.default()) - }, -}) - -export { CCardHeader } diff --git a/packages/coreui-vue/src/components/card/CCardImage.ts b/packages/coreui-vue/src/components/card/CCardImage.ts deleted file mode 100644 index 81ff7fc0..00000000 --- a/packages/coreui-vue/src/components/card/CCardImage.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardImage = defineComponent({ - name: 'CCardImage', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'img', - }, - /** - * Optionally orientate the image to the top, bottom. - * - * @values 'top', 'bottom' - */ - orientation: { - type: String, - validator: (value: string) => { - return ['top', 'bottom'].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: `card-img${props.orientation ? `-${props.orientation}` : ''}`, - }, - slots.default && slots.default(), - ) - }, -}) - -export { CCardImage } diff --git a/packages/coreui-vue/src/components/card/CCardImageOverlay.ts b/packages/coreui-vue/src/components/card/CCardImageOverlay.ts deleted file mode 100644 index d35e52a5..00000000 --- a/packages/coreui-vue/src/components/card/CCardImageOverlay.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardImageOverlay = defineComponent({ - name: 'CCardImageOverlay', - setup(_, { slots }) { - return () => h('div', { class: 'card-img-overlay' }, slots.default && slots.default()) - }, -}) -export { CCardImageOverlay } diff --git a/packages/coreui-vue/src/components/card/CCardLink.ts b/packages/coreui-vue/src/components/card/CCardLink.ts deleted file mode 100644 index b80d1865..00000000 --- a/packages/coreui-vue/src/components/card/CCardLink.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CLink } from '../link' - -const CCardLink = defineComponent({ - name: 'CCardLink', - props: { - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: { - type: String, - default: '#', - }, - }, - setup(props, { slots }) { - return () => - h( - CLink, - { class: 'card-link', href: props.href }, - { default: () => slots.default && slots.default() }, - ) - }, -}) - -export { CCardLink } diff --git a/packages/coreui-vue/src/components/card/CCardSubtitle.ts b/packages/coreui-vue/src/components/card/CCardSubtitle.ts deleted file mode 100644 index b3bdf933..00000000 --- a/packages/coreui-vue/src/components/card/CCardSubtitle.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardSubtitle = defineComponent({ - name: 'CCardSubtitle', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'h6', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'card-subtitle' }, slots.default && slots.default()) - }, -}) -export { CCardSubtitle } diff --git a/packages/coreui-vue/src/components/card/CCardText.ts b/packages/coreui-vue/src/components/card/CCardText.ts deleted file mode 100644 index 0f26e875..00000000 --- a/packages/coreui-vue/src/components/card/CCardText.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardText = defineComponent({ - name: 'CCardText', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'p', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'card-text' }, slots.default && slots.default()) - }, -}) - -export { CCardText } diff --git a/packages/coreui-vue/src/components/card/CCardTitle.ts b/packages/coreui-vue/src/components/card/CCardTitle.ts deleted file mode 100644 index 4564bdf0..00000000 --- a/packages/coreui-vue/src/components/card/CCardTitle.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCardTitle = defineComponent({ - name: 'CCardTitle', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'h5', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'card-title' }, slots.default && slots.default()) - }, -}) - -export { CCardTitle } diff --git a/packages/coreui-vue/src/components/card/__tests__/CCard.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCard.spec.ts deleted file mode 100644 index 5831bd1a..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCard.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCard as Component } from '../../../index' - -const ComponentName = 'CCard' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - textColor: 'info', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('card')).toBe(true) - expect(customWrapper.classes('bg-warning')).toBe(true) - expect(customWrapper.classes('text-info')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardBody.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardBody.spec.ts deleted file mode 100644 index 92e9b639..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardBody.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardBody as Component } from '../../../index' - -const ComponentName = 'CCardBody' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-body')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardFooter.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardFooter.spec.ts deleted file mode 100644 index 71d4f9ca..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardFooter.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardFooter as Component } from '../../../index' - -const ComponentName = 'CCardFooter' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-footer')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardGroup.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardGroup.spec.ts deleted file mode 100644 index 0c9cc4ae..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardGroup.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardGroup as Component } from '../../../index' - -const ComponentName = 'CCardGroup' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-group')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardHeader.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardHeader.spec.ts deleted file mode 100644 index 01e950c4..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardHeader.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardHeader as Component } from '../../../index' - -const ComponentName = 'CCardHeader' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'span', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-header')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('card-header')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardImage.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardImage.spec.ts deleted file mode 100644 index 342a74fa..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardImage.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardImage as Component } from '../../../index' - -const ComponentName = 'CCardImage' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'a', - orientation: 'bottom', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-img')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('card-img-bottom')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardImageOverlay.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardImageOverlay.spec.ts deleted file mode 100644 index 65e7639a..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardImageOverlay.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardImageOverlay as Component } from '../../../index' - -const ComponentName = 'CCardImageOverlay' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-img-overlay')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardLink.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardLink.spec.ts deleted file mode 100644 index f6be4bda..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardLink.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardLink as Component } from '../../../index' - -const ComponentName = 'CCardLink' - -const defaultWrapper = mount(Component, { - propsData: { - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-link')).toBe(true) - expect(defaultWrapper.attributes('href')).toBe('/bazinga') - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardSubtitle.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardSubtitle.spec.ts deleted file mode 100644 index d78f05ad..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardSubtitle.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardSubtitle as Component } from '../../../index' - -const ComponentName = 'CCardSubtitle' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'h4', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-subtitle')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('card-subtitle')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardText.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardText.spec.ts deleted file mode 100644 index cf03e29a..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardText.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardText as Component } from '../../../index' - -const ComponentName = 'CCardText' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'h4', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-text')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('card-text')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/CCardTitle.spec.ts b/packages/coreui-vue/src/components/card/__tests__/CCardTitle.spec.ts deleted file mode 100644 index a3c28d5d..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/CCardTitle.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCardTitle as Component } from '../../../index' - -const ComponentName = 'CCardTitle' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'h2', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('card-title')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('card-title')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCard.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCard.spec.ts.snap deleted file mode 100644 index 63e0b00a..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCard.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCard component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CCard component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardBody.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardBody.spec.ts.snap deleted file mode 100644 index ccbee9e9..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardBody.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCardBody component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardFooter.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardFooter.spec.ts.snap deleted file mode 100644 index 456c0ff1..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardFooter.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCardFooter component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardGroup.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardGroup.spec.ts.snap deleted file mode 100644 index aee3447b..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardGroup.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCardGroup component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardHeader.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardHeader.spec.ts.snap deleted file mode 100644 index 0efe7610..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardHeader.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCardHeader component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CCardHeader component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImage.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImage.spec.ts.snap deleted file mode 100644 index 50dcb1c1..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImage.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCardImage component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CCardImage component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImageOverlay.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImageOverlay.spec.ts.snap deleted file mode 100644 index 22382136..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImageOverlay.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCardImageOverlay component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardLink.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardLink.spec.ts.snap deleted file mode 100644 index dbe5ad65..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardLink.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCardLink component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardSubtitle.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardSubtitle.spec.ts.snap deleted file mode 100644 index e68a43a3..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardSubtitle.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCardSubtitle component renders correctly 1`] = `"

Default slot

"`; - -exports[`Loads and display CCardSubtitle component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardText.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardText.spec.ts.snap deleted file mode 100644 index 99086ae3..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardText.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCardText component renders correctly 1`] = `"

Default slot

"`; - -exports[`Loads and display CCardText component renders correctly 1`] = `"

Default slot

"`; diff --git a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardTitle.spec.ts.snap b/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardTitle.spec.ts.snap deleted file mode 100644 index b3fff67e..00000000 --- a/packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardTitle.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCardTitle component renders correctly 1`] = `"

Default slot

"`; - -exports[`Loads and display CCardTitle component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/card/index.ts b/packages/coreui-vue/src/components/card/index.ts deleted file mode 100644 index cad0a6ca..00000000 --- a/packages/coreui-vue/src/components/card/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { App } from 'vue' -import { CCard } from './CCard' -import { CCardBody } from './CCardBody' -import { CCardFooter } from './CCardFooter' -import { CCardGroup } from './CCardGroup' -import { CCardHeader } from './CCardHeader' -import { CCardImage } from './CCardImage' -import { CCardImageOverlay } from './CCardImageOverlay' -import { CCardLink } from './CCardLink' -import { CCardSubtitle } from './CCardSubtitle' -import { CCardText } from './CCardText' -import { CCardTitle } from './CCardTitle' - -const CCardPlugin = { - install: (app: App): void => { - app.component(CCard.name as string, CCard) - app.component(CCardBody.name as string, CCardBody) - app.component(CCardFooter.name as string, CCardFooter) - app.component(CCardGroup.name as string, CCardGroup) - app.component(CCardHeader.name as string, CCardHeader) - app.component(CCardImage.name as string, CCardImage) - app.component(CCardImageOverlay.name as string, CCardImageOverlay) - app.component(CCardLink.name as string, CCardLink) - app.component(CCardSubtitle.name as string, CCardSubtitle) - app.component(CCardText.name as string, CCardText) - app.component(CCardTitle.name as string, CCardTitle) - }, -} - -export { - CCardPlugin, - CCard, - CCardBody, - CCardFooter, - CCardGroup, - CCardHeader, - CCardImage, - CCardImageOverlay, - CCardLink, - CCardSubtitle, - CCardText, - CCardTitle, -} diff --git a/packages/coreui-vue/src/components/carousel/CCarousel.ts b/packages/coreui-vue/src/components/carousel/CCarousel.ts deleted file mode 100644 index bbb7046a..00000000 --- a/packages/coreui-vue/src/components/carousel/CCarousel.ts +++ /dev/null @@ -1,253 +0,0 @@ -import { - defineComponent, - h, - ref, - VNode, - onBeforeMount, - onMounted, - onUpdated, - provide, - watch, -} from 'vue' - -import { isInViewport } from '../../utils' - -const CCarousel = defineComponent({ - name: 'CCarousel', - props: { - /** - * Adding in the previous and next controls. - */ - controls: Boolean, - /** - * Add darker controls, indicators, and captions. - */ - dark: Boolean, - /** - * index of the active item. - */ - index: { - type: Number, - default: 0, - }, - /** - * Adding indicators at the bottom of the carousel for each item. - */ - indicators: Boolean, - /** - * The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle. - */ - interval: { - type: [Boolean, Number], - default: 5000, - }, - /** - * If set to 'hover', pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave. If set to false, hovering over the carousel won't pause it. - */ - pause: { - type: [Boolean, String], - default: 'hover', - validator: (value: boolean | string) => { - return typeof value === 'boolean' || value === 'hover' - }, - }, - /** - * Set type of the transition. - * - * @values 'crossfade', 'slide' - */ - transition: { - type: String, - default: 'slide', - validator: (value: string) => { - return ['crossfade', 'slide'].includes(value) - }, - }, - /** - * Set whether the carousel should cycle continuously or have hard stops. - */ - wrap: { - type: Boolean, - default: true, - }, - }, - setup(props, { slots }) { - const carouselRef = ref() - - const active = ref(props.index) - const animating = ref(false) - const customInterval = ref(props.interval) - const direction = ref('next') - const items = ref([]) - const timeout = ref() - const visible = ref() - - const setAnimating = (value: boolean) => { - animating.value = value - } - const setCustomInterval = (value: boolean | number) => { - customInterval.value = value - } - - provide('setAnimating', setAnimating) - provide('setCustomInterval', setCustomInterval) - - const pause = () => timeout.value && clearInterval(timeout.value) - - const cycle = () => { - pause() - if (typeof props.interval === 'number') { - timeout.value = setTimeout( - () => nextItemWhenVisible(), - typeof customInterval.value === 'number' ? customInterval.value : props.interval, - ) - } - } - - const handleControlClick = (_direction: string) => { - if (animating.value) { - return - } - direction.value = _direction - if (_direction === 'next') { - active.value === items.value.length - 1 ? (active.value = 0) : active.value++ - } else { - active.value === 0 ? (active.value = items.value.length - 1) : active.value-- - } - } - - const nextItemWhenVisible = () => { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && carouselRef.value && isInViewport(carouselRef.value)) { - handleControlClick('next') - } - } - - const handleIndicatorClick = (index: number) => { - if (active.value === index) { - return - } - - if (active.value < index) { - direction.value = 'next' - active.value = index - return - } - - if (active.value > index) { - direction.value = 'prev' - active.value = index - } - } - - const handleScroll = () => { - visible.value = - !document.hidden && carouselRef.value && isInViewport(carouselRef.value) ? true : false - } - - onBeforeMount(() => { - if (slots.default) { - const children = - typeof slots.default()[0].type === 'symbol' - ? slots.default()[0].children - : slots.default() - - if (children && Array.isArray(children)) { - // @ts-expect-error TODO: fix types - items.value = children.filter((child) => child.type.name === 'CCarouselItem') - } - } - }) - - onMounted(() => { - window.addEventListener('scroll', handleScroll) - }) - - onUpdated(() => { - watch(animating, () => { - if (props.wrap) { - !animating.value && cycle() - return - } - - if (!props.wrap && active.value < items.value.length - 1) { - !animating.value && cycle() - } - }) - }) - - watch(visible, () => { - visible.value && cycle() - }) - - return () => - h( - 'div', - { - class: ['carousel slide', props.transition === 'crossfade' && 'carousel-fade'], - ...(props.dark && { 'data-coreui-theme': 'dark' }), - onmouseover: () => props.pause && pause(), - onmouseleave: () => cycle(), - ref: carouselRef, - }, - [ - props.indicators && - h( - 'div', - { - class: 'carousel-indicators', - }, - items.value.map((_, index) => { - return h('button', { - type: 'button', - id: index, - 'data-coreui-target': '', - ...(active.value === index && { class: 'active' }), - onClick: () => handleIndicatorClick(index), - }) - }), - ), - h( - 'div', - { class: 'carousel-inner' }, - items.value.map((item, index) => { - return h(item, { - active: active.value === index ? true : false, - direction: direction.value, - }) - }), - ), - props.controls && [ - h( - 'button', - { - type: 'button', - class: 'carousel-control-prev', - 'data-coreui-target': '', - onClick: () => handleControlClick('prev'), - }, - [ - h('span', { class: 'carousel-control-prev-icon', ariaHidden: 'true' }), - h('span', { class: 'visually-hidden' }, 'Previous'), - ], - ), - h( - 'button', - { - type: 'button', - class: 'carousel-control-next', - 'data-coreui-target': '', - onClick: () => handleControlClick('next'), - }, - [ - h('span', { class: 'carousel-control-next-icon', ariaHidden: 'true' }), - h('span', { class: 'visually-hidden' }, 'Next'), - ], - ), - ], - ], - ) - }, -}) -export { CCarousel } diff --git a/packages/coreui-vue/src/components/carousel/CCarouselCaption.ts b/packages/coreui-vue/src/components/carousel/CCarouselCaption.ts deleted file mode 100644 index 11753412..00000000 --- a/packages/coreui-vue/src/components/carousel/CCarouselCaption.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CCarouselCaption = defineComponent({ - name: 'CCarouselCaption', - setup(_, { slots }) { - return () => - h( - 'div', - { - class: 'carousel-caption', - }, - slots.default && slots.default(), - ) - }, -}) -export { CCarouselCaption } diff --git a/packages/coreui-vue/src/components/carousel/CCarouselItem.ts b/packages/coreui-vue/src/components/carousel/CCarouselItem.ts deleted file mode 100644 index a83022f6..00000000 --- a/packages/coreui-vue/src/components/carousel/CCarouselItem.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { defineComponent, h, inject, ref, toRefs, watch } from 'vue' - -const CCarouselItem = defineComponent({ - name: 'CCarouselItem', - props: { - /** - * @ignore - */ - active: { - type: Boolean, - default: false, - }, - /** - * @ignore - */ - direction: { - type: String, - default: 'next', - }, - /** - * The amount of time to delay between automatically cycling an item. - */ - interval: { - type: [Boolean, Number], - default: false, - }, - }, - setup(props, { slots }) { - const carouselItemRef = ref() - const { active } = toRefs(props) - const directionClassName = ref() - const orderClassName = ref() - const activeClassName = ref(active.value && 'active') - - // eslint-disable-next-line no-unused-vars - const setAnimating = inject('setAnimating') as (value: boolean) => void - // eslint-disable-next-line no-unused-vars - const setCustomInterval = inject('setCustomInterval') as (value: boolean | number) => void - - watch(active, (active, prevActive) => { - active && setCustomInterval(props.interval) - if (!prevActive && active) { - orderClassName.value = `carousel-item-${props.direction}` - setCustomInterval(props.interval) - } - setTimeout(() => { - if (prevActive && !active) { - activeClassName.value = 'active' - } - directionClassName.value = `carousel-item-${props.direction === 'next' ? 'start' : 'end'}` - }, 0) - - carouselItemRef.value.addEventListener('transitionstart', () => { - setAnimating(true) - }) - - carouselItemRef.value.addEventListener('transitionend', () => { - setAnimating(false) - - if (active) { - directionClassName.value = '' - orderClassName.value = '' - activeClassName.value = 'active' - } - if (!active) { - directionClassName.value = '' - orderClassName.value = '' - activeClassName.value = '' - } - }) - }) - - return () => - h( - 'div', - { - class: [ - 'carousel-item', - activeClassName.value, - directionClassName.value, - orderClassName.value, - ], - ref: carouselItemRef, - }, - slots.default && slots.default(), - ) - }, -}) -export { CCarouselItem } diff --git a/packages/coreui-vue/src/components/carousel/__tests__/CCarousel.spec.ts b/packages/coreui-vue/src/components/carousel/__tests__/CCarousel.spec.ts deleted file mode 100644 index a651b682..00000000 --- a/packages/coreui-vue/src/components/carousel/__tests__/CCarousel.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCarousel as Component } from '../../../index' -//import { CCarouselItem } from '../../../index' - -// TODO: Add test with CCarouselItem inside CCarousel - -const ComponentName = 'CCarousel' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -const customWrapper = mount(Component, { - propsData: { - controls: true, - dark: true, - index: 1, - indicators: true, - interval: 3000, - transition: 'crossfade', - }, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('carousel')).toBe(true) - expect(defaultWrapper.classes('slide')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('PreviousNext') - expect(customWrapper.classes('carousel')).toBe(true) - expect(customWrapper.classes('slide')).toBe(true) - expect(customWrapper.classes('carousel-fade')).toBe(true) - expect(customWrapper.classes('carousel-dark')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/carousel/__tests__/CCarouselCaption.spec.ts b/packages/coreui-vue/src/components/carousel/__tests__/CCarouselCaption.spec.ts deleted file mode 100644 index 3b360788..00000000 --- a/packages/coreui-vue/src/components/carousel/__tests__/CCarouselCaption.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCarouselCaption as Component } from '../../../index' - -const ComponentName = 'CCarouselCaption' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('carousel-caption')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/carousel/__tests__/CCarouselItem.spec.ts b/packages/coreui-vue/src/components/carousel/__tests__/CCarouselItem.spec.ts deleted file mode 100644 index 6e3b2270..00000000 --- a/packages/coreui-vue/src/components/carousel/__tests__/CCarouselItem.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCarouselItem as Component } from '../../../index' -import { nextTick } from 'vue' - -const ComponentName = 'CCarouselItem' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - direction: 'prev', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('carousel-item')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('carousel-item')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('carousel-item-end')).toBe(false) - expect(customWrapper.classes('carousel-item-prev')).toBe(false) - customWrapper.setProps({ - active: false, - }) - expect(customWrapper.classes('carousel-item')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('carousel-item-end')).toBe(false) - expect(customWrapper.classes('carousel-item-prev')).toBe(false) - nextTick() - setTimeout(() => { - expect(customWrapper.classes('carousel-item')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('carousel-item-end')).toBe(true) - expect(customWrapper.classes('carousel-item-prev')).toBe(true) - }, 2) - customWrapper.setProps({ - active: true, - }) - expect(customWrapper.classes('carousel-item')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('carousel-item-end')).toBe(false) - expect(customWrapper.classes('carousel-item-prev')).toBe(false) - nextTick() - setTimeout(() => { - expect(customWrapper.classes('carousel-item')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('carousel-item-end')).toBe(true) - expect(customWrapper.classes('carousel-item-prev')).toBe(true) - }, 2) - //expect(customWrapper.classes('carousel-item-end')).toBe(true) - //expect(customWrapper.classes('carousel-item-prev')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarousel.spec.ts.snap b/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarousel.spec.ts.snap deleted file mode 100644 index 1798375d..00000000 --- a/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarousel.spec.ts.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCarousel component renders correctly 1`] = ` -"" -`; - -exports[`Loads and display CCarousel component renders correctly 1`] = ` -"" -`; diff --git a/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselCaption.spec.ts.snap b/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselCaption.spec.ts.snap deleted file mode 100644 index cdb87682..00000000 --- a/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselCaption.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCarouselCaption component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselItem.spec.ts.snap b/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselItem.spec.ts.snap deleted file mode 100644 index aa272697..00000000 --- a/packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselItem.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCarouselItem component renders correctly 1`] = `""`; - -exports[`Loads and display CCarouselItem component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/carousel/index.ts b/packages/coreui-vue/src/components/carousel/index.ts deleted file mode 100644 index 59566ee8..00000000 --- a/packages/coreui-vue/src/components/carousel/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { App } from 'vue' -import { CCarousel } from './CCarousel' -import { CCarouselCaption } from './CCarouselCaption' -import { CCarouselItem } from './CCarouselItem' - -const CCarouselPlugin = { - install: (app: App): void => { - app.component(CCarousel.name as string, CCarousel) - app.component(CCarouselCaption.name as string, CCarouselCaption) - app.component(CCarouselItem.name as string, CCarouselItem) - }, -} - -export { CCarouselPlugin, CCarousel, CCarouselCaption, CCarouselItem } diff --git a/packages/coreui-vue/src/components/close-button/CCloseButton.ts b/packages/coreui-vue/src/components/close-button/CCloseButton.ts deleted file mode 100644 index 0ddcc4a4..00000000 --- a/packages/coreui-vue/src/components/close-button/CCloseButton.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { defineComponent, h } from 'vue' - -export const CCloseButton = defineComponent({ - name: 'CCloseButton', - props: { - /** - * Invert the default color. - */ - dark: Boolean, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * Change the default color to white. - */ - white: Boolean, - }, - emits: [ - /** - * Event called when the user clicks on the component. - */ - 'click', - ], - setup(props, { emit }) { - const handleClick = () => { - if (props.disabled) { - return - } - - emit('click') - } - return () => - h('button', { - type: 'button', - class: [ - 'btn', - 'btn-close', - { - ['btn-close-white']: props.white, - }, - props.disabled, - ], - 'aria-label': 'Close', - disabled: props.disabled, - ...(props.dark && { 'data-coreui-theme': 'dark' }), - onClick: handleClick, - }) - }, -}) diff --git a/packages/coreui-vue/src/components/close-button/__tests__/CCloseButton.spec.ts b/packages/coreui-vue/src/components/close-button/__tests__/CCloseButton.spec.ts deleted file mode 100644 index ea76ee3e..00000000 --- a/packages/coreui-vue/src/components/close-button/__tests__/CCloseButton.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCloseButton as Component } from '../../../index' - -const ComponentName = 'CCloseButton' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -const customWrapper = mount(Component, { - propsData: { - disabled: true, - white: true, - }, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('btn')).toBe(true) - expect(defaultWrapper.classes('btn-close')).toBe(true) - }) - it('emit on click', () => { - defaultWrapper.trigger('click') - const incrementEvent = defaultWrapper.emitted('click') - expect(incrementEvent).toHaveLength(1) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('btn')).toBe(true) - expect(customWrapper.classes('btn-close')).toBe(true) - expect(customWrapper.classes('btn-close-white')).toBe(true) - expect(customWrapper.attributes('aria-label')).toBe('Close') - expect(customWrapper.attributes('disabled')).toBe('') - }) -}) diff --git a/packages/coreui-vue/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.ts.snap b/packages/coreui-vue/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.ts.snap deleted file mode 100644 index 09672fff..00000000 --- a/packages/coreui-vue/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCloseButton component renders correctly 1`] = `""`; - -exports[`Loads and display CCloseButton component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/close-button/index.ts b/packages/coreui-vue/src/components/close-button/index.ts deleted file mode 100644 index 7445eb8f..00000000 --- a/packages/coreui-vue/src/components/close-button/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CCloseButton } from './CCloseButton' - -const CCloseButtonPlugin = { - install: (app: App): void => { - app.component(CCloseButton.name as string, CCloseButton) - }, -} - -export { CCloseButtonPlugin, CCloseButton } diff --git a/packages/coreui-vue/src/components/collapse/CCollapse.ts b/packages/coreui-vue/src/components/collapse/CCollapse.ts deleted file mode 100644 index c495f147..00000000 --- a/packages/coreui-vue/src/components/collapse/CCollapse.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { defineComponent, h, Transition, ref, RendererElement, withDirectives } from 'vue' - -import { vVisible } from '../../directives/v-c-visible' -import { executeAfterTransition } from '../../utils/transition' - -const CCollapse = defineComponent({ - name: 'CCollapse', - props: { - /** - * Set horizontal collapsing to transition the width instead of height. - */ - horizontal: Boolean, - /** - * Toggle the visibility of component. - */ - visible: Boolean, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { slots, emit }) { - const collapsing = ref(false) - const show = ref(props.visible) - - const handleBeforeEnter = () => { - collapsing.value = true - } - - const handleEnter = (el: RendererElement, done: () => void) => { - emit('show') - // collapsing.value = true - setTimeout(() => { - executeAfterTransition(() => done(), el as HTMLElement) - if (props.horizontal) { - el.style.width = `${el.scrollWidth}px` - return - } - el.style.height = `${el.scrollHeight}px` - }, 1) - } - - const handleAfterEnter = (el: RendererElement) => { - show.value = true - collapsing.value = false - props.horizontal ? el.style.removeProperty('width') : el.style.removeProperty('height') - } - - const handleBeforeLeave = (el: RendererElement) => { - collapsing.value = true - show.value = false - if (props.horizontal) { - el.style.width = `${el.scrollWidth}px` - return - } - el.style.height = `${el.scrollHeight}px` - } - - const handleLeave = (el: RendererElement, done: () => void) => { - emit('hide') - setTimeout(() => { - executeAfterTransition(() => done(), el as HTMLElement) - if (props.horizontal) { - el.style.width = '0px' - return - } - el.style.height = '0px' - }, 1) - } - - const handleAfterLeave = (el: RendererElement) => { - collapsing.value = false - props.horizontal ? el.style.removeProperty('width') : el.style.removeProperty('height') - } - - return () => - h( - Transition, - { - css: false, - onBeforeEnter: () => handleBeforeEnter(), - onEnter: (el, done) => handleEnter(el, done), - onAfterEnter: (el) => handleAfterEnter(el), - onBeforeLeave: (el) => handleBeforeLeave(el), - onLeave: (el, done) => handleLeave(el, done), - onAfterLeave: (el) => handleAfterLeave(el), - }, - () => - withDirectives( - h( - 'div', - { - class: [ - collapsing.value ? 'collapsing' : 'collapse', - { 'collapse-horizontal': props.horizontal, show: show.value }, - ], - }, - slots.default && slots.default(), - ), - [[vVisible, props.visible]], - ), - ) - }, -}) - -export { CCollapse } diff --git a/packages/coreui-vue/src/components/collapse/__test__/CCollapse.spec.ts b/packages/coreui-vue/src/components/collapse/__test__/CCollapse.spec.ts deleted file mode 100644 index ddb6f4fe..00000000 --- a/packages/coreui-vue/src/components/collapse/__test__/CCollapse.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCollapse as Component } from '../../../index' - -const ComponentName = 'CCollapse' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.find('div').classes('collapse')).toBe(true) - }) -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.find('div').classes('collapse')).toBe(true) - expect(customWrapper.find('div').classes('show')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap b/packages/coreui-vue/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap deleted file mode 100644 index 0bab1aef..00000000 --- a/packages/coreui-vue/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CCollapse component renders correctly 1`] = ` -" -
Default slot
-
" -`; - -exports[`Loads and display CCollapse component renders correctly 2`] = ` -" -
Default slot
-
" -`; diff --git a/packages/coreui-vue/src/components/collapse/index.ts b/packages/coreui-vue/src/components/collapse/index.ts deleted file mode 100644 index 2c6ccd7c..00000000 --- a/packages/coreui-vue/src/components/collapse/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CCollapse } from './CCollapse' - -const CCollapsePlugin = { - install: (app: App): void => { - app.component(CCollapse.name as string, CCollapse) - }, -} - -export { CCollapsePlugin, CCollapse } diff --git a/packages/coreui-vue/src/components/conditional-teleport/CConditionalTeleport.ts b/packages/coreui-vue/src/components/conditional-teleport/CConditionalTeleport.ts deleted file mode 100644 index 9207fb9a..00000000 --- a/packages/coreui-vue/src/components/conditional-teleport/CConditionalTeleport.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { defineComponent, h, PropType, ref, Teleport, watch } from 'vue' - -const getContainer = ( - container?: HTMLElement | (() => HTMLElement) | string, -): HTMLElement | string => { - if (container) { - return typeof container === 'function' ? container() : container - } - - return 'body' -} - -const CConditionalTeleport = defineComponent({ - name: 'CConditionalTeleport', - props: { - /** - * An HTML element or function that returns a single element, with `document.body` as the default. - * - * @since 5.0.0 - */ - container: { - type: [Object, String] as PropType HTMLElement) | string>, - default: 'body', - }, - /** - * Render some children into a different part of the DOM - */ - teleport: { - type: [Boolean], - default: true, - }, - }, - setup(props, { slots }) { - const container = ref(getContainer(props.container)) - - watch( - () => [props.container, props.teleport], - () => { - if (props.teleport) { - container.value = getContainer(props.container) - } - }, - ) - - return () => - h( - Teleport, - { - disabled: props.teleport === false, - to: container.value, - }, - { - default: () => slots.default && slots.default(), - }, - ) - }, -}) -export { CConditionalTeleport } diff --git a/packages/coreui-vue/src/components/conditional-teleport/index.ts b/packages/coreui-vue/src/components/conditional-teleport/index.ts deleted file mode 100644 index 538edf16..00000000 --- a/packages/coreui-vue/src/components/conditional-teleport/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CConditionalTeleport } from './CConditionalTeleport' - -const CConditionalTeleportPlugin = { - install: (app: App): void => { - app.component(CConditionalTeleport.name as string, CConditionalTeleport) - }, -} - -export { CConditionalTeleport, CConditionalTeleportPlugin } diff --git a/packages/coreui-vue/src/components/dropdown/CDropdown.ts b/packages/coreui-vue/src/components/dropdown/CDropdown.ts deleted file mode 100644 index 679e5d6f..00000000 --- a/packages/coreui-vue/src/components/dropdown/CDropdown.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { defineComponent, h, ref, provide, watch, PropType } from 'vue' -import type { Placement } from '@popperjs/core' - -import { usePopper } from '../../composables' -import type { Triggers } from '../../types' -import { getNextActiveElement, isRTL } from '../../utils' - -import type { Alignments } from './types' -import { getPlacement } from './utils' - -const CDropdown = defineComponent({ - name: 'CDropdown', - props: { - /** - * Set aligment of dropdown menu. - * - * @values { 'start' | 'end' | { xs: 'start' | 'end' } | { sm: 'start' | 'end' } | { md: 'start' | 'end' } | { lg: 'start' | 'end' } | { xl: 'start' | 'end'} | { xxl: 'start' | 'end'} } - */ - alignment: { - type: [String, Object] as PropType, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - validator: (value: string | any) => { - if (value === 'start' || value === 'end') { - return true - } else { - if (value.xs !== undefined && (value.xs === 'start' || value.xs === 'end')) { - return true - } - if (value.sm !== undefined && (value.sm === 'start' || value.sm === 'end')) { - return true - } - if (value.md !== undefined && (value.md === 'start' || value.md === 'end')) { - return true - } - if (value.lg !== undefined && (value.lg === 'start' || value.lg === 'end')) { - return true - } - if (value.xl !== undefined && (value.xl === 'start' || value.xl === 'end')) { - return true - } - if (value.xxl !== undefined && (value.xxl === 'start' || value.xxl === 'end')) { - return true - } - return false - } - }, - }, - /** - * Configure the auto close behavior of the dropdown: - * - `true` - the dropdown will be closed by clicking outside or inside the dropdown menu. - * - `false` - the dropdown will be closed by clicking the toggle button and manually calling hide or toggle method. (Also will not be closed by pressing esc key) - * - `'inside'` - the dropdown will be closed (only) by clicking inside the dropdown menu. - * - `'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu. - */ - autoClose: { - type: [Boolean, String], - default: true, - validator: (value: boolean | string) => { - return typeof value === 'boolean' || ['inside', 'outside'].includes(value) - }, - }, - /** - * Appends the vue dropdown menu to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`. - * - * @since 5.0.0 - */ - container: { - type: [Object, String] as PropType HTMLElement) | string>, - default: 'body', - }, - /** - * Sets a darker color scheme to match a dark navbar. - */ - dark: Boolean, - /** - * Sets a specified direction and location of the dropdown menu. - * - * @values 'center', 'dropup', 'dropup-center', 'dropend', 'dropstart' - */ - direction: { - type: String, - validator: (value: string) => { - return ['center', 'dropup', 'dropup-center', 'dropend', 'dropstart'].includes(value) - }, - }, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * Offset of the dropdown menu relative to its target. - * - * @since 4.9.0 - */ - offset: { - type: Array, - default: () => [0, 2], - }, - /** - * Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. - * - * @values 'auto', 'top-end', 'top', 'top-start', 'bottom-end', 'bottom', 'bottom-start', 'right-start', 'right', 'right-end', 'left-start', 'left', 'left-end' - */ - placement: { - type: String as PropType, - default: 'bottom-start', - }, - /** - * If you want to disable dynamic positioning set this property to `true`. - */ - popper: { - type: Boolean, - default: true, - }, - /** - * Generates dropdown menu using Teleport. - * - * @since 5.0.0 - */ - teleport: { - type: Boolean, - default: false, - }, - /** - * Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. - */ - trigger: { - type: String as PropType, - default: 'click', - }, - /** - * Set the dropdown variant to an btn-group, dropdown, input-group, and nav-item. - * - * @values 'btn-group', 'dropdown', 'input-group', 'nav-item' - */ - variant: { - type: String, - default: 'btn-group', - validator: (value: string) => { - return ['btn-group', 'dropdown', 'input-group', 'nav-item'].includes(value) - }, - }, - /** - * Toggle the visibility of dropdown menu component. - */ - visible: Boolean, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { slots, emit }) { - const dropdownToggleRef = ref() - const dropdownMenuRef = ref() - const popper = ref(typeof props.alignment === 'object' ? false : props.popper) - const visible = ref(props.visible) - - const { initPopper, destroyPopper } = usePopper() - - const popperConfig = { - modifiers: [ - { - name: 'offset', - options: { - offset: props.offset, - }, - }, - ], - placement: getPlacement( - props.placement, - props.direction, - props.alignment, - isRTL(dropdownMenuRef.value), - ) as Placement, - } - - watch( - () => props.visible, - () => { - visible.value = props.visible - }, - ) - - watch(visible, () => { - if (visible.value && dropdownToggleRef.value && dropdownMenuRef.value) { - popper.value && initPopper(dropdownToggleRef.value, dropdownMenuRef.value, popperConfig) - window.addEventListener('mouseup', handleMouseUp) - window.addEventListener('keyup', handleKeyup) - dropdownToggleRef.value.addEventListener('keydown', handleKeydown) - dropdownMenuRef.value.addEventListener('keydown', handleKeydown) - emit('show') - return - } - - popper.value && destroyPopper() - window.removeEventListener('mouseup', handleMouseUp) - window.removeEventListener('keyup', handleKeyup) - dropdownToggleRef.value && - dropdownToggleRef.value.removeEventListener('keydown', handleKeydown) - dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown) - emit('hide') - }) - - provide('config', { - alignment: props.alignment, - container: props.container, - dark: props.dark, - popper: props.popper, - teleport: props.teleport, - }) - - provide('variant', props.variant) - provide('visible', visible) - provide('dropdownToggleRef', dropdownToggleRef) - provide('dropdownMenuRef', dropdownMenuRef) - - const handleKeydown = (event: KeyboardEvent) => { - if ( - visible.value && - dropdownMenuRef.value && - (event.key === 'ArrowDown' || event.key === 'ArrowUp') - ) { - event.preventDefault() - const target = event.target as HTMLElement - // eslint-disable-next-line unicorn/prefer-spread - const items: HTMLElement[] = Array.from( - dropdownMenuRef.value.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'), - ) - getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus() - } - } - - const handleKeyup = (event: KeyboardEvent) => { - if (props.autoClose === false) { - return - } - - if (event.key === 'Escape') { - setVisible(false) - } - } - - const handleMouseUp = (event: Event) => { - if (!dropdownToggleRef.value || !dropdownMenuRef.value) { - return - } - - if (dropdownToggleRef.value.contains(event.target as HTMLElement)) { - return - } - - if ( - props.autoClose === true || - (props.autoClose === 'inside' && - dropdownMenuRef.value.contains(event.target as HTMLElement)) || - (props.autoClose === 'outside' && - !dropdownMenuRef.value.contains(event.target as HTMLElement)) - ) { - setVisible(false) - return - } - } - - const setVisible = (_visible?: boolean) => { - if (props.disabled) { - return - } - - if (typeof _visible == 'boolean') { - visible.value = _visible - return - } - - if (visible.value === true) { - visible.value = false - return - } - - visible.value = true - } - - provide('setVisible', setVisible) - - return () => - props.variant === 'input-group' - ? [slots.default && slots.default()] - : h( - 'div', - { - class: [ - props.variant === 'nav-item' ? 'nav-item dropdown' : props.variant, - props.direction === 'center' - ? 'dropdown-center' - : props.direction === 'dropup-center' - ? 'dropup dropup-center' - : props.direction, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CDropdown } diff --git a/packages/coreui-vue/src/components/dropdown/CDropdownDivider.ts b/packages/coreui-vue/src/components/dropdown/CDropdownDivider.ts deleted file mode 100644 index 9a17307b..00000000 --- a/packages/coreui-vue/src/components/dropdown/CDropdownDivider.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CDropdownDivider = defineComponent({ - name: 'CDropdownDivider', - setup() { - return () => - h('hr', { - class: 'dropdown-divider', - }) - }, -}) - -export { CDropdownDivider } diff --git a/packages/coreui-vue/src/components/dropdown/CDropdownHeader.ts b/packages/coreui-vue/src/components/dropdown/CDropdownHeader.ts deleted file mode 100644 index ea630404..00000000 --- a/packages/coreui-vue/src/components/dropdown/CDropdownHeader.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CDropdownHeader = defineComponent({ - name: 'CDropdownHeader', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'h6', - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: 'dropdown-header', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CDropdownHeader } diff --git a/packages/coreui-vue/src/components/dropdown/CDropdownItem.ts b/packages/coreui-vue/src/components/dropdown/CDropdownItem.ts deleted file mode 100644 index 49b1ea68..00000000 --- a/packages/coreui-vue/src/components/dropdown/CDropdownItem.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { CLink } from '../link/CLink' - -const CDropdownItem = defineComponent({ - name: 'CDropdownItem', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'a', - }, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: String, - }, - setup(props, { slots }) { - return () => - h( - CLink, - { - class: 'dropdown-item', - active: props.active, - as: props.as, - disabled: props.disabled, - href: props.href, - }, - { - default: () => slots.default && slots.default(), - }, - ) - }, -}) - -export { CDropdownItem } diff --git a/packages/coreui-vue/src/components/dropdown/CDropdownMenu.ts b/packages/coreui-vue/src/components/dropdown/CDropdownMenu.ts deleted file mode 100644 index 29791bac..00000000 --- a/packages/coreui-vue/src/components/dropdown/CDropdownMenu.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { defineComponent, h, inject, Ref } from 'vue' - -import { CConditionalTeleport } from '../conditional-teleport' -import { getAlignmentClassNames } from './utils' - -const CDropdownMenu = defineComponent({ - name: 'CDropdownMenu', - inheritAttrs: false, - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - * - * @values 'div', 'ul' - */ - as: { - type: String, - default: 'div', - }, - }, - setup(props, { attrs, slots }) { - const dropdownMenuRef = inject('dropdownMenuRef') as Ref - const config = inject('config') as any // eslint-disable-line @typescript-eslint/no-explicit-any - const visible = inject('visible') as Ref - - const { alignment, container, dark, popper, teleport } = config - - return () => - h( - CConditionalTeleport, - { - container: container, - teleport: teleport, - }, - { - default: () => - h( - props.as, - { - ...attrs, - class: [ - 'dropdown-menu', - { show: visible.value }, - getAlignmentClassNames(alignment), - attrs.class, - ], - ...((typeof alignment === 'object' || !popper) && { - 'data-coreui-popper': 'static', - }), - ...(dark && { 'data-coreui-theme': 'dark' }), - ref: dropdownMenuRef, - }, - props.as === 'ul' - ? slots.default && slots.default().map((vnode) => h('li', {}, vnode)) - : slots.default && slots.default(), - ), - }, - ) - }, -}) - -export { CDropdownMenu } diff --git a/packages/coreui-vue/src/components/dropdown/CDropdownToggle.ts b/packages/coreui-vue/src/components/dropdown/CDropdownToggle.ts deleted file mode 100644 index 17fd034b..00000000 --- a/packages/coreui-vue/src/components/dropdown/CDropdownToggle.ts +++ /dev/null @@ -1,197 +0,0 @@ -import { - cloneVNode, - computed, - defineComponent, - h, - inject, - onMounted, - PropType, - Ref, - ref, -} from 'vue' - -import { CButton } from '../button' - -import { Color, Shape } from '../../props' -import type { Triggers } from '../../types' - -const CDropdownToggle = defineComponent({ - name: 'CDropdownToggle', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'button', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Enables pseudo element caret on toggler. - */ - caret: { - type: Boolean, - default: true, - }, - /** - * Create a custom toggler which accepts any content. - */ - custom: Boolean, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * If a dropdown `variant` is set to `nav-item` then render the toggler as a link instead of a button. - * - * @since 5.0.0 - */ - navLink: { - type: Boolean, - default: true, - }, - /** - * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3' - */ - shape: Shape, - /** - * Size the component small or large. - * - * @values 'sm', 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg'].includes(value) - }, - }, - /** - * Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` className for proper spacing around the dropdown caret. - */ - split: Boolean, - /** - * Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. - * - * @type 'hover' | 'focus' | 'click' - */ - trigger: { - type: String as PropType, - default: 'click', - }, - /** - * Set the button variant to an outlined button or a ghost button. - * - * @values 'ghost', 'outline' - */ - variant: { - type: String, - validator: (value: string) => { - return ['ghost', 'outline'].includes(value) - }, - }, - }, - setup(props, { slots }) { - const togglerRef = ref() - const dropdownToggleRef = inject('dropdownToggleRef') as Ref - const dropdownVariant = inject('variant') as string - const visible = inject('visible') as Ref - const setVisible = inject('setVisible') as (_visible?: boolean) => void - - const triggers = { - ...((props.trigger === 'click' || props.trigger.includes('click')) && { - onClick: (event: Event) => { - event.preventDefault() - if (props.disabled) { - return - } - - setVisible() - }, - }), - ...((props.trigger === 'focus' || props.trigger.includes('focus')) && { - onfocus: () => { - if (props.disabled) { - return - } - - setVisible(true) - }, - onblur: () => { - if (props.disabled) { - return - } - setVisible(false) - }, - }), - } - - const togglerProps = computed(() => { - return { - class: { - 'nav-link': dropdownVariant === 'nav-item' && props.navLink, - 'dropdown-toggle': props.caret, - 'dropdown-toggle-split': props.split, - disabled: props.disabled, - show: visible.value, - }, - 'aria-expanded': visible.value, - ...(!props.disabled && { ...triggers }), - } - }) - - onMounted(() => { - if (togglerRef.value) { - dropdownToggleRef.value = togglerRef.value.$el - } - }) - - return () => - props.custom - ? slots.default && - slots.default().map((slot) => - cloneVNode(slot, { - ref: (el) => { - togglerRef.value = el - }, - ...triggers, - }), - ) - : dropdownVariant === 'nav-item' && props.navLink - ? h( - 'a', - { - href: '#', - ...togglerProps.value, - role: 'button', - ref: dropdownToggleRef, - }, - { default: () => slots.default && slots.default() }, - ) - : h( - CButton, - { - ...togglerProps.value, - as: props.as, - color: props.color, - disabled: props.disabled, - shape: props.shape, - size: props.size, - variant: props.variant, - ref: (el) => { - togglerRef.value = el - }, - }, - () => - props.split - ? h('span', { class: 'visually-hidden' }, 'Toggle Dropdown') - : slots.default && slots.default(), - ) - }, -}) - -export { CDropdownToggle } diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdown.spec.ts b/packages/coreui-vue/src/components/dropdown/__tests__/CDropdown.spec.ts deleted file mode 100644 index a71c136b..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdown.spec.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CDropdown as Component } from '../../../index' - -const ComponentName = 'CDropdown' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - alignment: { lg: 'end' }, - dark: true, - direction: 'dropend', - disabled: true, - placement: 'right-start', - popper: false, - trigger: 'hover', - variant: 'nav-item', - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapperTwo = mount(Component, { - propsData: { - variant: 'input-group', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('btn-group')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('nav-item')).toBe(true) - expect(customWrapper.classes('dropdown')).toBe(true) - }) -}) - -describe(`Customize (variant number two) ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapperTwo.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapperTwo.text()).toContain('Default slot') - }) -}) diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownDivider.spec.ts b/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownDivider.spec.ts deleted file mode 100644 index 584b93ca..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownDivider.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CDropdownDivider as Component } from '../../../index' - -const ComponentName = 'CDropdownDivider' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('dropdown-divider')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownHeader.spec.ts b/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownHeader.spec.ts deleted file mode 100644 index 2401c7e8..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownHeader.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CDropdownHeader as Component } from '../../../index' - -const ComponentName = 'CDropdownHeader' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'h2', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('dropdown-header')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('dropdown-header')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownItem.spec.ts b/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownItem.spec.ts deleted file mode 100644 index de5d2b11..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownItem.spec.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CDropdownItem as Component } from '../../../index' - -const ComponentName = 'CDropdownItem' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - as: 'div', - disabled: true, - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('dropdown-item')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('dropdown-item')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('disabled')).toBe(true) - expect(customWrapper.attributes('href')).toBe('/bazinga') - }) -}) diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownMenu.spec.ts b/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownMenu.spec.ts deleted file mode 100644 index 23c7d3d7..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownMenu.spec.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CDropdownMenu as Component } from '../../../index' -import { ref } from 'vue' - -const ComponentName = 'CDropdownMenu' - -const config = { - alignment: { lg: 'end' }, - dark: false, - popper: true, -} - -const customConfig = { - alignment: { lg: 'end' }, - dark: true, - popper: false, -} - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, - global: { - provide: { - config: config, - dropdownMenuRef: ref(), - visible: ref(false), - }, - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'ul', - }, - slots: { - default: 'Default slot', - }, - global: { - provide: { - config: customConfig, - dropdownMenuRef: ref(), - visible: ref(true), - }, - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('dropdown-menu')).toBe(true) - expect(defaultWrapper.classes('dropdown-menu-dark')).toBe(false) - expect(defaultWrapper.classes('show')).toBe(false) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.find('li').text()).toContain('Default slot') - expect(customWrapper.classes('dropdown-menu')).toBe(true) - expect(customWrapper.classes('dropdown-menu-dark')).toBe(true) - expect(customWrapper.classes('show')).toBe(true) - expect(customWrapper.attributes('data-coreui-popper')).toBe('static') - }) -}) diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownToggle.spec.ts b/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownToggle.spec.ts deleted file mode 100644 index 5af217be..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/CDropdownToggle.spec.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CDropdownToggle as Component } from '../../../index' -import { ref } from 'vue' -const ComponentName = 'CDropdownToggle' - -const defaultWrapper = mount(Component, { - propsData: { - active: true, - disabled: true, - variant: 'outline', - color: 'warning', - size: 'lg', - shape: 'rounded-pill', - split: true, - }, - slots: { - default: 'Default slot', - }, - global: { - provide: { - dropdownToggleRef: ref(), - variant: 'input-group', - visible: ref(true), - toggleMenu: function () { - return true - }, - }, - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - color: 'warning', - caret: false, - disabled: true, - shape: 'rounded-pill', - size: 'lg', - split: true, - variant: 'outline', - }, - slots: { - default: 'Default slot', - }, - global: { - provide: { - dropdownToggleRef: ref(), - variant: 'nav-item', - visible: ref(true), - toggleMenu: function () { - return true - }, - }, - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('btn')).toBe(true) - expect(defaultWrapper.classes('dropdown-toggle')).toBe(true) - expect(defaultWrapper.classes('show')).toBe(true) - expect(defaultWrapper.classes('btn-outline-warning')).toBe(true) - expect(defaultWrapper.classes('btn-lg')).toBe(true) - expect(defaultWrapper.classes('rounded-pill')).toBe(true) - expect(defaultWrapper.classes('active')).toBe(true) - expect(defaultWrapper.classes('disabled')).toBe(true) - expect(defaultWrapper.attributes('disabled')).toBe('') - expect(defaultWrapper.find('span').classes('visually-hidden')).toBe(true) - expect(defaultWrapper.find('span').text()).toContain('Toggle Dropdown') - }) - /* - TODO: Make this click test work - it('check on click event', () => { - expect(flag).toBe(false) - defaultWrapper.trigger('click') - expect(flag).toBe(true) - }) - */ -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('nav-link')).toBe(true) - expect(customWrapper.classes('dropdown-toggle-split')).toBe(true) - expect(customWrapper.classes('show')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('disabled')).toBe(true) - expect(customWrapper.attributes('disabled')).toBe('true') - expect(customWrapper.attributes('href')).toBe('#') - }) -}) diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap b/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap deleted file mode 100644 index 9544f410..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize (variant number two) CDropdown component renders correctly 1`] = `"Default slot"`; - -exports[`Customize CDropdown component renders correctly 1`] = `""`; - -exports[`Loads and display CDropdown component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownDivider.spec.ts.snap b/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownDivider.spec.ts.snap deleted file mode 100644 index 5df2cb63..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownDivider.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CDropdownDivider component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownHeader.spec.ts.snap b/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownHeader.spec.ts.snap deleted file mode 100644 index 6ea81ee4..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownHeader.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CDropdownHeader component renders correctly 1`] = `""`; - -exports[`Loads and display CDropdownHeader component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownItem.spec.ts.snap b/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownItem.spec.ts.snap deleted file mode 100644 index 382f0d56..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownItem.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CDropdownItem component renders correctly 1`] = `""`; - -exports[`Loads and display CDropdownItem component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap b/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap deleted file mode 100644 index 2515aa2b..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CDropdownMenu component renders correctly 1`] = ` -" -" -`; - -exports[`Loads and display CDropdownMenu component renders correctly 1`] = ` -" -" -`; diff --git a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownToggle.spec.ts.snap b/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownToggle.spec.ts.snap deleted file mode 100644 index 4697a13e..00000000 --- a/packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownToggle.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CDropdownToggle component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CDropdownToggle component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/dropdown/index.ts b/packages/coreui-vue/src/components/dropdown/index.ts deleted file mode 100644 index aabcfeb8..00000000 --- a/packages/coreui-vue/src/components/dropdown/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { App } from 'vue' -import { CDropdown } from './CDropdown' -import { CDropdownItem } from './CDropdownItem' -import { CDropdownHeader } from './CDropdownHeader' -import { CDropdownDivider } from './CDropdownDivider' -import { CDropdownMenu } from './CDropdownMenu' -import { CDropdownToggle } from './CDropdownToggle' - -const CDropdownPlugin = { - install: (app: App): void => { - app.component(CDropdown.name as string, CDropdown) - app.component(CDropdownItem.name as string, CDropdownItem) - app.component(CDropdownHeader.name as string, CDropdownHeader) - app.component(CDropdownDivider.name as string, CDropdownDivider) - app.component(CDropdownMenu.name as string, CDropdownMenu) - app.component(CDropdownToggle.name as string, CDropdownToggle) - }, -} - -export { - CDropdownPlugin, - CDropdown, - CDropdownItem, - CDropdownHeader, - CDropdownDivider, - CDropdownMenu, - CDropdownToggle, -} diff --git a/packages/coreui-vue/src/components/dropdown/types.ts b/packages/coreui-vue/src/components/dropdown/types.ts deleted file mode 100644 index 3c68889a..00000000 --- a/packages/coreui-vue/src/components/dropdown/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -export type Directions = 'start' | 'end' - -export type Breakpoints = - | { xs: Directions } - | { sm: Directions } - | { md: Directions } - | { lg: Directions } - | { xl: Directions } - | { xxl: Directions } - -export type Alignments = Directions | Breakpoints diff --git a/packages/coreui-vue/src/components/dropdown/utils.ts b/packages/coreui-vue/src/components/dropdown/utils.ts deleted file mode 100644 index c9659636..00000000 --- a/packages/coreui-vue/src/components/dropdown/utils.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { Placement } from '@popperjs/core' -import type { Placements } from '../../types' -import type { Alignments, Breakpoints } from './types' - -export const getAlignmentClassNames = (alignment: Alignments) => { - const classNames: string[] = [] - if (typeof alignment === 'object') { - for (const key in alignment) { - classNames.push( - `dropdown-menu${key === 'xs' ? '' : `-${key}`}-${alignment[key as keyof Breakpoints]}`, - ) - } - } - - if (typeof alignment === 'string') { - classNames.push(`dropdown-menu-${alignment}`) - } - - return classNames -} - -export const getPlacement = ( - placement: Placement, - direction: string | undefined, - alignment: Alignments | string | undefined, - isRTL: boolean, -): Placements => { - let _placement = placement - - if (direction === 'dropup') { - _placement = isRTL ? 'top-end' : 'top-start' - } - - if (direction === 'dropup-center') { - _placement = 'top' - } - - if (direction === 'dropend') { - _placement = isRTL ? 'left-start' : 'right-start' - } - - if (direction === 'dropstart') { - _placement = isRTL ? 'right-start' : 'left-start' - } - - if (alignment === 'end') { - _placement = isRTL ? 'bottom-start' : 'bottom-end' - } - - return _placement -} diff --git a/packages/coreui-vue/src/components/footer/CFooter.ts b/packages/coreui-vue/src/components/footer/CFooter.ts deleted file mode 100644 index 3f0d5fd2..00000000 --- a/packages/coreui-vue/src/components/footer/CFooter.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CFooter = defineComponent({ - name: 'CFooter', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'div', - }, - /** - * Place footer in non-static positions. - * - * @values 'fixed', 'sticky' - */ - position: { - type: String, - validator: (value: string) => { - return ['fixed', 'sticky'].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { class: ['footer', { [`footer-${props.position}`]: props.position }] }, - slots.default && slots.default(), - ) - }, -}) - -export { CFooter } diff --git a/packages/coreui-vue/src/components/footer/__tests__/CFooter.spec.ts b/packages/coreui-vue/src/components/footer/__tests__/CFooter.spec.ts deleted file mode 100644 index 35b914ca..00000000 --- a/packages/coreui-vue/src/components/footer/__tests__/CFooter.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CFooter as Component } from '../../../index' - -const ComponentName = 'CFooter' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - position: 'fixed', - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapperTwo = mount(Component, { - propsData: { - as: 'footer', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('footer')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('footer')).toBe(true) - expect(customWrapper.classes('footer-fixed')).toBe(true) - }) -}) - -describe(`Customize (number two) ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapperTwo.html()).toMatchSnapshot() - }) - - it('tag name is custom', () => { - expect(customWrapperTwo.element.tagName).toBe('FOOTER') - }) -}) diff --git a/packages/coreui-vue/src/components/footer/__tests__/__snapshots__/CFooter.spec.ts.snap b/packages/coreui-vue/src/components/footer/__tests__/__snapshots__/CFooter.spec.ts.snap deleted file mode 100644 index 1cc66859..00000000 --- a/packages/coreui-vue/src/components/footer/__tests__/__snapshots__/CFooter.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFooter component renders correctly 1`] = `""`; - -exports[`Loads and display CFooter component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/footer/index.ts b/packages/coreui-vue/src/components/footer/index.ts deleted file mode 100644 index 8bd4edd4..00000000 --- a/packages/coreui-vue/src/components/footer/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CFooter } from './CFooter' - -const CFooterPlugin = { - install: (app: App): void => { - app.component(CFooter.name as string, CFooter) - }, -} - -export { CFooterPlugin, CFooter } diff --git a/packages/coreui-vue/src/components/form/CForm.ts b/packages/coreui-vue/src/components/form/CForm.ts deleted file mode 100644 index 2747caa7..00000000 --- a/packages/coreui-vue/src/components/form/CForm.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CForm = defineComponent({ - name: 'CForm', - props: { - /** - * Mark a form as validated. If you set it `true`, all validation styles will be applied to the forms component. - */ - validated: Boolean, - }, - setup(props, { slots }) { - return () => - h( - 'form', - { class: [{ ['was-validated']: props.validated }] }, - slots.default && slots.default(), - ) - }, -}) - -export { CForm } diff --git a/packages/coreui-vue/src/components/form/CFormCheck.ts b/packages/coreui-vue/src/components/form/CFormCheck.ts deleted file mode 100644 index fbdd26fd..00000000 --- a/packages/coreui-vue/src/components/form/CFormCheck.ts +++ /dev/null @@ -1,262 +0,0 @@ -import { computed, defineComponent, h } from 'vue' - -import { CButton } from '../button' -import { CFormControlValidation } from './CFormControlValidation' -import { CFormLabel } from './CFormLabel' - -const CFormCheck = defineComponent({ - name: 'CFormCheck', - inheritAttrs: false, - props: { - /** - * Create button-like checkboxes and radio buttons. - * - * @see http://coreui.io/vue/docs/components/button.html - */ - button: Object, - /** - * Use in conjunction with the v-model directive to specify the value that should be assigned to the bound variable when the checkbox is in the `false` state. - * - * @since 4.10.0 - */ - falseValue: String, - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedback: String, - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedbackInvalid: String, - /** - * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - feedbackValid: String, - /** - * Sets hit area to the full area of the component. - */ - hitArea: { - type: String, - validator: (value: string): boolean => { - // The value must match one of these strings - return ['full'].includes(value) - }, - }, - /** - * The id global attribute defines an identifier (ID) that must be unique in the whole document. - */ - id: String, - /** - * Input Checkbox indeterminate Property - */ - indeterminate: Boolean, - /** - * Group checkboxes or radios on the same horizontal row by adding. - */ - inline: Boolean, - /** - * Set component validation state to invalid. - */ - invalid: Boolean, - /** - * The element represents a caption for a component. - */ - label: String, - /** - * The default name for a value passed using v-model. - */ - modelValue: { - type: [Array, Boolean, String], - value: undefined, - }, - /** - * Put checkboxes or radios on the opposite side. - * - * @since 4.8.0 - */ - reverse: Boolean, - /** - * Display validation feedback in a styled tooltip. - * - * @since 4.3.0 - */ - tooltipFeedback: Boolean, - /** - * Use in conjunction with the v-model directive to specify the value that should be assigned to the bound variable when the checkbox is in the `true` state. - * - * @since 4.10.0 - */ - trueValue: String, - /** - * Specifies the type of component. - * - * @values 'checkbox', 'radio' - */ - type: { - type: String, - default: 'checkbox', - }, - /** - * Set component validation state to valid. - */ - valid: Boolean, - /** - * The value attribute of component. - */ - value: String, - }, - emits: [ - /** - * Event occurs when the checked value has been changed. - */ - 'change', - /** - * Emit the new value whenever there’s a change event. - */ - 'update:modelValue', - ], - setup(props, { attrs, emit, slots }) { - const handleChange = (event: InputEvent) => { - const target = event.target as HTMLInputElement - emit('change', event) - - if (props.falseValue && props.trueValue) { - emit('update:modelValue', target.checked ? props.trueValue : props.falseValue) - return - } - - if (props.value && Array.isArray(props.modelValue)) { - if (props.modelValue.includes(props.value)) { - emit( - 'update:modelValue', - props.modelValue.filter((value) => value !== props.value), - ) - } else { - emit('update:modelValue', [...props.modelValue, props.value]) - } - - return - } - - if (props.value === undefined) { - emit('update:modelValue', target.checked) - return - } - - if (props.value && (props.modelValue === undefined || typeof props.modelValue === 'string')) { - emit('update:modelValue', target.checked ? props.value : undefined) - } - } - - const className = [ - 'form-check', - { - 'form-check-inline': props.inline, - 'form-check-reverse': props.reverse, - 'is-invalid': props.invalid, - 'is-valid': props.valid, - }, - attrs.class, - ] - - const inputClassName = [ - props.button ? 'btn-check' : 'form-check-input', - { - 'is-invalid': props.invalid, - 'is-valid': props.valid, - 'me-2': props.hitArea, - }, - ] - - const isChecked = computed(() => { - if (Array.isArray(props.modelValue)) { - return props.modelValue.includes(props.value) - } - - if (typeof props.modelValue === 'string') { - return props.modelValue === props.value - } - - return props.modelValue - }) - - const formControl = () => { - return h('input', { - ...attrs, - ...(props.modelValue && { checked: isChecked.value }), - class: inputClassName, - id: props.id, - indeterminate: props.indeterminate, - onChange: (event: InputEvent) => handleChange(event), - type: props.type, - value: props.value, - }) - } - - const formLabel = () => - props.button - ? h( - CButton, - { - as: 'label', - ...props.button, - ...(props.id && { for: props.id }), - }, - { - default: () => (slots.label && slots.label()) || props.label, - }, - ) - : h( - CFormLabel, - { class: 'form-check-label', ...(props.id && { for: props.id }) }, - { - default: () => (slots.label && slots.label()) || props.label, - }, - ) - - const formValidation = () => { - return h(CFormControlValidation, { - describedby: attrs['aria-describedby'] as string, - feedback: props.feedback, - feedbackInvalid: props.feedbackInvalid, - feedbackValid: props.feedbackValid, - invalid: props.invalid, - tooltipFeedback: props.tooltipFeedback, - valid: props.valid, - }) - } - - return () => - props.button - ? [formControl(), (slots.label || props.label) && formLabel(), formValidation()] - : props.label - ? props.hitArea - ? [ - h( - CFormLabel, - { - customClassName: className, - ...(props.id && { for: props.id }), - }, - [formControl(), props.label], - ), - formValidation(), - ] - : h( - 'div', - { - class: className, - }, - [formControl(), props.label && formLabel(), formValidation()], - ) - : formControl() - }, -}) - -export { CFormCheck } diff --git a/packages/coreui-vue/src/components/form/CFormControlValidation.ts b/packages/coreui-vue/src/components/form/CFormControlValidation.ts deleted file mode 100644 index e8723aa7..00000000 --- a/packages/coreui-vue/src/components/form/CFormControlValidation.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CFormFeedback } from './CFormFeedback' - -const CFormControlValidation = defineComponent({ - name: 'CFormControlValidation', - inheritAttrs: false, - props: { - /** - * @ignore - */ - describedby: String, - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedback: String, - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedbackInvalid: String, - /** - * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - feedbackValid: String, - /** - * Set component validation state to invalid. - */ - invalid: Boolean, - /** - * Display validation feedback in a styled tooltip. - * - * @since 4.3.0 - */ - tooltipFeedback: Boolean, - /** - * Set component validation state to valid. - */ - valid: Boolean, - }, - setup(props, { slots }) { - return () => [ - props.feedback && - (props.valid || props.invalid) && - h( - CFormFeedback, - { - ...(props.invalid && { id: props.describedby }), - invalid: props.invalid, - tooltip: props.tooltipFeedback, - valid: props.valid, - }, - { - default: () => (slots.feedback && slots.feedback()) || props.feedback, - }, - ), - (props.feedbackInvalid || slots.feedbackInvalid) && - h( - CFormFeedback, - { - id: props.describedby, - invalid: true, - tooltip: props.tooltipFeedback, - }, - { - default: () => - (slots.feedbackInvalid && slots.feedbackInvalid()) || props.feedbackInvalid, - }, - ), - (props.feedbackValid || slots.feedbackValid) && - h( - CFormFeedback, - { - tooltip: props.tooltipFeedback, - valid: true, - }, - { - default: () => (slots.feedbackValid && slots.feedbackValid()) || props.feedbackValid, - }, - ), - ] - }, -}) - -export { CFormControlValidation } diff --git a/packages/coreui-vue/src/components/form/CFormControlWrapper.ts b/packages/coreui-vue/src/components/form/CFormControlWrapper.ts deleted file mode 100644 index bdecc2ff..00000000 --- a/packages/coreui-vue/src/components/form/CFormControlWrapper.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CFormControlValidation } from './CFormControlValidation' -import { CFormFloating } from './CFormFloating' -import { CFormLabel } from './CFormLabel' -import { CFormText } from './CFormText' - -import type { ComponentProps } from '../../utils/ComponentProps' - -interface CFormControlWrapperProps extends ComponentProps { - floatingLabel?: string - id?: string - label?: string - text?: string -} - -const CFormControlWrapper = defineComponent({ - name: 'CFormControlWrapper', - inheritAttrs: false, - props: { - ...CFormControlValidation.props, - /** - * Provide valuable, actionable valid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - floatingLabel: String, - /** - * @ignore - */ - id: { - type: String, - }, - /** - * Add a caption for a component. - * - * @since 4.3.0 - */ - label: String, - /** - * Add helper text to the component. - * - * @since 4.3.0 - */ - text: String, - }, - setup(props: CFormControlWrapperProps, { slots }) { - const formControlValidation = () => - h( - CFormControlValidation, - { - describedby: props.describedby, - feedback: props.feedback, - feedbackInvalid: props.feedbackInvalid, - feedbackValid: props.feedbackValid, - invalid: props.invalid, - tooltipFeedback: props.tooltipFeedback, - valid: props.valid, - }, - { - ...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }), - ...(slots.feedbackInvalid && { - feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(), - }), - ...(slots.feedbackValid && { - feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(), - }), - }, - ) - - return () => - props.floatingLabel - ? h(CFormFloating, () => [ - slots.default && slots.default(), - h( - CFormLabel, - { - for: props.id, - }, - { - default: () => (slots.label && slots.label()) || props.label || props.floatingLabel, - }, - ), - (props.text || slots.text) && - h( - CFormText, - { - id: props.describedby, - }, - { - default: () => (slots.text && slots.text()) || props.text, - }, - ), - formControlValidation(), - ]) - : [ - (props.label || slots.label) && - h( - CFormLabel, - { - for: props.id, - }, - { - default: () => (slots.label && slots.label()) || props.label, - }, - ), - slots.default && slots.default(), - (props.text || slots.text) && - h( - CFormText, - { - id: props.describedby, - }, - { - default: () => (slots.text && slots.text()) || props.text, - }, - ), - formControlValidation(), - ] - }, -}) - -export { CFormControlWrapper } diff --git a/packages/coreui-vue/src/components/form/CFormFeedback.ts b/packages/coreui-vue/src/components/form/CFormFeedback.ts deleted file mode 100644 index df4d496e..00000000 --- a/packages/coreui-vue/src/components/form/CFormFeedback.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CFormFeedback = defineComponent({ - name: 'CFormFeedback', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'div', - }, - /** - * Method called immediately after the `value` prop changes. - */ - invalid: Boolean, - /** - * If your form layout allows it, you can display validation feedback in a styled tooltip. - */ - tooltip: Boolean, - /** - * Set component validation state to valid. - */ - valid: Boolean, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: [ - { - [`invalid-${props.tooltip ? 'tooltip' : 'feedback'}`]: props.invalid, - [`valid-${props.tooltip ? 'tooltip' : 'feedback'}`]: props.valid, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CFormFeedback } diff --git a/packages/coreui-vue/src/components/form/CFormFloating.ts b/packages/coreui-vue/src/components/form/CFormFloating.ts deleted file mode 100644 index 53b71a60..00000000 --- a/packages/coreui-vue/src/components/form/CFormFloating.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CFormFloating = defineComponent({ - name: 'CFormFloating', - setup(_, { slots }) { - return () => - h( - 'div', - { - class: 'form-floating', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CFormFloating } diff --git a/packages/coreui-vue/src/components/form/CFormInput.ts b/packages/coreui-vue/src/components/form/CFormInput.ts deleted file mode 100644 index 8dbe4eca..00000000 --- a/packages/coreui-vue/src/components/form/CFormInput.ts +++ /dev/null @@ -1,187 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CFormControlWrapper } from './CFormControlWrapper' - -export const File = typeof window === 'undefined' ? class File extends Object {} : window.File - -const CFormInput = defineComponent({ - name: 'CFormInput', - props: { - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - - // Inherited Props from CFormControlWrapper - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedback: String, - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedbackInvalid: String, - /** - * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - feedbackValid: String, - /** - * Provide valuable, actionable valid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - floatingLabel: String, - /** - * The id global attribute defines an identifier (ID) that must be unique in the whole document. - */ - id: String, - /** - * Set component validation state to invalid. - */ - invalid: Boolean, - /** - * Add a caption for a component. - * - * @since 4.3.0 - */ - label: String, - /** - * The default name for a value passed using v-model. - */ - modelValue: [File, Number, String], - /** - * Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use only along side `readonly`. - */ - plainText: Boolean, - /** - * Toggle the readonly state for the component. - */ - readonly: Boolean, - /** - * Size the component small or large. - * - * @values 'sm' | 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg'].includes(value) - }, - }, - /** - * Add helper text to the component. - * - * @since 4.3.0 - */ - text: String, - /** - * Display validation feedback in a styled tooltip. - * - * @since 4.3.0 - */ - tooltipFeedback: Boolean, - /** - * Specifies the type of component. - * - * @values 'color' | 'file' | 'text' | string - */ - type: { - type: String, - default: 'text', - }, - /** - * Set component validation state to valid. - */ - valid: Boolean, - }, - emits: [ - /** - * Event occurs when the element loses focus, after the content has been changed. - */ - 'change', - /** - * Event occurs immediately after the value of a component has changed. - */ - 'input', - /** - * Emit the new value whenever there’s an input or change event. - */ - 'update:modelValue', - ], - setup(props, { attrs, emit, slots }) { - const handleChange = (event: InputEvent) => { - const target = event.target as HTMLInputElement - emit('change', event) - emit('update:modelValue', target.value) - } - - const handleInput = (event: InputEvent) => { - const target = event.target as HTMLInputElement - emit('input', event) - emit('update:modelValue', target.value) - } - - return () => - h( - CFormControlWrapper, - { - ...(typeof attrs['aria-describedby'] === 'string' && { - describedby: attrs['aria-describedby'], - }), - feedback: props.feedback, - feedbackInvalid: props.feedbackInvalid, - feedbackValid: props.feedbackValid, - floatingLabel: props.floatingLabel, - id: props.id, - invalid: props.invalid, - label: props.label, - text: props.text, - tooltipFeedback: props.tooltipFeedback, - valid: props.valid, - }, - { - default: () => - h( - 'input', - { - id: props.id, - ...attrs, - class: [ - props.plainText ? 'form-control-plaintext' : 'form-control', - { - 'form-control-color': props.type === 'color', - [`form-control-${props.size}`]: props.size, - 'is-invalid': props.invalid, - 'is-valid': props.valid, - }, - attrs.class, - ], - disabled: props.disabled, - onChange: (event: InputEvent) => handleChange(event), - onInput: (event: InputEvent) => handleInput(event), - readonly: props.readonly, - type: props.type, - ...((props.modelValue || props.modelValue === 0) && { value: props.modelValue }), - }, - slots.default && slots.default(), - ), - ...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }), - ...(slots.feedbackInvalid && { - feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(), - }), - ...(slots.feedbackValid && { - feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(), - }), - ...(slots.label && { label: () => slots.label && slots.label() }), - ...(slots.text && { text: () => slots.text && slots.text() }), - }, - ) - }, -}) - -export { CFormInput } diff --git a/packages/coreui-vue/src/components/form/CFormLabel.ts b/packages/coreui-vue/src/components/form/CFormLabel.ts deleted file mode 100644 index 4b98127c..00000000 --- a/packages/coreui-vue/src/components/form/CFormLabel.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CFormLabel = defineComponent({ - name: 'CFormLabel', - props: { - /** - * A string of all className you want to be applied to the component, and override standard className value. - */ - customClassName: [Array, String], - }, - setup(props, { slots }) { - return () => - h( - 'label', - { - class: props.customClassName ?? 'form-label', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CFormLabel } diff --git a/packages/coreui-vue/src/components/form/CFormRange.ts b/packages/coreui-vue/src/components/form/CFormRange.ts deleted file mode 100644 index fcefa832..00000000 --- a/packages/coreui-vue/src/components/form/CFormRange.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CFormLabel } from './CFormLabel' - -const CFormRange = defineComponent({ - name: 'CFormRange', - props: { - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * Add a caption for a component. - * - * @since 4.3.0 - */ - label: String, - /** - * Specifies the maximum value for the component. - */ - max: Number, - /** - * Specifies the minimum value for the component. - */ - min: Number, - /** - * The default name for a value passed using v-model. - */ - modelValue: String, - /** - * Toggle the readonly state for the component. - */ - readonly: Boolean, - /** - * Specifies the interval between legal numbers in the component. - */ - steps: Number, - /** - * The `value` attribute of component. - * - * @controllable onChange - * */ - value: Number, - }, - emits: [ - /** - * Event occurs when the value has been changed. - */ - 'change', - /** - * Emit the new value whenever there’s a change event. - */ - 'update:modelValue', - ], - setup(props, { attrs, emit, slots }) { - const handleChange = (event: InputEvent) => { - const target = event.target as HTMLInputElement - emit('change', event) - emit('update:modelValue', target.value) - } - - return () => [ - props.label && - h( - CFormLabel, - { - for: attrs.id, - }, - { - default: () => (slots.label && slots.label()) || props.label, - }, - ), - h( - 'input', - { - ...attrs, - class: 'form-range', - disabled: props.disabled, - max: props.max, - min: props.min, - onChange: (event: InputEvent) => handleChange(event), - readonly: props.readonly, - steps: props.steps, - type: 'range', - value: props.modelValue, - }, - slots.default && slots.default(), - ), - ] - }, -}) - -export { CFormRange } diff --git a/packages/coreui-vue/src/components/form/CFormSelect.ts b/packages/coreui-vue/src/components/form/CFormSelect.ts deleted file mode 100644 index 23bd7b1b..00000000 --- a/packages/coreui-vue/src/components/form/CFormSelect.ts +++ /dev/null @@ -1,192 +0,0 @@ -import { defineComponent, h, PropType } from 'vue' -import { CFormControlWrapper } from './CFormControlWrapper' - -type Option = { - disabled?: boolean - label?: string - selected?: boolean - value?: string -} - -const CFormSelect = defineComponent({ - name: 'CFormSelect', - props: { - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedback: String, - /** - * Provide valuable, actionable feedback. - * - * @since 4.3.0 - */ - feedbackInvalid: String, - /** - * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - feedbackValid: String, - /** - * Provide valuable, actionable valid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`. - * - * @since 4.3.0 - */ - floatingLabel: String, - /** - * Specifies the number of visible options in a drop-down list. - */ - htmlSize: Number, - /** - * The id global attribute defines an identifier (ID) that must be unique in the whole document. - */ - id: String, - /** - * Set component validation state to invalid. - */ - invalid: Boolean, - /** - * Add a caption for a component. - * - * @since 4.3.0 - */ - label: String, - /** - * The default name for a value passed using v-model. - */ - modelValue: { - type: [String, Array] as PropType, - }, - multiple: Boolean, - /** - * Options list of the select component. Available keys: `label`, `value`, `disabled`. - * Examples: - * - `:options="[{ value: 'js', label: 'JavaScript' }, { value: 'html', label: 'HTML', disabled: true }]"` - * - `:options="['js', 'html']"` - */ - options: Array as PropType, - /** - * Size the component small or large. - * - * @values 'sm' | 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg'].includes(value) - }, - }, - /** - * Add helper text to the component. - * - * @since 4.3.0 - */ - text: String, - /** - * Display validation feedback in a styled tooltip. - * - * @since 4.3.0 - */ - tooltipFeedback: Boolean, - /** - * Set component validation state to valid. - */ - valid: Boolean, - }, - emits: [ - /** - * Event occurs when when a user changes the selected option of a ` -" -`; - -exports[`Customize with label in slot - CFormCheck component renders correctly 1`] = ` -" -" -`; - -exports[`Loads and display CFormCheck component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFeedback.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFeedback.spec.ts.snap deleted file mode 100644 index 94a0f78d..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFeedback.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize (two) CFormFeedback component renders correctly 1`] = `"

Default slot

"`; - -exports[`Customize CFormFeedback component renders correctly 1`] = `"

Default slot

"`; - -exports[`Loads and display CFormFeedback component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFloating.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFloating.spec.ts.snap deleted file mode 100644 index 8011db77..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFloating.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CFormFloating component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormInput.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormInput.spec.ts.snap deleted file mode 100644 index 2e7649fe..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormInput.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize (two) CFormInput component renders correctly 1`] = `""`; - -exports[`Customize CFormInput component renders correctly 1`] = `""`; - -exports[`Loads and display CFormInput component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormLabel.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormLabel.spec.ts.snap deleted file mode 100644 index 4bd5e697..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormLabel.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFormLabel component renders correctly 1`] = `""`; - -exports[`Loads and display CFormLabel component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap deleted file mode 100644 index 3af8cac0..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFormRange component renders correctly 1`] = `""`; - -exports[`Loads and display CFormRange component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSelect.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSelect.spec.ts.snap deleted file mode 100644 index d6dc9c70..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSelect.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFormSelect component renders correctly 1`] = `""`; - -exports[`Loads and display CFormSelect component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSwitch.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSwitch.spec.ts.snap deleted file mode 100644 index 2a1c6bbd..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSwitch.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFormSwitch component renders correctly 1`] = `"
"`; - -exports[`Loads and display CFormSwitch component renders correctly 1`] = ` -"
- -
" -`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormText.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormText.spec.ts.snap deleted file mode 100644 index f2b0b034..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormText.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFormText component renders correctly 1`] = `"

Default slot

"`; - -exports[`Loads and display CFormText component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormTextarea.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormTextarea.spec.ts.snap deleted file mode 100644 index a797c34d..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormTextarea.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CFormTextarea component renders correctly 1`] = `""`; - -exports[`Loads and display CFormTextarea component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroup.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroup.spec.ts.snap deleted file mode 100644 index a6f5d78b..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroup.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CInputGroup component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CInputGroup component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroupText.spec.ts.snap b/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroupText.spec.ts.snap deleted file mode 100644 index 37737ec9..00000000 --- a/packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroupText.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CInputGroupText component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CInputGroupText component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/form/index.ts b/packages/coreui-vue/src/components/form/index.ts deleted file mode 100644 index 6fa6fb5c..00000000 --- a/packages/coreui-vue/src/components/form/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { App } from 'vue' -import { CForm } from './CForm' -import { CFormCheck } from './CFormCheck' -import { CFormFeedback } from './CFormFeedback' -import { CFormFloating } from './CFormFloating' -import { CFormInput } from './CFormInput' -import { CFormLabel } from './CFormLabel' -import { CFormRange } from './CFormRange' -import { CFormSelect } from './CFormSelect' -import { CFormSwitch } from './CFormSwitch' -import { CFormText } from './CFormText' -import { CFormTextarea } from './CFormTextarea' -import { CInputGroup } from './CInputGroup' -import { CInputGroupText } from './CInputGroupText' - -const CFormPlugin = { - install: (app: App): void => { - app.component(CForm.name as string, CForm) - app.component(CFormCheck.name as string, CFormCheck) - app.component(CFormFeedback.name as string, CFormFeedback) - app.component(CFormFloating.name as string, CFormFloating) - app.component(CFormInput.name as string, CFormInput) - app.component(CFormLabel.name as string, CFormLabel) - app.component(CFormRange.name as string, CFormRange) - app.component(CFormSelect.name as string, CFormSelect) - app.component(CFormSwitch.name as string, CFormSwitch) - app.component(CFormText.name as string, CFormText) - app.component(CFormTextarea.name as string, CFormTextarea) - app.component(CInputGroup.name as string, CInputGroup) - app.component(CInputGroupText.name as string, CInputGroupText) - }, -} - -export { - CFormPlugin, - CForm, - CFormCheck, - CFormFeedback, - CFormFloating, - CFormInput, - CFormLabel, - CFormRange, - CFormSelect, - CFormSwitch, - CFormText, - CFormTextarea, - CInputGroup, - CInputGroupText, -} diff --git a/packages/coreui-vue/src/components/grid/CCol.ts b/packages/coreui-vue/src/components/grid/CCol.ts deleted file mode 100644 index d630b9b2..00000000 --- a/packages/coreui-vue/src/components/grid/CCol.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { defineComponent, h, PropType } from 'vue' - -type Span = 'auto' | number | string | boolean | null - -type BPObject = { - span?: Span - offset?: number | string | null - order?: 'first' | 'last' | number | string | null -} - -type Col = Span | BPObject - -const BREAKPOINTS = [ - 'xxl' as const, - 'xl' as const, - 'lg' as const, - 'md' as const, - 'sm' as const, - 'xs' as const, -] - -const CCol = defineComponent({ - name: 'CCol', - props: { - /** - * The number of columns/offset/order on extra small devices (<576px). - * - * @values 'auto' | number | string | boolean | { span: 'auto' | number | string | boolean } | { offset: number | string } | { order: 'first' | 'last' | number | string } - */ - xs: { - type: [Boolean, Number, String, Object] as PropType, - }, - /** - * The number of columns/offset/order on small devices (<768px). - * - * @values 'auto' | number | string | boolean | { span: 'auto' | number | string | boolean } | { offset: number | string } | { order: 'first' | 'last' | number | string } - */ - sm: { - type: [Boolean, Number, String, Object] as PropType, - }, - /** - * The number of columns/offset/order on medium devices (<992px). - * - * @values 'auto' | number | string | boolean | { span: 'auto' | number | string | boolean } | { offset: number | string } | { order: 'first' | 'last' | number | string } - */ - md: { - type: [Boolean, Number, String, Object] as PropType, - }, - /** - * The number of columns/offset/order on large devices (<1200px). - * - * @values 'auto' | number | string | boolean | { span: 'auto' | number | string | boolean } | { offset: number | string } | { order: 'first' | 'last' | number | string } - */ - lg: { - type: [Boolean, Number, String, Object] as PropType, - }, - /** - * The number of columns/offset/order on X-Large devices (<1400px). - * - * @values 'auto' | number | string | boolean | { span: 'auto' | number | string | boolean } | { offset: number | string } | { order: 'first' | 'last' | number | string } - */ - xl: { - type: [Boolean, Number, String, Object] as PropType, - }, - /** - * The number of columns/offset/order on XX-Large devices (≥1400px). - * - * @values 'auto' | number | string | boolean | { span: 'auto' | number | string | boolean } | { offset: number | string } | { order: 'first' | 'last' | number | string } - */ - xxl: { - type: [Boolean, Number, String, Object] as PropType, - }, - }, - setup(props, { slots }) { - const repsonsiveClassNames: string[] = [] - - BREAKPOINTS.forEach((bp) => { - const breakpoint = props[bp] - - const infix = bp === 'xs' ? '' : `-${bp}` - - if (breakpoint) { - if (typeof breakpoint === 'number' || typeof breakpoint === 'string') { - repsonsiveClassNames.push(`col${infix}-${breakpoint}`) - } - - if (typeof breakpoint === 'boolean') { - repsonsiveClassNames.push(`col${infix}`) - } - } - - if (breakpoint && typeof breakpoint === 'object') { - if (typeof breakpoint.span === 'number' || typeof breakpoint.span === 'string') { - repsonsiveClassNames.push(`col${infix}-${breakpoint.span}`) - } - - if (typeof breakpoint.span === 'boolean') { - repsonsiveClassNames.push(`col${infix}`) - } - - if (typeof breakpoint.order === 'number' || typeof breakpoint.order === 'string') { - repsonsiveClassNames.push(`order${infix}-${breakpoint.order}`) - } - - if (typeof breakpoint.offset === 'number') { - repsonsiveClassNames.push(`offset${infix}-${breakpoint.offset}`) - } - } - }) - - return () => - h( - 'div', - { - class: [repsonsiveClassNames.length > 0 ? repsonsiveClassNames : 'col'], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CCol } diff --git a/packages/coreui-vue/src/components/grid/CContainer.ts b/packages/coreui-vue/src/components/grid/CContainer.ts deleted file mode 100644 index 77f7a4f2..00000000 --- a/packages/coreui-vue/src/components/grid/CContainer.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { defineComponent, h } from 'vue' - -const BREAKPOINTS = [ - 'xxl' as const, - 'xl' as const, - 'lg' as const, - 'md' as const, - 'sm' as const, - 'fluid' as const, -] - -const CContainer = defineComponent({ - name: 'CContainer', - props: { - /** - * Set container 100% wide until small breakpoint. - */ - sm: Boolean, - /** - * Set container 100% wide until medium breakpoint. - */ - md: Boolean, - /** - * Set container 100% wide until large breakpoint. - */ - lg: Boolean, - /** - * Set container 100% wide until X-large breakpoint. - */ - xl: Boolean, - /** - * Set container 100% wide until XX-large breakpoint. - */ - xxl: Boolean, - /** - * Set container 100% wide, spanning the entire width of the viewport. - */ - fluid: Boolean, - }, - setup(props, { slots }) { - const repsonsiveClassNames: string[] = [] - - BREAKPOINTS.forEach((bp) => { - const breakpoint = props[bp] - - breakpoint && repsonsiveClassNames.push(`container-${bp}`) - }) - return () => - h( - 'div', - { - class: [repsonsiveClassNames.length > 0 ? repsonsiveClassNames : 'container'], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CContainer } diff --git a/packages/coreui-vue/src/components/grid/CRow.ts b/packages/coreui-vue/src/components/grid/CRow.ts deleted file mode 100644 index 4501cffd..00000000 --- a/packages/coreui-vue/src/components/grid/CRow.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { defineComponent, h } from 'vue' - -export type BPObject = { - cols?: 'auto' | number | string | null - gutter?: number | string | null - gutterX?: number | string | null - gutterY?: number | string | null -} - -const BREAKPOINTS = [ - 'xxl' as const, - 'xl' as const, - 'lg' as const, - 'md' as const, - 'sm' as const, - 'xs' as const, -] - -const CRow = defineComponent({ - name: 'CRow', - props: { - /** - * The number of columns/offset/order on extra small devices (<576px). - * - * @values { cols: 'auto' | number | string } | { gutter: number | string } | { gutterX: number | string } | { gutterY: number | string } - */ - xs: Object as () => BPObject, - /** - * The number of columns/offset/order on small devices (<768px). - * - * @values { cols: 'auto' | number | string } | { gutter: number | string } | { gutterX: number | string } | { gutterY: number | string } - */ - sm: Object as () => BPObject, - /** - * The number of columns/offset/order on medium devices (<992px). - * - * @values { cols: 'auto' | number | string } | { gutter: number | string } | { gutterX: number | string } | { gutterY: number | string } - */ - md: Object as () => BPObject, - /** - * The number of columns/offset/order on large devices (<1200px). - * - * @values { cols: 'auto' | number | string } | { gutter: number | string } | { gutterX: number | string } | { gutterY: number | string } - */ - lg: Object as () => BPObject, - /** - * The number of columns/offset/order on X-Large devices (<1400px). - * - * @values { cols: 'auto' | number | string } | { gutter: number | string } | { gutterX: number | string } | { gutterY: number | string } - */ - xl: Object as () => BPObject, - /** - * The number of columns/offset/order on XX-Large devices (≥1400px). - * - * @values { cols: 'auto' | number | string } | { gutter: number | string } | { gutterX: number | string } | { gutterY: number | string } - */ - xxl: Object as () => BPObject, - }, - setup(props, { slots }) { - const repsonsiveClassNames: string[] = [] - - BREAKPOINTS.forEach((bp) => { - const breakpoint = props[bp] - const infix = bp === 'xs' ? '' : `-${bp}` - - if (typeof breakpoint === 'object') { - if (breakpoint.cols) { - repsonsiveClassNames.push(`row-cols${infix}-${breakpoint.cols}`) - } - if (typeof breakpoint.gutter === 'number') { - repsonsiveClassNames.push(`g${infix}-${breakpoint.gutter}`) - } - if (typeof breakpoint.gutterX === 'number') { - repsonsiveClassNames.push(`gx${infix}-${breakpoint.gutterX}`) - } - if (typeof breakpoint.gutterY === 'number') { - repsonsiveClassNames.push(`gy${infix}-${breakpoint.gutterY}`) - } - } - }) - - return () => - h( - 'div', - { - class: ['row', repsonsiveClassNames], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CRow } diff --git a/packages/coreui-vue/src/components/grid/__tests__/CCol.spec.ts b/packages/coreui-vue/src/components/grid/__tests__/CCol.spec.ts deleted file mode 100644 index 6166cb4f..00000000 --- a/packages/coreui-vue/src/components/grid/__tests__/CCol.spec.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CCol as Component } from '../../../index' - -const ComponentName = 'CCol' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - md: { - span: 'auto', - offset: 3, - order: 'last', - }, - lg: 4, - xl: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('col')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('col-md-auto')).toBe(true) - expect(customWrapper.classes('offset-md-3')).toBe(true) - expect(customWrapper.classes('order-md-last')).toBe(true) - expect(customWrapper.classes('col-lg-4')).toBe(true) - expect(customWrapper.classes('col-xl')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/grid/__tests__/CContainer.spec.ts b/packages/coreui-vue/src/components/grid/__tests__/CContainer.spec.ts deleted file mode 100644 index 8d220fc9..00000000 --- a/packages/coreui-vue/src/components/grid/__tests__/CContainer.spec.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CContainer as Component } from '../../../index' - -const ComponentName = 'CContainer' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - md: true, - xl: true, - fluid: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('container')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('container-md')).toBe(true) - expect(customWrapper.classes('container-xl')).toBe(true) - expect(customWrapper.classes('container-fluid')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/grid/__tests__/CRow.spec.ts b/packages/coreui-vue/src/components/grid/__tests__/CRow.spec.ts deleted file mode 100644 index 9658ab3e..00000000 --- a/packages/coreui-vue/src/components/grid/__tests__/CRow.spec.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CRow as Component } from '../../../index' - -const ComponentName = 'CRow' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - md: { - cols: 4, - gutter: 10, - gutterX: 11, - gutterY: 12, - }, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('row')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('row')).toBe(true) - expect(customWrapper.classes('row-cols-md-4')).toBe(true) - expect(customWrapper.classes('g-md-10')).toBe(true) - expect(customWrapper.classes('gx-md-11')).toBe(true) - expect(customWrapper.classes('gy-md-12')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CCol.spec.ts.snap b/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CCol.spec.ts.snap deleted file mode 100644 index 60bb0dec..00000000 --- a/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CCol.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CCol component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CCol component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CContainer.spec.ts.snap b/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CContainer.spec.ts.snap deleted file mode 100644 index 15d92143..00000000 --- a/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CContainer.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CContainer component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CContainer component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CRow.spec.ts.snap b/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CRow.spec.ts.snap deleted file mode 100644 index 686e7491..00000000 --- a/packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CRow.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CRow component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CRow component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/grid/index.ts b/packages/coreui-vue/src/components/grid/index.ts deleted file mode 100644 index 785efaac..00000000 --- a/packages/coreui-vue/src/components/grid/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { App } from 'vue' -import { CCol } from './CCol' -import { CContainer } from './CContainer' -import { CRow } from './CRow' - -const CGridPlugin = { - install: (app: App): void => { - app.component(CCol.name as string, CCol) - app.component(CContainer.name as string, CContainer) - app.component(CRow.name as string, CRow) - }, -} -export { CGridPlugin, CCol, CContainer, CRow } diff --git a/packages/coreui-vue/src/components/header/CHeader.ts b/packages/coreui-vue/src/components/header/CHeader.ts deleted file mode 100644 index d1c23b45..00000000 --- a/packages/coreui-vue/src/components/header/CHeader.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CHeader = defineComponent({ - name: 'CHeader', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'div', - }, - /** - * Defines optional container wrapping children elements. - * - * @values boolean, 'sm', 'md', 'lg', 'xl', 'xxl', 'fluid' - */ - container: { - type: [Boolean, String], - validator: (value: boolean | string) => { - return ( - typeof value === 'boolean' || ['sm', 'md', 'lg', 'xl', 'xxl', 'fluid'].includes(value) - ) - }, - }, - /** - * Place header in non-static positions. - * - * @values 'fixed', 'sticky' - */ - position: { - type: String, - validator: (value: string) => { - return ['fixed', 'sticky'].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { class: ['header', { [`header-${props.position}`]: props.position }] }, - props.container - ? h( - 'div', - { class: `container${props.container === true ? '' : '-' + props.container}` }, - slots.default && slots.default(), - ) - : slots.default && slots.default(), - ) - }, -}) - -export { CHeader } diff --git a/packages/coreui-vue/src/components/header/CHeaderBrand.ts b/packages/coreui-vue/src/components/header/CHeaderBrand.ts deleted file mode 100644 index 3f94fb86..00000000 --- a/packages/coreui-vue/src/components/header/CHeaderBrand.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CHeaderBrand = defineComponent({ - name: 'CHeaderBrand', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'a', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'header-brand' }, slots.default && slots.default()) - }, -}) - -export { CHeaderBrand } diff --git a/packages/coreui-vue/src/components/header/CHeaderDivider.ts b/packages/coreui-vue/src/components/header/CHeaderDivider.ts deleted file mode 100644 index 43e47645..00000000 --- a/packages/coreui-vue/src/components/header/CHeaderDivider.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CHeaderDivider = defineComponent({ - name: 'CHeaderDivider', - setup(_, { slots }) { - return () => h('div', { class: 'header-divider' }, slots.default && slots.default()) - }, -}) - -export { CHeaderDivider } diff --git a/packages/coreui-vue/src/components/header/CHeaderNav.ts b/packages/coreui-vue/src/components/header/CHeaderNav.ts deleted file mode 100644 index e34277e0..00000000 --- a/packages/coreui-vue/src/components/header/CHeaderNav.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CHeaderNav = defineComponent({ - name: 'CHeaderNav', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'ul', - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: 'header-nav', - role: 'navigation', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CHeaderNav } diff --git a/packages/coreui-vue/src/components/header/CHeaderText.ts b/packages/coreui-vue/src/components/header/CHeaderText.ts deleted file mode 100644 index 8da7dd4f..00000000 --- a/packages/coreui-vue/src/components/header/CHeaderText.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CHeaderText = defineComponent({ - name: 'CHeaderText', - setup(_, { slots }) { - return () => h('span', { class: 'header-text' }, slots.default && slots.default()) - }, -}) - -export { CHeaderText } diff --git a/packages/coreui-vue/src/components/header/CHeaderToggler.ts b/packages/coreui-vue/src/components/header/CHeaderToggler.ts deleted file mode 100644 index 2629e186..00000000 --- a/packages/coreui-vue/src/components/header/CHeaderToggler.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CHeaderToggler = defineComponent({ - name: 'CHeaderToggler', - setup(_, { slots }) { - return () => - h( - 'button', - { - class: 'header-toggler', - type: 'button', - 'aria-label': 'Toggle navigation', - }, - slots.default ? slots.default() : h('span', { class: ['header-toggler-icon'] }), - ) - }, -}) - -export { CHeaderToggler } diff --git a/packages/coreui-vue/src/components/header/__tests__/CHeader.spec.ts b/packages/coreui-vue/src/components/header/__tests__/CHeader.spec.ts deleted file mode 100644 index 09ec0065..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/CHeader.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CHeader as Component } from '../../../index' - -const ComponentName = 'CHeader' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - container: 'lg', - position: 'fixed', - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapperTwo = mount(Component, { - propsData: { - as: 'header', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('header')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('header')).toBe(true) - expect(customWrapper.classes('header-fixed')).toBe(true) - expect(customWrapper.find('.container-lg').classes('container-lg')).toBe(true) - }) -}) - - -describe(`Customize (number two) ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapperTwo.html()).toMatchSnapshot() - }) - it('tag name is custom', () => { - expect(customWrapperTwo.element.tagName).toBe('HEADER') - }) -}) \ No newline at end of file diff --git a/packages/coreui-vue/src/components/header/__tests__/CHeaderBrand.spec.ts b/packages/coreui-vue/src/components/header/__tests__/CHeaderBrand.spec.ts deleted file mode 100644 index 391e1e0d..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/CHeaderBrand.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CHeaderBrand as Component } from '../../../index' - -const ComponentName = 'CHeaderBrand' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('header-brand')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('header-brand')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/header/__tests__/CHeaderDivider.spec.ts b/packages/coreui-vue/src/components/header/__tests__/CHeaderDivider.spec.ts deleted file mode 100644 index 0f6a83c4..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/CHeaderDivider.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CHeaderDivider as Component } from '../../../index' - -const ComponentName = 'CHeaderDivider' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('header-divider')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/header/__tests__/CHeaderNav.spec.ts b/packages/coreui-vue/src/components/header/__tests__/CHeaderNav.spec.ts deleted file mode 100644 index 6564189f..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/CHeaderNav.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CHeaderNav as Component } from '../../../index' - -const ComponentName = 'CHeaderNav' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('header-nav')).toBe(true) - expect(defaultWrapper.attributes('role')).toBe('navigation') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('header-nav')).toBe(true) - expect(customWrapper.attributes('role')).toBe('navigation') - }) -}) diff --git a/packages/coreui-vue/src/components/header/__tests__/CHeaderText.spec.ts b/packages/coreui-vue/src/components/header/__tests__/CHeaderText.spec.ts deleted file mode 100644 index 48638b5b..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/CHeaderText.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CHeaderText as Component } from '../../../index' - -const ComponentName = 'CHeaderText' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('header-text')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/header/__tests__/CHeaderToggler.spec.ts b/packages/coreui-vue/src/components/header/__tests__/CHeaderToggler.spec.ts deleted file mode 100644 index 35c6f4bf..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/CHeaderToggler.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CHeaderToggler as Component } from '../../../index' - -const ComponentName = 'CHeaderToggler' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('header-toggler')).toBe(true) - expect(defaultWrapper.attributes('type')).toBe('button') - expect(defaultWrapper.attributes('aria-label')).toBe('Toggle navigation') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('header-toggler')).toBe(true) - expect(customWrapper.attributes('type')).toBe('button') - expect(customWrapper.attributes('aria-label')).toBe('Toggle navigation') - expect(customWrapper.find('span').classes('header-toggler-icon')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeader.spec.ts.snap b/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeader.spec.ts.snap deleted file mode 100644 index 565c875c..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeader.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CHeader component renders correctly 1`] = ` -"
-
Default slot
-
" -`; - -exports[`Loads and display CHeader component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderBrand.spec.ts.snap b/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderBrand.spec.ts.snap deleted file mode 100644 index a2b61995..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderBrand.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CHeaderBrand component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CHeaderBrand component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderDivider.spec.ts.snap b/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderDivider.spec.ts.snap deleted file mode 100644 index 36376c1f..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderDivider.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CHeaderDivider component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderNav.spec.ts.snap b/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderNav.spec.ts.snap deleted file mode 100644 index 0e33b9b4..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderNav.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CHeaderNav component renders correctly 1`] = `""`; - -exports[`Loads and display CHeaderNav component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderText.spec.ts.snap b/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderText.spec.ts.snap deleted file mode 100644 index c9a6a8f4..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderText.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CHeaderText component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderToggler.spec.ts.snap b/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderToggler.spec.ts.snap deleted file mode 100644 index c0da6cf0..00000000 --- a/packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderToggler.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CHeaderToggler component renders correctly 1`] = `""`; - -exports[`Loads and display CHeaderToggler component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/header/index.ts b/packages/coreui-vue/src/components/header/index.ts deleted file mode 100644 index 85c25975..00000000 --- a/packages/coreui-vue/src/components/header/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { App } from 'vue' -import { CHeader } from './CHeader' -import { CHeaderBrand } from './CHeaderBrand' -import { CHeaderDivider } from './CHeaderDivider' -import { CHeaderNav } from './CHeaderNav' -import { CHeaderText } from './CHeaderText' -import { CHeaderToggler } from './CHeaderToggler' - -const CHeaderPlugin = { - install: (app: App): void => { - app.component(CHeader.name as string, CHeader) - app.component(CHeaderBrand.name as string, CHeaderBrand) - app.component(CHeaderDivider.name as string, CHeaderDivider) - app.component(CHeaderNav.name as string, CHeaderNav) - app.component(CHeaderText.name as string, CHeaderText) - app.component(CHeaderToggler.name as string, CHeaderToggler) - }, -} - -export { - CHeaderPlugin, - CHeader, - CHeaderBrand, - CHeaderDivider, - CHeaderNav, - CHeaderText, - CHeaderToggler, -} diff --git a/packages/coreui-vue/src/components/image/CImage.ts b/packages/coreui-vue/src/components/image/CImage.ts deleted file mode 100644 index 9d122ee3..00000000 --- a/packages/coreui-vue/src/components/image/CImage.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CImage = defineComponent({ - name: 'CImage', - props: { - /** - * Set the horizontal aligment. - * - * @values 'start', 'center', 'end' - */ - align: { - type: String, - validator: (value: string) => { - return ['start', 'center', 'end'].includes(value) - }, - }, - /** - * Make image responsive. - */ - fluid: Boolean, - /** - * Make image rounded. - */ - rounded: Boolean, - /** - * Give an image a rounded 1px border appearance. - */ - thumbnail: Boolean, - }, - setup(props) { - return () => - h('img', { - class: [ - { - [`float-${props.align}`]: - props.align && (props.align === 'start' || props.align === 'end'), - 'd-block mx-auto': props.align && props.align === 'center', - 'img-fluid': props.fluid, - rounded: props.rounded, - 'img-thumbnail': props.thumbnail, - }, - ], - }) - }, -}) -export { CImage } diff --git a/packages/coreui-vue/src/components/image/__tests__/CImage.spec.ts b/packages/coreui-vue/src/components/image/__tests__/CImage.spec.ts deleted file mode 100644 index c7c18545..00000000 --- a/packages/coreui-vue/src/components/image/__tests__/CImage.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CImage as Component } from '../../../index' - -const ComponentName = 'CImage' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -const customWrapper = mount(Component, { - propsData: { - align: 'end', - fluid: true, - rounded: true, - thumbnail: true, - }, - slots: {}, -}) - -const customWrapperTwo = mount(Component, { - propsData: { - align: 'center', - }, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('float-end')).toBe(true) - expect(customWrapper.classes('img-fluid')).toBe(true) - expect(customWrapper.classes('rounded')).toBe(true) - expect(customWrapper.classes('img-thumbnail')).toBe(true) - }) -}) - -describe(`Customize (two) ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapperTwo.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapperTwo.classes('d-block')).toBe(true) - expect(customWrapperTwo.classes('mx-auto')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/image/__tests__/__snapshots__/CImage.spec.ts.snap b/packages/coreui-vue/src/components/image/__tests__/__snapshots__/CImage.spec.ts.snap deleted file mode 100644 index 808f6428..00000000 --- a/packages/coreui-vue/src/components/image/__tests__/__snapshots__/CImage.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize (two) CImage component renders correctly 1`] = `""`; - -exports[`Customize CImage component renders correctly 1`] = `""`; - -exports[`Loads and display CImage component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/image/index.ts b/packages/coreui-vue/src/components/image/index.ts deleted file mode 100644 index cd4c69ae..00000000 --- a/packages/coreui-vue/src/components/image/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CImage } from './CImage' - -const CImagePlugin = { - install: (app: App): void => { - app.component(CImage.name as string, CImage) - }, -} - -export { CImagePlugin, CImage } diff --git a/packages/coreui-vue/src/components/index.ts b/packages/coreui-vue/src/components/index.ts deleted file mode 100644 index d11d5eb0..00000000 --- a/packages/coreui-vue/src/components/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -export * from './accordion' -export * from './alert' -export * from './avatar' -export * from './backdrop' -export * from './badge' -export * from './breadcrumb' -export * from './button' -export * from './button-group' -export * from './callout' -export * from './card' -export * from './carousel' -export * from './close-button' -export * from './collapse' -export * from './conditional-teleport' -export * from './dropdown' -export * from './footer' -export * from './form' -export * from './grid' -export * from './header' -export * from './image' -export * from './link' -export * from './list-group' -export * from './modal' -export * from './nav' -export * from './navbar' -export * from './offcanvas' -export * from './pagination' -export * from './placeholder' -export * from './progress' -export * from './popover' -export * from './sidebar' -export * from './spinner' -export * from './table' -export * from './tabs' -export * from './toast' -export * from './tooltip' -export * from './widgets' diff --git a/packages/coreui-vue/src/components/link/CLink.ts b/packages/coreui-vue/src/components/link/CLink.ts deleted file mode 100644 index 78369306..00000000 --- a/packages/coreui-vue/src/components/link/CLink.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CLink = defineComponent({ - name: 'CLink', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'a', - }, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: String, - }, - emits: [ - /** - * Event called when the user clicks on the component. - */ - 'click', - ], - setup(props, { slots, emit }) { - const handleClick = (event: Event) => { - emit('click', props.href) - - if (props.href === '' || props.href === '#') { - event.preventDefault() - } - } - return () => - h( - props.as, - { - class: [{ active: props.active, disabled: props.disabled }], - ...(props.active && { 'aria-current': 'page' }), - ...(props.as === 'a' && props.disabled && { 'aria-disabled': true, tabIndex: -1 }), - ...((props.as === 'a' || props.as === 'button') && { - onClick: handleClick, - }), - href: props.href, - }, - slots.default && slots.default(), - ) - }, -}) - -export { CLink } diff --git a/packages/coreui-vue/src/components/link/__tests__/CLink.spec.ts b/packages/coreui-vue/src/components/link/__tests__/CLink.spec.ts deleted file mode 100644 index 59a21a9c..00000000 --- a/packages/coreui-vue/src/components/link/__tests__/CLink.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CLink as Component } from '../../../index' - -const ComponentName = 'CLink' - -const defaultWrapper = mount(Component, { - propsData: { - disabled: true, - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - as: 'div', - disabled: true, - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.attributes('aria-disabled')).toBe('true') - expect(defaultWrapper.attributes('tabindex')).toBe('-1') - }) - it('emit event on click', () => { - defaultWrapper.trigger('click') - const incrementEvent = defaultWrapper.emitted('click') - expect(incrementEvent).toHaveLength(1) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('disabled')).toBe(true) - expect(customWrapper.attributes('aria-current')).toBe('page') - expect(customWrapper.attributes('href')).toBe('/bazinga') - }) -}) diff --git a/packages/coreui-vue/src/components/link/__tests__/__snapshots__/CLink.spec.ts.snap b/packages/coreui-vue/src/components/link/__tests__/__snapshots__/CLink.spec.ts.snap deleted file mode 100644 index ab1d8241..00000000 --- a/packages/coreui-vue/src/components/link/__tests__/__snapshots__/CLink.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CLink component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CLink component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/link/index.ts b/packages/coreui-vue/src/components/link/index.ts deleted file mode 100644 index 04be72dd..00000000 --- a/packages/coreui-vue/src/components/link/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CLink } from './CLink' - -const CCLinkPlugin = { - install: (app: App): void => { - app.component(CLink.name as string, CLink) - }, -} - -export { CCLinkPlugin, CLink } diff --git a/packages/coreui-vue/src/components/list-group/CListGroup.ts b/packages/coreui-vue/src/components/list-group/CListGroup.ts deleted file mode 100644 index 9a565fe0..00000000 --- a/packages/coreui-vue/src/components/list-group/CListGroup.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CListGroup = defineComponent({ - name: 'CListGroup', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'ul', - }, - /** - * Remove some borders and rounded corners to render list group items edge-to-edge in a parent component (e.g., ``) - */ - flush: Boolean, - /** - * Specify a layout type. - * - * @values 'horizontal', 'horizontal-sm', 'horizontal-md', 'horizontal-lg', 'horizontal-xl', 'horizontal-xxl', - */ - layout: { - type: String, - validator: (value: string) => { - return [ - 'horizontal', - 'horizontal-sm', - 'horizontal-md', - 'horizontal-lg', - 'horizontal-xl', - 'horizontal-xxl', - ].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: [ - 'list-group', - { - 'list-group-flush': props.flush, - [`list-group-${props.layout}`]: props.layout, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CListGroup } diff --git a/packages/coreui-vue/src/components/list-group/CListGroupItem.ts b/packages/coreui-vue/src/components/list-group/CListGroupItem.ts deleted file mode 100644 index 204df42f..00000000 --- a/packages/coreui-vue/src/components/list-group/CListGroupItem.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CListGroupItem = defineComponent({ - name: 'CListGroupItem', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'li', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: [ - 'list-group-item', - { - [`list-group-item-${props.color}`]: props.color, - 'list-group-item-action': props.as === 'a' || props.as === 'button', - [`active`]: props.active, - [`disabled`]: props.disabled, - }, - ], - ...((props.as === 'a' || props.as === 'button') && { - active: props.active, - disabled: props.disabled, - }), - ...(props.active && { 'aria-current': true }), - ...(props.disabled && { 'aria-disabled': true }), - }, - slots.default && slots.default(), - ) - }, -}) - -export { CListGroupItem } diff --git a/packages/coreui-vue/src/components/list-group/__tests__/CListGroup.spec.ts b/packages/coreui-vue/src/components/list-group/__tests__/CListGroup.spec.ts deleted file mode 100644 index f80906c1..00000000 --- a/packages/coreui-vue/src/components/list-group/__tests__/CListGroup.spec.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CListGroup as Component } from '../../../index' - -const ComponentName = 'CListGroup' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - flush: true, - layout: 'horizontal-lg', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('list-group')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('list-group')).toBe(true) - expect(customWrapper.classes('list-group-flush')).toBe(true) - expect(customWrapper.classes('list-group-horizontal-lg')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/list-group/__tests__/CListGroupItem.spec.ts b/packages/coreui-vue/src/components/list-group/__tests__/CListGroupItem.spec.ts deleted file mode 100644 index 763880b5..00000000 --- a/packages/coreui-vue/src/components/list-group/__tests__/CListGroupItem.spec.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CListGroupItem as Component } from '../../../index' - -const ComponentName = 'CListGroupItem' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - as: 'div', - color: 'warning', - disabled: true, - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapperTwo = mount(Component, { - propsData: { - active: true, - as: 'button', - disabled: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('list-group-item')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('list-group-item')).toBe(true) - expect(customWrapper.classes('list-group-item-warning')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('disabled')).toBe(true) - expect(customWrapper.attributes('aria-current')).toBe('true') - expect(customWrapper.attributes('aria-disabled')).toBe('true') - }) -}) - -describe(`Customize (two) ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapperTwo.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapperTwo.text()).toContain('Default slot') - expect(customWrapperTwo.classes('list-group-item')).toBe(true) - expect(customWrapperTwo.classes('list-group-item-action')).toBe(true) - expect(customWrapperTwo.attributes('active')).toBe('true') - expect(customWrapperTwo.attributes('disabled')).toBe('') - }) -}) diff --git a/packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroup.spec.ts.snap b/packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroup.spec.ts.snap deleted file mode 100644 index dca65991..00000000 --- a/packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroup.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CListGroup component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CListGroup component renders correctly 1`] = `"
    Default slot
"`; diff --git a/packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroupItem.spec.ts.snap b/packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroupItem.spec.ts.snap deleted file mode 100644 index 198cf490..00000000 --- a/packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroupItem.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize (two) CListGroupItem component renders correctly 1`] = `""`; - -exports[`Customize CListGroupItem component renders correctly 1`] = `"
Default slot
"`; - -exports[`Loads and display CListGroupItem component renders correctly 1`] = `"
  • Default slot
  • "`; diff --git a/packages/coreui-vue/src/components/list-group/index.ts b/packages/coreui-vue/src/components/list-group/index.ts deleted file mode 100644 index d969a028..00000000 --- a/packages/coreui-vue/src/components/list-group/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { App } from 'vue' -import { CListGroup } from './CListGroup' -import { CListGroupItem } from './CListGroupItem' - -const CListGroupPlugin = { - install: (app: App): void => { - app.component(CListGroup.name as string, CListGroup) - app.component(CListGroupItem.name as string, CListGroupItem) - }, -} - -export { CListGroupPlugin, CListGroup, CListGroupItem } diff --git a/packages/coreui-vue/src/components/modal/CModal.ts b/packages/coreui-vue/src/components/modal/CModal.ts deleted file mode 100644 index e2e1947d..00000000 --- a/packages/coreui-vue/src/components/modal/CModal.ts +++ /dev/null @@ -1,321 +0,0 @@ -import { - defineComponent, - h, - PropType, - provide, - ref, - RendererElement, - Transition, - vShow, - watch, - withDirectives, -} from 'vue' - -import { CBackdrop } from '../backdrop/CBackdrop' -import { CConditionalTeleport } from '../conditional-teleport' - -import { executeAfterTransition } from '../../utils/transition' - -const CModal = defineComponent({ - name: 'CModal', - inheritAttrs: false, - props: { - /** - * Align the modal in the center or top of the screen. - * - * @values 'top', 'center' - */ - alignment: { - default: 'top', - validator: (value: string) => { - return ['top', 'center'].includes(value) - }, - }, - /** - * Apply a backdrop on body while offcanvas is open. - * - * @values boolean | 'static' - */ - backdrop: { - type: [Boolean, String], - default: true, - validator: (value: boolean | string) => { - if (typeof value == 'string') { - return ['static'].includes(value) - } - if (typeof value == 'boolean') { - return true - } - return false - }, - }, - /** - * Appends the vue popover to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`. - * - * @since 5.3.0 - */ - container: { - type: [Object, String] as PropType HTMLElement) | string>, - default: 'body', - }, - /** - * A string of all className you want applied to the modal content component. - */ - contentClassName: String, - /** - * Puts the focus on the modal when shown. - * - * @since 5.0.0 - */ - focus: { - type: Boolean, - default: true, - }, - /** - * Set modal to covers the entire user viewport - * - * @values boolean, 'sm', 'md', 'lg', 'xl', 'xxl' - */ - fullscreen: { - type: [Boolean, String], - validator: (value: boolean | string) => { - if (typeof value == 'string') { - return ['sm', 'md', 'lg', 'xl', 'xxl'].includes(value) - } - if (typeof value == 'boolean') { - return true - } - return false - }, - }, - /** - * Closes the modal when escape key is pressed. - */ - keyboard: { - type: Boolean, - default: true, - }, - /** - * Create a scrollable modal that allows scrolling the modal body. - */ - scrollable: Boolean, - /** - * Size the component small, large, or extra large. - * - * @values 'sm', 'lg', 'xl' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg', 'xl'].includes(value) - }, - }, - /** - * Generates modal using Teleport. - * - * @since 5.3.0 - */ - teleport: { - type: Boolean, - default: false, - }, - /** - * Remove animation to create modal that simply appear rather than fade in to view. - */ - transition: { - type: Boolean, - default: true, - }, - /** - * By default the component is unmounted after close animation, if you want to keep the component mounted set this property to false. - */ - unmountOnClose: { - type: Boolean, - default: true, - }, - /** - * Toggle the visibility of alert component. - */ - visible: Boolean, - }, - emits: [ - /** - * Callback fired when the component requests to be closed. - */ - 'close', - /** - * Callback fired when the component requests to be closed. - */ - 'close-prevented', - /** - * Callback fired when the modal is shown, its backdrop is static and a click outside the modal or an escape key press is performed with the keyboard option set to false. - */ - 'show', - ], - setup(props, { slots, attrs, emit }) { - const activeElementRef = ref() - const modalRef = ref() - const modalContentRef = ref() - const visible = ref(props.visible) - - watch( - () => props.visible, - () => { - visible.value = props.visible - }, - ) - - const handleEnter = (el: RendererElement, done: () => void) => { - activeElementRef.value = document.activeElement as HTMLElement | null - executeAfterTransition(() => done(), el as HTMLElement) - document.body.classList.add('modal-open') - document.body.style.overflow = 'hidden' - document.body.style.paddingRight = '0px' - el.style.display = 'block' - setTimeout(() => { - el.classList.add('show') - }, 1) - emit('show') - } - - const handleAfterEnter = () => { - props.focus && modalRef.value?.focus() - window.addEventListener('mousedown', handleMouseDown) - window.addEventListener('keyup', handleKeyUp) - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleLeave = (el: RendererElement, done: () => void) => { - executeAfterTransition(() => done(), el as HTMLElement) - document.body.classList.remove('modal-open') - document.body.style.removeProperty('overflow') - document.body.style.removeProperty('padding-right') - if (document.body.className === '') { - document.body.removeAttribute('class') - } - - el.classList.remove('show') - } - - const handleAfterLeave = (el: RendererElement) => { - activeElementRef.value?.focus() - window.removeEventListener('mousedown', handleMouseDown) - window.removeEventListener('keyup', handleKeyUp) - el.style.display = 'none' - } - - const handleDismiss = () => { - emit('close') - visible.value = false - } - - const handleKeyUp = (event: KeyboardEvent) => { - if (modalContentRef.value && !modalContentRef.value.contains(event.target as HTMLElement)) { - if (props.backdrop !== 'static' && event.key === 'Escape' && props.keyboard) { - handleDismiss() - } - - if (props.backdrop === 'static') { - modalRef.value.classList.add('modal-static') - emit('close-prevented') - setTimeout(() => { - modalRef.value.classList.remove('modal-static') - }, 300) - } - } - } - - const handleMouseDown = (event: Event) => { - window.addEventListener('mouseup', () => handleMouseUp(event), { once: true }) - } - - const handleMouseUp = (event: Event) => { - if (modalContentRef.value && !modalContentRef.value.contains(event.target as HTMLElement)) { - if (props.backdrop !== 'static') { - handleDismiss() - } - - if (props.backdrop === 'static') { - modalRef.value.classList.add('modal-static') - setTimeout(() => { - modalRef.value.classList.remove('modal-static') - }, 300) - } - } - } - - provide('handleDismiss', handleDismiss) - - const modal = () => - h( - 'div', - { - ...attrs, - class: [ - 'modal', - { - ['fade']: props.transition, - }, - attrs.class, - ], - ...(visible.value ? { 'aria-modal': true, role: 'dialog' } : { 'aria-hidden': 'true' }), - ref: modalRef, - }, - h( - 'div', - { - class: [ - 'modal-dialog', - { - 'modal-dialog-centered': props.alignment === 'center', - [`modal-fullscreen-${props.fullscreen}-down`]: - props.fullscreen && typeof props.fullscreen === 'string', - 'modal-fullscreen': props.fullscreen && typeof props.fullscreen === 'boolean', - ['modal-dialog-scrollable']: props.scrollable, - [`modal-${props.size}`]: props.size, - }, - ], - }, - h( - 'div', - { class: ['modal-content', props.contentClassName], ref: modalContentRef }, - slots.default && slots.default(), - ), - ), - ) - - return () => - h( - CConditionalTeleport, - { - container: props.container, - teleport: props.teleport, - }, - { - default: () => [ - h( - Transition, - { - css: false, - onEnter: (el, done) => handleEnter(el, done), - onAfterEnter: () => handleAfterEnter(), - onLeave: (el, done) => handleLeave(el, done), - onAfterLeave: (el) => handleAfterLeave(el), - }, - () => - props.unmountOnClose - ? visible.value && modal() - : withDirectives(modal(), [[vShow, visible.value]]), - ), - props.backdrop && - h(CBackdrop, { - class: 'modal-backdrop', - visible: visible.value, - }), - ], - }, - ) - }, -}) - -export { CModal } diff --git a/packages/coreui-vue/src/components/modal/CModalBody.ts b/packages/coreui-vue/src/components/modal/CModalBody.ts deleted file mode 100644 index 9e6f8597..00000000 --- a/packages/coreui-vue/src/components/modal/CModalBody.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CModalBody = defineComponent({ - name: 'CModalBody', - setup(_, { slots }) { - return () => h('div', { class: 'modal-body' }, slots.default && slots.default()) - }, -}) - -export { CModalBody } diff --git a/packages/coreui-vue/src/components/modal/CModalFooter.ts b/packages/coreui-vue/src/components/modal/CModalFooter.ts deleted file mode 100644 index b9721746..00000000 --- a/packages/coreui-vue/src/components/modal/CModalFooter.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CModalFooter = defineComponent({ - name: 'CModalFooter', - setup(_, { slots }) { - return () => h('div', { class: 'modal-footer' }, slots.default && slots.default()) - }, -}) - -export { CModalFooter } diff --git a/packages/coreui-vue/src/components/modal/CModalHeader.ts b/packages/coreui-vue/src/components/modal/CModalHeader.ts deleted file mode 100644 index 108a8ff2..00000000 --- a/packages/coreui-vue/src/components/modal/CModalHeader.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { defineComponent, h, inject } from 'vue' - -import { CCloseButton } from '../close-button/CCloseButton' - -const CModalHeader = defineComponent({ - name: 'CModalHeader', - props: { - /** - * Add a close button component to the header. - */ - closeButton: { - type: Boolean, - default: true, - }, - }, - setup(props, { slots }) { - const handleDismiss = inject('handleDismiss') as () => void - return () => - h('span', { class: 'modal-header' }, [ - slots.default && slots.default(), - props.closeButton && h(CCloseButton, { onClick: () => handleDismiss() }, ''), - ]) - }, -}) - -export { CModalHeader } diff --git a/packages/coreui-vue/src/components/modal/CModalTitle.ts b/packages/coreui-vue/src/components/modal/CModalTitle.ts deleted file mode 100644 index a845f68c..00000000 --- a/packages/coreui-vue/src/components/modal/CModalTitle.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CModalTitle = defineComponent({ - name: 'CModalTitle', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'h5', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'modal-title' }, slots.default && slots.default()) - }, -}) - -export { CModalTitle } diff --git a/packages/coreui-vue/src/components/modal/__tests__/CModal.spec.ts b/packages/coreui-vue/src/components/modal/__tests__/CModal.spec.ts deleted file mode 100644 index 93f86be3..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/CModal.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CModal as Component } from '../../../index' - -const ComponentName = 'CModal' - -const defaultWrapper = mount(Component, { - propsData: { - fullscreen: true, - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - alignment: 'center', - backdrop: false, - contentClassName: 'bazinga', - fullscreen: 'lg', - keyboard: true, - scrollable: true, - size: 'lg', - transition: false, - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.find('.modal').classes('modal')).toBe(true) - expect(defaultWrapper.find('.modal').classes('fade')).toBe(true) - expect(defaultWrapper.find('.modal-dialog').classes('modal-dialog')).toBe(true) - expect(defaultWrapper.find('.modal-dialog').classes('modal-fullscreen')).toBe(true) - expect(defaultWrapper.find('.modal-content').classes('modal-content')).toBe(true) - expect(defaultWrapper.find('.modal-backdrop').classes('modal-backdrop')).toBe(true) - }) - /* - it('event on click backdrop', async () => { - await defaultWrapper.find('.modal-backdrop').trigger('click') - const incrementEvent = defaultWrapper.emitted('dismiss') - expect(incrementEvent).toHaveLength(1) - }) - */ -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.find('.modal').classes('modal')).toBe(true) - expect(customWrapper.find('.modal-dialog').classes('modal-dialog')).toBe(true) - expect(customWrapper.find('.modal-dialog').classes('modal-dialog-centered')).toBe(true) - expect(customWrapper.find('.modal-dialog').classes('modal-fullscreen-lg-down')).toBe(true) - expect(customWrapper.find('.modal-dialog').classes('modal-dialog-scrollable')).toBe(true) - expect(customWrapper.find('.modal-dialog').classes('modal-lg')).toBe(true) - expect(customWrapper.find('.modal-content').classes('modal-content')).toBe(true) - expect(customWrapper.find('.modal-content').classes('bazinga')).toBe(true) - }) - /* - - TODO: Test keyup and click on backdrop (events are init on transition onAfterEnter) - - it('event on keyup', async () => { - await nextTick() - await customWrapper.trigger('keyup', { - keyCode: 27 - }) - const incrementEvent = customWrapper.emitted('dismiss') - expect(incrementEvent).toHaveLength(1) - }) - */ -}) diff --git a/packages/coreui-vue/src/components/modal/__tests__/CModalBody.spec.ts b/packages/coreui-vue/src/components/modal/__tests__/CModalBody.spec.ts deleted file mode 100644 index 18e96d7c..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/CModalBody.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CModalBody as Component } from '../../../index' - -const ComponentName = 'CModalBody' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('modal-body')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/modal/__tests__/CModalFooter.spec.ts b/packages/coreui-vue/src/components/modal/__tests__/CModalFooter.spec.ts deleted file mode 100644 index 7be6fb79..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/CModalFooter.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CModalFooter as Component } from '../../../index' - -const ComponentName = 'CModalFooter' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('modal-footer')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/modal/__tests__/CModalHeader.spec.ts b/packages/coreui-vue/src/components/modal/__tests__/CModalHeader.spec.ts deleted file mode 100644 index 6a2cba15..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/CModalHeader.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CModalHeader as Component } from '../../../index' - -const ComponentName = 'CModalHeader' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - closeButton: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('modal-header')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('modal-header')).toBe(true) - expect(customWrapper.find('button').classes('btn')).toBe(true) - expect(customWrapper.find('button').classes('btn-close')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/modal/__tests__/CModalTitle.spec.ts b/packages/coreui-vue/src/components/modal/__tests__/CModalTitle.spec.ts deleted file mode 100644 index 387f355d..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/CModalTitle.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CModalTitle as Component } from '../../../index' - -const ComponentName = 'CModalTitle' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('modal-title')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('modal-title')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap b/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap deleted file mode 100644 index b818db63..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap +++ /dev/null @@ -1,24 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CModal component renders correctly 1`] = ` -" - -" -`; - -exports[`Loads and display CModal component renders correctly 1`] = ` -" - - - -
    -
    " -`; diff --git a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalBody.spec.ts.snap b/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalBody.spec.ts.snap deleted file mode 100644 index b3bcb34c..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalBody.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CModalBody component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalFooter.spec.ts.snap b/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalFooter.spec.ts.snap deleted file mode 100644 index a87577d0..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalFooter.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CModalFooter component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.ts.snap b/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.ts.snap deleted file mode 100644 index abeb2a67..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CModalHeader component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CModalHeader component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalTitle.spec.ts.snap b/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalTitle.spec.ts.snap deleted file mode 100644 index fe60a9b6..00000000 --- a/packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalTitle.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CModalTitle component renders correctly 1`] = `""`; - -exports[`Loads and display CModalTitle component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/modal/index.ts b/packages/coreui-vue/src/components/modal/index.ts deleted file mode 100644 index 4ebad336..00000000 --- a/packages/coreui-vue/src/components/modal/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { App } from 'vue' -import { CModal } from './CModal' -import { CModalBody } from './CModalBody' -import { CModalFooter } from './CModalFooter' -import { CModalHeader } from './CModalHeader' -import { CModalTitle } from './CModalTitle' - -const CModalPlugin = { - install: (app: App): void => { - app.component(CModal.name as string, CModal) - app.component(CModalBody.name as string, CModalBody) - app.component(CModalFooter.name as string, CModalFooter) - app.component(CModalHeader.name as string, CModalHeader) - app.component(CModalTitle.name as string, CModalTitle) - }, -} - -export { CModalPlugin, CModal, CModalBody, CModalFooter, CModalHeader, CModalTitle } diff --git a/packages/coreui-vue/src/components/nav/CNav.ts b/packages/coreui-vue/src/components/nav/CNav.ts deleted file mode 100644 index 922603e9..00000000 --- a/packages/coreui-vue/src/components/nav/CNav.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNav = defineComponent({ - name: 'CNav', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'ul', - }, - /** - * Specify a layout type for component. - * - * @values 'fill', 'justified' - */ - layout: { - type: String, - validator: (value: string) => { - return ['fill', 'justified'].includes(value) - }, - }, - /** - * Set the nav variant to tabs or pills. - * - * @values 'pills', 'tabs', 'underline', 'underline-border' - */ - variant: { - type: String, - validator: (value: string) => { - return ['pills', 'tabs', 'underline', 'underline-border'].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: [ - 'nav', - { - [`nav-${props.layout}`]: props.layout, - [`nav-${props.variant}`]: props.variant, - }, - ], - role: 'navigation', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CNav } diff --git a/packages/coreui-vue/src/components/nav/CNavGroup.ts b/packages/coreui-vue/src/components/nav/CNavGroup.ts deleted file mode 100644 index 7c45bd7c..00000000 --- a/packages/coreui-vue/src/components/nav/CNavGroup.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { defineComponent, h, onMounted, ref, RendererElement, Transition, watch } from 'vue' - -import { executeAfterTransition } from '../../utils/transition' - -const CNavGroup = defineComponent({ - name: 'CNavGroup', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'li', - }, - /** - * Make nav group more compact by cutting all `padding` in half. - */ - compact: Boolean, - /** - * Show nav group items. - */ - visible: Boolean, - }, - emits: ['visible-change'], - setup(props, { slots, emit }) { - const visible = ref() - const navGroupRef = ref() - const visibleGroup = ref() - - const handleVisibleChange = (visible: boolean, index: number) => { - if (visible) { - visibleGroup.value = index - } else { - if (visibleGroup.value === index) { - visibleGroup.value = 0 - } - } - } - - const isVisible = (index: number) => Boolean(visibleGroup.value === index) - - onMounted(() => { - visible.value = props.visible - if (props.visible) { - navGroupRef.value.classList.add('show') - } - - emit('visible-change', visible.value) - }) - - watch( - () => props.visible, - () => { - visible.value = props.visible - - if (visible.value === false) { - visibleGroup.value = undefined - } - }, - ) - - watch(visible, () => { - emit('visible-change', visible.value) - }) - - const handleTogglerClick = (event: Event) => { - event.preventDefault() - visible.value = !visible.value - emit('visible-change', visible.value) - } - - const handleBeforeEnter = (el: RendererElement) => { - el.style.height = '0px' - navGroupRef.value.classList.add('show') - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleEnter = (el: RendererElement, done: () => void) => { - executeAfterTransition(() => done(), el as HTMLElement) - el.style.height = `${el.scrollHeight}px` - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleAfterEnter = (el: RendererElement) => { - el.style.height = 'auto' - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleBeforeLeave = (el: RendererElement) => { - el.style.height = `${el.scrollHeight}px` - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleLeave = (el: RendererElement, done: () => void) => { - executeAfterTransition(() => done(), el as HTMLElement) - setTimeout(() => { - el.style.height = '0px' - }, 1) - } - - const handleAfterLeave = () => { - navGroupRef.value.classList.remove('show') - } - - return () => - h( - props.as, - { - class: 'nav-group', - ref: navGroupRef, - }, - [ - slots.togglerContent && - h( - 'a', - { - class: ['nav-link', 'nav-group-toggle'], - href: '#', - onClick: handleTogglerClick, - }, - slots.togglerContent && slots.togglerContent(), - ), - h( - Transition, - { - css: false, - onBeforeEnter: (el) => handleBeforeEnter(el), - onEnter: (el, done) => handleEnter(el, done), - onAfterEnter: (el) => handleAfterEnter(el), - onBeforeLeave: (el) => handleBeforeLeave(el), - onLeave: (el, done) => handleLeave(el, done), - onAfterLeave: () => handleAfterLeave(), - }, - { - default: () => - visible.value && - h( - props.as === 'div' ? 'div' : 'ul', - { - class: [ - 'nav-group-items', - { - compact: props.compact, - }, - ], - }, - slots.default && - slots.default().map((vnode, index) => { - // @ts-expect-error name is defined in component - if (vnode.type.name === 'CNavGroup') { - return h(vnode, { - onVisibleChange: (visible: boolean) => - handleVisibleChange(visible, index + 1), - ...(visibleGroup.value && { visible: isVisible(index + 1) }), - }) - } - return vnode - }), - ), - }, - ), - ], - ) - }, -}) - -export { CNavGroup } diff --git a/packages/coreui-vue/src/components/nav/CNavGroupItems.ts b/packages/coreui-vue/src/components/nav/CNavGroupItems.ts deleted file mode 100644 index 3988b260..00000000 --- a/packages/coreui-vue/src/components/nav/CNavGroupItems.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNavGroupItems = defineComponent({ - name: 'CNavGroupItems', - setup(_, { slots }) { - return () => h('ul', { class: 'nav-group-items' }, slots.default && slots.default()) - }, -}) - -export { CNavGroupItems } diff --git a/packages/coreui-vue/src/components/nav/CNavItem.ts b/packages/coreui-vue/src/components/nav/CNavItem.ts deleted file mode 100644 index e660c01a..00000000 --- a/packages/coreui-vue/src/components/nav/CNavItem.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CNavLink } from './CNavLink' - -import type { ComponentProps } from '../../utils/ComponentProps' - -interface CNavItemProps extends ComponentProps { - as: string - class: string -} - -const CNavItem = defineComponent({ - name: 'CNavItem', - inheritAttrs: false, - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'li', - }, - /** - * A string of all className you want applied to the component. - */ - class: String, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * @ignore - */ - href: String, - }, - setup(props: CNavItemProps, { attrs, slots }) { - return () => - h( - props.as, - { - class: ['nav-item', props.class], - }, - props.href - ? h( - CNavLink, - { - ...attrs, - active: props.active, - disabled: props.disabled, - href: props.href, - }, - { - default: () => slots.default && slots.default(), - }, - ) - : slots.default && slots.default(), - ) - }, -}) - -export { CNavItem } diff --git a/packages/coreui-vue/src/components/nav/CNavLink.ts b/packages/coreui-vue/src/components/nav/CNavLink.ts deleted file mode 100644 index 63c2af94..00000000 --- a/packages/coreui-vue/src/components/nav/CNavLink.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { CLink } from '../link/CLink' - -const CNavLink = defineComponent({ - name: 'CNavLink', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'a', - }, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * @ignore - */ - href: String, - }, - setup(props, { slots }) { - return () => - h( - CLink, - { - as: props.as, - active: props.active, - class: 'nav-link', - disabled: props.disabled, - href: props.href, - }, - { - default: () => slots.default && slots.default(), - }, - ) - }, -}) - -export { CNavLink } diff --git a/packages/coreui-vue/src/components/nav/CNavTitle.ts b/packages/coreui-vue/src/components/nav/CNavTitle.ts deleted file mode 100644 index 6a808a42..00000000 --- a/packages/coreui-vue/src/components/nav/CNavTitle.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNavTitle = defineComponent({ - name: 'CNavTitle', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'li', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'nav-title' }, slots.default && slots.default()) - }, -}) - -export { CNavTitle } diff --git a/packages/coreui-vue/src/components/nav/__tests__/CNav.spec.ts b/packages/coreui-vue/src/components/nav/__tests__/CNav.spec.ts deleted file mode 100644 index 7b94d89b..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/CNav.spec.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNav as Component } from '../../../index' - -const ComponentName = 'CNav' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - layout: 'fill', - variant: 'pills', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('nav')).toBe(true) - expect(defaultWrapper.attributes('role')).toBe('navigation') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('nav')).toBe(true) - expect(customWrapper.classes('nav-fill')).toBe(true) - expect(customWrapper.classes('nav-pills')).toBe(true) - expect(customWrapper.attributes('role')).toBe('navigation') - }) -}) diff --git a/packages/coreui-vue/src/components/nav/__tests__/CNavGroup.spec.ts b/packages/coreui-vue/src/components/nav/__tests__/CNavGroup.spec.ts deleted file mode 100644 index 8bf3cda9..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/CNavGroup.spec.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavGroup as Component } from '../../../index' - -const ComponentName = 'CNavGroup' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -const customWrapper = mount(Component, { - propsData: { - compact: true, - visible: true, - }, - slots: { - togglerContent: 'togglerContent', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('nav-group')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.find('a').text()).toContain('togglerContent') - expect(customWrapper.find('a').classes('nav-link')).toBe(true) - expect(customWrapper.find('a').classes('nav-group-toggle')).toBe(true) - expect(customWrapper.find('ul').classes('nav-group-items')).toBe(true) - expect(customWrapper.find('ul').classes('compact')).toBe(true) - expect(customWrapper.classes('nav-group')).toBe(true) - }) - it('emit event visible-change on click nav-group-toggle', () => { - let incrementEvent = customWrapper.emitted('visible-change') - customWrapper.find('.nav-group-toggle').trigger('click') - incrementEvent = customWrapper.emitted('visible-change') - expect(incrementEvent).toHaveLength(3) - }) -}) diff --git a/packages/coreui-vue/src/components/nav/__tests__/CNavGroupItems.spec.ts b/packages/coreui-vue/src/components/nav/__tests__/CNavGroupItems.spec.ts deleted file mode 100644 index 2e593021..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/CNavGroupItems.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavGroupItems as Component } from '../../../index' - -const ComponentName = 'CNavGroupItems' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('nav-group-items')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/nav/__tests__/CNavItem.spec.ts b/packages/coreui-vue/src/components/nav/__tests__/CNavItem.spec.ts deleted file mode 100644 index fc24c1c2..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/CNavItem.spec.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavItem as Component } from '../../../index' - -const ComponentName = 'CNavItem' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - href: '/bazinga', - active: true, - as: 'div', - disabled: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('nav-item')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.find('div').text()).toContain('Default slot') - expect(customWrapper.classes('nav-item')).toBe(true) - expect(customWrapper.find('div').classes('nav-link')).toBe(true) - expect(customWrapper.find('div').classes('active')).toBe(true) - expect(customWrapper.find('div').classes('disabled')).toBe(true) - expect(customWrapper.find('div').attributes('href')).toBe('/bazinga') - expect(customWrapper.find('div').attributes('aria-current')).toBe('page') - }) -}) diff --git a/packages/coreui-vue/src/components/nav/__tests__/CNavLink.spec.ts b/packages/coreui-vue/src/components/nav/__tests__/CNavLink.spec.ts deleted file mode 100644 index 0220a67c..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/CNavLink.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavLink as Component } from '../../../index' - -const ComponentName = 'CNavLink' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - href: '/bazinga', - active: true, - as: 'div', - disabled: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('nav-link')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('nav-link')).toBe(true) - expect(customWrapper.classes('active')).toBe(true) - expect(customWrapper.classes('disabled')).toBe(true) - expect(customWrapper.attributes('href')).toBe('/bazinga') - expect(customWrapper.attributes('aria-current')).toBe('page') - }) -}) diff --git a/packages/coreui-vue/src/components/nav/__tests__/CNavTitle.spec.ts b/packages/coreui-vue/src/components/nav/__tests__/CNavTitle.spec.ts deleted file mode 100644 index 36c84be9..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/CNavTitle.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavTitle as Component } from '../../../index' - -const ComponentName = 'CNavTitle' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('nav-title')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNav.spec.ts.snap b/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNav.spec.ts.snap deleted file mode 100644 index 4d306a7d..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNav.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNav component renders correctly 1`] = `""`; - -exports[`Loads and display CNav component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap b/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap deleted file mode 100644 index 78b1e4cb..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNavGroup component renders correctly 1`] = ` -"" -`; - -exports[`Loads and display CNavGroup component renders correctly 1`] = ` -"" -`; diff --git a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroupItems.spec.ts.snap b/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroupItems.spec.ts.snap deleted file mode 100644 index 7e5bd579..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroupItems.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CNavGroupItems component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap b/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap deleted file mode 100644 index 7147ee44..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNavItem component renders correctly 1`] = ` -"" -`; - -exports[`Loads and display CNavItem component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavLink.spec.ts.snap b/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavLink.spec.ts.snap deleted file mode 100644 index 343e8754..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavLink.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNavLink component renders correctly 1`] = `""`; - -exports[`Loads and display CNavLink component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavTitle.spec.ts.snap b/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavTitle.spec.ts.snap deleted file mode 100644 index 44eee351..00000000 --- a/packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavTitle.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CNavTitle component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/nav/index.ts b/packages/coreui-vue/src/components/nav/index.ts deleted file mode 100644 index d38a6cfd..00000000 --- a/packages/coreui-vue/src/components/nav/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { App } from 'vue' -import { CNav } from './CNav' -import { CNavGroup } from './CNavGroup' -import { CNavGroupItems } from './CNavGroupItems' -import { CNavItem } from './CNavItem' -import { CNavLink } from './CNavLink' -import { CNavTitle } from './CNavTitle' - -const CNavPlugin = { - install: (app: App): void => { - app.component(CNav.name as string, CNav) - app.component(CNavGroup.name as string, CNavGroup) - app.component(CNavGroupItems.name as string, CNavGroupItems) - app.component(CNavItem.name as string, CNavItem) - app.component(CNavLink.name as string, CNavLink) - app.component(CNavTitle.name as string, CNavTitle) - }, -} - -export { CNavPlugin, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle } diff --git a/packages/coreui-vue/src/components/navbar/CNavbar.ts b/packages/coreui-vue/src/components/navbar/CNavbar.ts deleted file mode 100644 index ec6f4991..00000000 --- a/packages/coreui-vue/src/components/navbar/CNavbar.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CNavbar = defineComponent({ - name: 'CNavbar', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'nav', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - /** - * Sets if the color of text should be colored for a light or dark dark background. - * - * @values 'dark', 'light' - */ - colorScheme: { - type: String, - validator: (value: string) => { - return ['dark', 'light'].includes(value) - }, - }, - /** - * Defines optional container wrapping children elements. - * - * @values boolean, 'sm', 'md', 'lg', 'xl', 'xxl', 'fluid' - */ - container: { - type: [Boolean, String], - validator: (value: boolean | string) => { - return ( - typeof value === 'boolean' || ['sm', 'md', 'lg', 'xl', 'xxl', 'fluid'].includes(value) - ) - }, - }, - /** - * Defines the responsive breakpoint to determine when content collapses. - * - * @values boolean, 'sm', 'md', 'lg', 'xl', 'xxl' - */ - expand: { - type: [Boolean, String], - validator: (value: boolean | string) => { - return typeof value === 'boolean' || ['sm', 'md', 'lg', 'xl', 'xxl'].includes(value) - }, - }, - /** - * Place component in non-static positions. - * - * @values 'fixed-top', 'fixed-bottom', 'sticky-top' - */ - placement: { - type: String, - validator: (value: string) => { - return ['fixed-top', 'fixed-bottom', 'sticky-top'].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: [ - 'navbar', - { - [`bg-${props.color}`]: props.color, - [typeof props.expand === 'boolean' - ? 'navbar-expand' - : `navbar-expand-${props.expand}`]: props.expand, - }, - props.placement, - ], - ...(props.colorScheme && { 'data-coreui-theme': props.colorScheme }), - }, - props.container - ? h( - 'div', - { class: [`container${props.container === true ? '' : '-' + props.container}`] }, - slots.default && slots.default(), - ) - : slots.default && slots.default(), - ) - }, -}) - -export { CNavbar } diff --git a/packages/coreui-vue/src/components/navbar/CNavbarBrand.ts b/packages/coreui-vue/src/components/navbar/CNavbarBrand.ts deleted file mode 100644 index 25a50b93..00000000 --- a/packages/coreui-vue/src/components/navbar/CNavbarBrand.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNavbarBrand = defineComponent({ - name: 'CNavbarBrand', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - * - */ - as: { - type: String, - default: 'a', - }, - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: String, - }, - setup(props, { slots }) { - return () => - h( - props.as ?? (props.href ? 'a' : 'span'), - { - class: 'navbar-brand', - href: props.href, - }, - slots.default && slots.default(), - ) - }, -}) - -export { CNavbarBrand } diff --git a/packages/coreui-vue/src/components/navbar/CNavbarNav.ts b/packages/coreui-vue/src/components/navbar/CNavbarNav.ts deleted file mode 100644 index 338882e1..00000000 --- a/packages/coreui-vue/src/components/navbar/CNavbarNav.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNavbarNav = defineComponent({ - name: 'CNavbarNav', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'ul', - }, - }, - setup(props, { slots }) { - return () => - h( - props.as, - { - class: 'navbar-nav', - role: 'navigation', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CNavbarNav } diff --git a/packages/coreui-vue/src/components/navbar/CNavbarText.ts b/packages/coreui-vue/src/components/navbar/CNavbarText.ts deleted file mode 100644 index bdc07fb5..00000000 --- a/packages/coreui-vue/src/components/navbar/CNavbarText.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNavbarText = defineComponent({ - name: 'CNavbarText', - setup(_, { slots }) { - return () => h('span', { class: 'navbar-text' }, slots.default && slots.default()) - }, -}) - -export { CNavbarText } diff --git a/packages/coreui-vue/src/components/navbar/CNavbarToggler.ts b/packages/coreui-vue/src/components/navbar/CNavbarToggler.ts deleted file mode 100644 index 1ca4cca5..00000000 --- a/packages/coreui-vue/src/components/navbar/CNavbarToggler.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CNavbarToggler = defineComponent({ - name: 'CNavbarToggler', - setup(_, { slots }) { - return () => - h( - 'button', - { - class: 'navbar-toggler', - }, - slots.default ? slots.default() : h('span', { class: ['navbar-toggler-icon'] }), - ) - }, -}) - -export { CNavbarToggler } diff --git a/packages/coreui-vue/src/components/navbar/__tests__/CNavbar.spec.ts b/packages/coreui-vue/src/components/navbar/__tests__/CNavbar.spec.ts deleted file mode 100644 index 6c533fb4..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/CNavbar.spec.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavbar as Component } from '../../../index' - -const ComponentName = 'CNavbar' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - color: 'warning', - colorScheme: 'light', - container: 'lg', - expand: 'xl', - placement: 'fixed-bottom', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('navbar')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('navbar')).toBe(true) - expect(customWrapper.classes('bg-warning')).toBe(true) - expect(customWrapper.classes('navbar-light')).toBe(true) - expect(customWrapper.classes('navbar-expand-xl')).toBe(true) - expect(customWrapper.classes('fixed-bottom')).toBe(true) - expect(customWrapper.find('.container-lg').classes('container-lg')).toBe(true) - expect(customWrapper.find('.container-lg').text()).toContain('Default slot') - }) -}) diff --git a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarBrand.spec.ts b/packages/coreui-vue/src/components/navbar/__tests__/CNavbarBrand.spec.ts deleted file mode 100644 index 8f9b1b7e..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarBrand.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavbarBrand as Component } from '../../../index' - -const ComponentName = 'CNavbarBrand' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapperTwo = mount(Component, { - propsData: { - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('navbar-brand')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('navbar-brand')).toBe(true) - expect(customWrapper.attributes('href')).toBe('/bazinga') - }) -}) - -describe(`Customize (two) ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapperTwo.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapperTwo.text()).toContain('Default slot') - expect(customWrapperTwo.classes('navbar-brand')).toBe(true) - expect(customWrapperTwo.attributes('href')).toBe('/bazinga') - }) -}) diff --git a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarNav.spec.ts b/packages/coreui-vue/src/components/navbar/__tests__/CNavbarNav.spec.ts deleted file mode 100644 index 3c51ea8c..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarNav.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavbarNav as Component } from '../../../index' - -const ComponentName = 'CNavbarNav' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('navbar-nav')).toBe(true) - expect(defaultWrapper.attributes('role')).toBe('navigation') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('navbar-nav')).toBe(true) - expect(customWrapper.attributes('role')).toBe('navigation') - }) -}) diff --git a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarText.spec.ts b/packages/coreui-vue/src/components/navbar/__tests__/CNavbarText.spec.ts deleted file mode 100644 index f8532a99..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarText.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavbarText as Component } from '../../../index' - -const ComponentName = 'CNavbarText' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('navbar-text')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarToggler.spec.ts b/packages/coreui-vue/src/components/navbar/__tests__/CNavbarToggler.spec.ts deleted file mode 100644 index 2633bf2c..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/CNavbarToggler.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CNavbarToggler as Component } from '../../../index' - -const ComponentName = 'CNavbarToggler' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -const customWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('navbar-toggler')).toBe(true) - expect(defaultWrapper.find('span').classes('navbar-toggler-icon')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('navbar-toggler')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.ts.snap b/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.ts.snap deleted file mode 100644 index 8c12255a..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNavbar component renders correctly 1`] = ` -"" -`; - -exports[`Loads and display CNavbar component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarBrand.spec.ts.snap b/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarBrand.spec.ts.snap deleted file mode 100644 index 0ddb600e..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarBrand.spec.ts.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize (two) CNavbarBrand component renders correctly 1`] = `"Default slot"`; - -exports[`Customize CNavbarBrand component renders correctly 1`] = `""`; - -exports[`Loads and display CNavbarBrand component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarNav.spec.ts.snap b/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarNav.spec.ts.snap deleted file mode 100644 index d2e23afd..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarNav.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNavbarNav component renders correctly 1`] = `""`; - -exports[`Loads and display CNavbarNav component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarText.spec.ts.snap b/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarText.spec.ts.snap deleted file mode 100644 index 24487886..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarText.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CNavbarText component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarToggler.spec.ts.snap b/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarToggler.spec.ts.snap deleted file mode 100644 index 7054937b..00000000 --- a/packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarToggler.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CNavbarToggler component renders correctly 1`] = `""`; - -exports[`Loads and display CNavbarToggler component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/navbar/index.ts b/packages/coreui-vue/src/components/navbar/index.ts deleted file mode 100644 index c466c871..00000000 --- a/packages/coreui-vue/src/components/navbar/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { App } from 'vue' -import { CNavbar } from './CNavbar' -import { CNavbarBrand } from './CNavbarBrand' -import { CNavbarNav } from './CNavbarNav' -import { CNavbarText } from './CNavbarText' -import { CNavbarToggler } from './CNavbarToggler' - -const CNavbarPlugin = { - install: (app: App): void => { - app.component(CNavbar.name as string, CNavbar) - app.component(CNavbarBrand.name as string, CNavbarBrand) - app.component(CNavbarNav.name as string, CNavbarNav) - app.component(CNavbarText.name as string, CNavbarText) - app.component(CNavbarToggler.name as string, CNavbarToggler) - }, -} - -export { CNavbarPlugin, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler } diff --git a/packages/coreui-vue/src/components/offcanvas/COffcanvas.ts b/packages/coreui-vue/src/components/offcanvas/COffcanvas.ts deleted file mode 100644 index 5377fa72..00000000 --- a/packages/coreui-vue/src/components/offcanvas/COffcanvas.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { defineComponent, h, ref, RendererElement, Transition, watch, withDirectives } from 'vue' - -import { CBackdrop } from '../backdrop' - -import { vVisible } from '../../directives/v-c-visible' -import { executeAfterTransition } from '../../utils/transition' - -const COffcanvas = defineComponent({ - name: 'COffcanvas', - inheritAttrs: false, - props: { - /** - * Apply a backdrop on body while offcanvas is open. - * - * @values boolean | 'static' - */ - backdrop: { - type: [Boolean, String], - default: true, - validator: (value: boolean | string) => { - if (typeof value === 'string') { - return ['static'].includes(value) - } - if (typeof value === 'boolean') { - return true - } - return false - }, - }, - /** - * Sets a darker color scheme. - */ - dark: Boolean, - /** - * Closes the offcanvas when escape key is pressed. - */ - keyboard: { - type: Boolean, - default: true, - }, - /** - * Components placement, there’s no default placement. - * - * @values 'start', 'end', 'top', 'bottom' - */ - placement: { - type: String, - require: true, - validator: (value: string) => { - return ['start', 'end', 'top', 'bottom'].includes(value) - }, - }, - /** - * Responsive offcanvas property hide content outside the viewport from a specified breakpoint and down. - * - * @values boolean | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' - * @since 4.7.0 - */ - responsive: { - type: [Boolean, String], - default: true, - validator: (value: boolean | string) => { - if (typeof value === 'string') { - return ['sm', 'md', 'lg', 'xl', 'xxl'].includes(value) - } - if (typeof value === 'boolean') { - return true - } - return false - }, - }, - /** - * Allow body scrolling while offcanvas is open - */ - scroll: { - type: Boolean, - default: false, - }, - - /** - * Toggle the visibility of offcanvas component. - */ - visible: { - type: Boolean, - default: false, - }, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { attrs, emit, slots }) { - const offcanvasRef = ref() - const visible = ref(props.visible) - - watch( - () => props.visible, - () => { - visible.value = props.visible - }, - ) - - watch(visible, () => { - if (visible.value && !props.scroll) { - document.body.style.overflow = 'hidden' - document.body.style.paddingRight = '0px' - - return - } - - if (!props.scroll) { - document.body.style.removeProperty('overflow') - document.body.style.removeProperty('padding-right') - } - }) - - const handleEnter = (el: RendererElement, done: () => void) => { - emit('show') - executeAfterTransition(() => done(), el as HTMLElement) - setTimeout(() => { - el.classList.add('show') - }, 1) - } - - const handleAfterEnter = () => { - offcanvasRef.value.focus() - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleLeave = (el: RendererElement, done: () => void) => { - executeAfterTransition(() => done(), el as HTMLElement) - el.classList.add('hiding') - } - - // eslint-disable-next-line unicorn/consistent-function-scoping - const handleAfterLeave = (el: RendererElement) => { - el.classList.remove('show', 'hiding') - } - - const handleDismiss = () => { - visible.value = false - emit('hide') - } - - const handleBackdropDismiss = () => { - if (props.backdrop !== 'static') { - handleDismiss() - } - } - - const handleKeyDown = (event: KeyboardEvent) => { - if (event.key === 'Escape' && props.keyboard) { - handleDismiss() - } - } - - return () => [ - h( - Transition, - { - appear: visible.value, - css: false, - onEnter: (el, done) => handleEnter(el, done), - onAfterEnter: () => handleAfterEnter(), - onLeave: (el, done) => handleLeave(el, done), - onAfterLeave: (el) => handleAfterLeave(el), - }, - () => - withDirectives( - h( - 'div', - { - ...attrs, - class: [ - { - [`offcanvas${ - typeof props.responsive === 'boolean' ? '' : '-' + props.responsive - }`]: props.responsive, - [`offcanvas-${props.placement}`]: props.placement, - }, - attrs.class, - ], - onKeydown: (event: KeyboardEvent) => handleKeyDown(event), - ref: offcanvasRef, - role: 'dialog', - tabindex: -1, - ...(props.dark && { 'data-coreui-theme': 'dark' }), - }, - slots.default && slots.default(), - ), - [[vVisible, props.visible]], - ), - ), - props.backdrop && - h(CBackdrop, { - class: 'offcanvas-backdrop', - onClick: handleBackdropDismiss, - visible: visible.value, - }), - ] - }, -}) - -export { COffcanvas } diff --git a/packages/coreui-vue/src/components/offcanvas/COffcanvasBody.ts b/packages/coreui-vue/src/components/offcanvas/COffcanvasBody.ts deleted file mode 100644 index 384599c4..00000000 --- a/packages/coreui-vue/src/components/offcanvas/COffcanvasBody.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const COffcanvasBody = defineComponent({ - name: 'COffcanvasBody', - setup(_, { slots }) { - return () => h('div', { class: 'offcanvas-body' }, slots.default && slots.default()) - }, -}) - -export { COffcanvasBody } diff --git a/packages/coreui-vue/src/components/offcanvas/COffcanvasHeader.ts b/packages/coreui-vue/src/components/offcanvas/COffcanvasHeader.ts deleted file mode 100644 index 8758643d..00000000 --- a/packages/coreui-vue/src/components/offcanvas/COffcanvasHeader.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const COffcanvasHeader = defineComponent({ - name: 'COffcanvasHeader', - setup(_, { slots }) { - return () => h('div', { class: 'offcanvas-header' }, slots.default && slots.default()) - }, -}) - -export { COffcanvasHeader } diff --git a/packages/coreui-vue/src/components/offcanvas/COffcanvasTitle.ts b/packages/coreui-vue/src/components/offcanvas/COffcanvasTitle.ts deleted file mode 100644 index 6a1cc18e..00000000 --- a/packages/coreui-vue/src/components/offcanvas/COffcanvasTitle.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h } from 'vue' - -const COffcanvasTitle = defineComponent({ - name: 'COffcanvasTitle', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'h5', - }, - }, - setup(props, { slots }) { - return () => h(props.as, { class: 'offcanvas-title' }, slots.default && slots.default()) - }, -}) - -export { COffcanvasTitle } diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvas.spec.ts b/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvas.spec.ts deleted file mode 100644 index c7bb8e12..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvas.spec.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { mount } from '@vue/test-utils' -import { COffcanvas as Component } from '../../../index' - -const ComponentName = 'COffcanvas' - -const defaultWrapper = mount(Component, { - propsData: { - visible: true, - placement: 'end', - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - backdrop: true, - keyboard: true, - placement: 'bottom', - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.find('div').classes('offcanvas')).toBe(true) - expect(defaultWrapper.find('div').classes('offcanvas-end')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.find('div').classes('offcanvas')).toBe(true) - expect(customWrapper.find('div').classes('offcanvas-bottom')).toBe(true) - expect(customWrapper.find('.offcanvas-backdrop').classes('offcanvas-backdrop')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasBody.spec.ts b/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasBody.spec.ts deleted file mode 100644 index ae5dca6c..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasBody.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { COffcanvasBody as Component } from '../../../index' - -const ComponentName = 'COffcanvasBody' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('offcanvas-body')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasHeader.spec.ts b/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasHeader.spec.ts deleted file mode 100644 index e19de432..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasHeader.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { COffcanvasHeader as Component } from '../../../index' - -const ComponentName = 'COffcanvasHeader' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('offcanvas-header')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasTitle.spec.ts b/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasTitle.spec.ts deleted file mode 100644 index 7e27792f..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasTitle.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mount } from '@vue/test-utils' -import { COffcanvasTitle as Component } from '../../../index' - -const ComponentName = 'COffcanvasTitle' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'div', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('offcanvas-title')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('offcanvas-title')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvas.spec.ts.snap b/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvas.spec.ts.snap deleted file mode 100644 index c05805a4..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvas.spec.ts.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize COffcanvas component renders correctly 1`] = ` -" - - - -
    -
    " -`; - -exports[`Loads and display COffcanvas component renders correctly 1`] = ` -" - - - -
    -
    " -`; diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasBody.spec.ts.snap b/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasBody.spec.ts.snap deleted file mode 100644 index 86cbd126..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasBody.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display COffcanvasBody component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasHeader.spec.ts.snap b/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasHeader.spec.ts.snap deleted file mode 100644 index f3a255fc..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasHeader.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display COffcanvasHeader component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasTitle.spec.ts.snap b/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasTitle.spec.ts.snap deleted file mode 100644 index 52e231f8..00000000 --- a/packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasTitle.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize COffcanvasTitle component renders correctly 1`] = `"
    Default slot
    "`; - -exports[`Loads and display COffcanvasTitle component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/offcanvas/index.ts b/packages/coreui-vue/src/components/offcanvas/index.ts deleted file mode 100644 index 28572037..00000000 --- a/packages/coreui-vue/src/components/offcanvas/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { App } from 'vue' -import { COffcanvas } from './COffcanvas' -import { COffcanvasBody } from './COffcanvasBody' -import { COffcanvasHeader } from './COffcanvasHeader' -import { COffcanvasTitle } from './COffcanvasTitle' - -const COffcanvasPlugin = { - install: (app: App): void => { - app.component(COffcanvas.name as string, COffcanvas) - app.component(COffcanvasBody.name as string, COffcanvasBody) - app.component(COffcanvasHeader.name as string, COffcanvasHeader) - app.component(COffcanvasTitle.name as string, COffcanvasTitle) - }, -} - -export { COffcanvasPlugin, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle } diff --git a/packages/coreui-vue/src/components/pagination/CPagination.ts b/packages/coreui-vue/src/components/pagination/CPagination.ts deleted file mode 100644 index 9f0bc7c4..00000000 --- a/packages/coreui-vue/src/components/pagination/CPagination.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CPagination = defineComponent({ - name: 'CPagination', - props: { - /** - * Set the alignment of pagination components. - * - * @values 'start', 'center', 'end' - */ - align: { - type: String, - validator: (value: string) => { - return ['start', 'center', 'end'].includes(value) - }, - }, - /** - * Size the component small or large. - * - * @values 'sm', 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg'].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - 'nav', - {}, - h( - 'ul', - { - class: [ - 'pagination', - { - [`justify-content-${props.align}`]: props.align, - [`pagination-${props.size}`]: props.size, - }, - ], - }, - slots.default && slots.default(), - ), - ) - }, -}) - -export { CPagination } diff --git a/packages/coreui-vue/src/components/pagination/CPaginationItem.ts b/packages/coreui-vue/src/components/pagination/CPaginationItem.ts deleted file mode 100644 index c4085a9a..00000000 --- a/packages/coreui-vue/src/components/pagination/CPaginationItem.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { CLink } from '../link/CLink' - -const CPaginationItem = defineComponent({ - name: 'CPaginationItem', - props: { - /** - * Toggle the active state for the component. - */ - active: Boolean, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: String, - /** - * Toggle the disabled state for the component. - */ - disabled: Boolean, - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: String, - }, - setup(props, { slots }) { - return () => { - const component = props.as ?? (props.active ? 'span' : 'a') - return h( - 'li', - { - class: [ - 'page-item', - { - ['active']: props.active, - ['disabled']: props.disabled, - }, - ], - ...(props.active && { active: props.active, 'aria-current': 'page' }), - }, - component === 'a' - ? h( - CLink, - { - as: component, - class: ['page-link'], - href: props.href, - }, - { - default: () => slots.default && slots.default(), - }, - ) - : h(component, { class: ['page-link'] }, slots.default && slots.default()), - ) - } - }, -}) - -export { CPaginationItem } diff --git a/packages/coreui-vue/src/components/pagination/__tests__/CPagination.spec.ts b/packages/coreui-vue/src/components/pagination/__tests__/CPagination.spec.ts deleted file mode 100644 index 1bd9ee7b..00000000 --- a/packages/coreui-vue/src/components/pagination/__tests__/CPagination.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CPagination as Component } from '../../../index' - -const ComponentName = 'CPagination' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - size: 'lg', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.find('ul').text()).toContain('Default slot') - expect(defaultWrapper.find('ul').classes('pagination')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.find('ul').text()).toContain('Default slot') - expect(customWrapper.find('ul').classes('pagination')).toBe(true) - expect(customWrapper.find('ul').classes('pagination-lg')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/pagination/__tests__/CPaginationItem.spec.ts b/packages/coreui-vue/src/components/pagination/__tests__/CPaginationItem.spec.ts deleted file mode 100644 index e4d6015e..00000000 --- a/packages/coreui-vue/src/components/pagination/__tests__/CPaginationItem.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CPaginationItem as Component } from '../../../index' - -const ComponentName = 'CPaginationItem' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - disabled: true, - href: '/bazinga', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.find('.page-link').text()).toContain('Default slot') - expect(defaultWrapper.classes('page-item')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.find('.page-link').text()).toContain('Default slot') - expect(customWrapper.classes('page-item')).toBe(true) - expect(customWrapper.classes('disabled')).toBe(true) - expect(customWrapper.find('.page-link').attributes('href')).toContain('bazinga') // TODO: It must be working! - }) -}) diff --git a/packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPagination.spec.ts.snap b/packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPagination.spec.ts.snap deleted file mode 100644 index df7177ab..00000000 --- a/packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPagination.spec.ts.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CPagination component renders correctly 1`] = ` -"" -`; - -exports[`Loads and display CPagination component renders correctly 1`] = ` -"" -`; diff --git a/packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPaginationItem.spec.ts.snap b/packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPaginationItem.spec.ts.snap deleted file mode 100644 index 440c37db..00000000 --- a/packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPaginationItem.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CPaginationItem component renders correctly 1`] = `"
  • Default slot
  • "`; - -exports[`Loads and display CPaginationItem component renders correctly 1`] = `"
  • Default slot
  • "`; diff --git a/packages/coreui-vue/src/components/pagination/index.ts b/packages/coreui-vue/src/components/pagination/index.ts deleted file mode 100644 index 8c7d5e7c..00000000 --- a/packages/coreui-vue/src/components/pagination/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { App } from 'vue' -import { CPagination } from './CPagination' -import { CPaginationItem } from './CPaginationItem' - -const CPaginationPlugin = { - install: (app: App): void => { - app.component(CPagination.name as string, CPagination) - app.component(CPaginationItem.name as string, CPaginationItem) - }, -} - -export { CPaginationPlugin, CPagination, CPaginationItem } diff --git a/packages/coreui-vue/src/components/placeholder/CPlaceholder.ts b/packages/coreui-vue/src/components/placeholder/CPlaceholder.ts deleted file mode 100644 index 9217bf91..00000000 --- a/packages/coreui-vue/src/components/placeholder/CPlaceholder.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const BREAKPOINTS = [ - 'xxl' as const, - 'xl' as const, - 'lg' as const, - 'md' as const, - 'sm' as const, - 'xs' as const, -] - -export const CPlaceholder = defineComponent({ - name: 'CPlaceholder', - props: { - /** - * Set animation type to better convey the perception of something being actively loaded. - * - * @values 'glow', 'wave' - */ - animation: { - type: String, - validator: (value: string) => { - return ['glow', 'wave'].includes(value) - }, - }, - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'span', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Size the component extra small, small, or large. - * - * @values 'xs', 'sm', 'lg' - */ - size: { - type: String, - validator: (value: string) => { - return ['xs', 'sm', 'lg'].includes(value) - }, - }, - /** - * The number of columns on extra small devices (<576px). - */ - xs: Number, - /** - * The number of columns on small devices (<768px). - */ - sm: Number, - /** - * The number of columns on medium devices (<992px). - */ - md: Number, - /** - * The number of columns on large devices (<1200px). - */ - lg: Number, - /** - * The number of columns on X-Large devices (<1400px). - */ - xl: Number, - /** - * The number of columns on XX-Large devices (≥1400px). - */ - xxl: Number, - }, - setup(props, { slots }) { - const repsonsiveClassNames: string[] = [] - - BREAKPOINTS.forEach((bp) => { - const breakpoint = props[bp] - - const infix = bp === 'xs' ? '' : `-${bp}` - - if (typeof breakpoint === 'number') { - repsonsiveClassNames.push(`col${infix}-${breakpoint}`) - } - - if (typeof breakpoint === 'boolean') { - repsonsiveClassNames.push(`col${infix}`) - } - }) - - return () => - h( - props.as, - { - class: [ - props.animation ? `placeholder-${props.animation}` : 'placeholder', - { - [`bg-${props.color}`]: props.color, - [`placeholder-${props.size}`]: props.size, - }, - repsonsiveClassNames, - ], - }, - slots.default && slots.default(), - ) - }, -}) diff --git a/packages/coreui-vue/src/components/placeholder/__tests__/CPlaceholder.spec.ts b/packages/coreui-vue/src/components/placeholder/__tests__/CPlaceholder.spec.ts deleted file mode 100644 index 2f3cff8f..00000000 --- a/packages/coreui-vue/src/components/placeholder/__tests__/CPlaceholder.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import { CPlaceholder as Component } from '../../' - -const ComponentName = 'CPlaceholder' -const wrapper = shallowMount(Component) -const customWrapper = shallowMount(Component, { - props: { - animation: 'glow', - color: 'secondary', - size: 'lg', - sm: 7, - }, - attrs: { - class: 'bazinga', - }, - slots: { - default: 'Hello World!', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(wrapper.element).toMatchSnapshot() - }) - it('renders correctly with slot', () => { - expect(customWrapper.element).toMatchSnapshot() - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('has a prope class names', () => { - expect(customWrapper.find('span').classes('bazinga')).toBe(true) - expect(customWrapper.find('span').classes('bg-secondary')).toBe(true) - expect(customWrapper.find('span').classes('col-sm-7')).toBe(true) - expect(customWrapper.find('span').classes('placeholder-glow')).toBe(true) - expect(customWrapper.find('span').classes('placeholder-lg')).toBe(true) - }) - it('default slot contains text', () => { - expect(customWrapper.text()).toBe('Hello World!') - }) -}) diff --git a/packages/coreui-vue/src/components/placeholder/__tests__/__snapshots__/CPlaceholder.spec.ts.snap b/packages/coreui-vue/src/components/placeholder/__tests__/__snapshots__/CPlaceholder.spec.ts.snap deleted file mode 100644 index 3f43d58c..00000000 --- a/packages/coreui-vue/src/components/placeholder/__tests__/__snapshots__/CPlaceholder.spec.ts.snap +++ /dev/null @@ -1,15 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CPlaceholder component renders correctly 1`] = ` - -`; - -exports[`Loads and display CPlaceholder component renders correctly with slot 1`] = ` - - Hello World! - -`; diff --git a/packages/coreui-vue/src/components/placeholder/index.ts b/packages/coreui-vue/src/components/placeholder/index.ts deleted file mode 100644 index 87038824..00000000 --- a/packages/coreui-vue/src/components/placeholder/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CPlaceholder } from './CPlaceholder' - -const CPlaceholderPlugin = { - install: (app: App): void => { - app.component(CPlaceholder.name as string, CPlaceholder) - }, -} - -export { CPlaceholderPlugin, CPlaceholder } diff --git a/packages/coreui-vue/src/components/popover/CPopover.ts b/packages/coreui-vue/src/components/popover/CPopover.ts deleted file mode 100644 index 300f876a..00000000 --- a/packages/coreui-vue/src/components/popover/CPopover.ts +++ /dev/null @@ -1,256 +0,0 @@ -import { defineComponent, h, PropType, ref, RendererElement, Transition, useId } from 'vue' -import type { Placement } from '@popperjs/core' - -import { CConditionalTeleport } from '../conditional-teleport' -import { usePopper } from '../../composables' -import type { Placements, Triggers } from '../../types' -import { executeAfterTransition } from '../../utils/transition' -import { getRTLPlacement } from '../../utils' - -const CPopover = defineComponent({ - name: 'CPopover', - inheritAttrs: false, - props: { - /** - * Apply a CSS fade transition to the popover. - * - * @since 4.9.0 - */ - animation: { - type: Boolean, - default: true, - }, - /** - * Appends the vue popover to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`. - * - * @since 5.0.0 - */ - container: { - type: [Object, String] as PropType HTMLElement) | string>, - default: 'body', - }, - /** - * Content for your component. If you want to pass non-string value please use dedicated slot `` - */ - content: String, - /** - * The delay for displaying and hiding the popover (in milliseconds). When a numerical value is provided, the delay applies to both the hide and show actions. The object structure for specifying the delay is as follows: delay: `{ 'show': 500, 'hide': 100 }`. - * - * @since 4.9.0 - */ - delay: { - type: [Number, Object] as PropType, - default: 0, - }, - /** - * Specify the desired order of fallback placements by providing a list of placements as an array. The placements should be prioritized based on preference. - * - * @since 4.9.0 - */ - fallbackPlacements: { - type: [String, Array] as PropType, - default: () => ['top', 'right', 'bottom', 'left'], - validator: (value: Placements | Placements[]) => { - if (typeof value === 'string') { - return ['top', 'right', 'bottom', 'left'].includes(value) - } - if (Array.isArray(value)) { - return value.every((e) => ['top', 'right', 'bottom', 'left'].includes(e)) - } - return false - }, - }, - /** - * Offset of the popover relative to its target. - */ - offset: { - type: Array, - default: () => [0, 8], - }, - /** - * Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. - */ - placement: { - type: String as PropType, - default: 'top', - validator: (value: string) => { - return ['top', 'right', 'bottom', 'left'].includes(value) - }, - }, - /** - * Title for your component. If you want to pass non-string value please use dedicated slot `` - */ - title: String, - /** - * Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. - * - * @values 'click', 'focus', 'hover' - */ - trigger: { - type: [String, Array] as PropType, - default: 'click', - validator: (value: Triggers | Triggers[]) => { - if (typeof value === 'string') { - return ['click', 'focus', 'hover'].includes(value) - } - if (Array.isArray(value)) { - return value.every((e) => ['click', 'focus', 'hover'].includes(e)) - } - return false - }, - }, - /** - * Toggle the visibility of popover component. - */ - visible: Boolean, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { attrs, slots, emit }) { - const togglerRef = ref() - const popoverRef = ref() - const visible = ref(props.visible) - - const { initPopper, destroyPopper } = usePopper() - const uniqueId = `popover-${useId()}` - - const delay = - typeof props.delay === 'number' ? { show: props.delay, hide: props.delay } : props.delay - - const popperConfig = { - modifiers: [ - { - name: 'arrow', - options: { - element: '.popover-arrow', - }, - }, - { - name: 'flip', - options: { - fallbackPlacements: props.fallbackPlacements, - }, - }, - { - name: 'offset', - options: { - offset: props.offset, - }, - }, - ], - placement: getRTLPlacement(props.placement, togglerRef.value), - } - - const handleEnter = (el: RendererElement, done: () => void) => { - emit('show') - initPopper(togglerRef.value, popoverRef.value, popperConfig) - el.classList.add('show') - executeAfterTransition(() => done(), el as HTMLElement) - } - - const handleLeave = (el: RendererElement, done: () => void) => { - emit('hide') - el.classList.remove('show') - executeAfterTransition(() => { - done() - destroyPopper() - }, el as HTMLElement) - } - - const toggleVisible = (event: Event, _visible: boolean) => { - togglerRef.value = event.target - if (_visible) { - setTimeout(() => { - visible.value = true - }, delay.show) - return - } - - setTimeout(() => { - visible.value = false - }, delay.hide) - } - - return () => [ - h( - CConditionalTeleport, - { - container: props.container, - teleport: true, - }, - { - default: () => - h( - Transition, - { - onEnter: (el, done) => handleEnter(el, done), - onLeave: (el, done) => handleLeave(el, done), - }, - () => - visible.value && - h( - 'div', - { - ...attrs, - class: [ - 'popover', - 'bs-popover-auto', - { - fade: props.animation, - }, - attrs.class, - ], - id: uniqueId, - ref: popoverRef, - role: 'tooltip', - }, - [ - h('div', { class: 'popover-arrow' }), - (props.title || slots.title) && - h( - 'div', - { class: 'popover-header' }, - { - default: () => (slots.title && slots.title()) || props.title, - }, - ), - (props.content || slots.content) && - h( - 'div', - { class: 'popover-body' }, - { - default: () => (slots.content && slots.content()) || props.content, - }, - ), - ], - ), - ), - }, - ), - slots.toggler && - slots.toggler({ - id: visible.value ? uniqueId : null, - on: { - click: (event: Event) => - props.trigger.includes('click') && toggleVisible(event, !visible.value), - blur: (event: Event) => props.trigger.includes('focus') && toggleVisible(event, false), - focus: (event: Event) => props.trigger.includes('focus') && toggleVisible(event, true), - mouseenter: (event: Event) => - props.trigger.includes('hover') && toggleVisible(event, true), - mouseleave: (event: Event) => - props.trigger.includes('hover') && toggleVisible(event, false), - }, - }), - ] - }, -}) - -export { CPopover } diff --git a/packages/coreui-vue/src/components/popover/index.ts b/packages/coreui-vue/src/components/popover/index.ts deleted file mode 100644 index 261dae00..00000000 --- a/packages/coreui-vue/src/components/popover/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CPopover } from './CPopover' - -const CPopoverPlugin = { - install: (app: App): void => { - app.component(CPopover.name as string, CPopover) - }, -} - -export { CPopoverPlugin, CPopover } diff --git a/packages/coreui-vue/src/components/progress/CProgress.ts b/packages/coreui-vue/src/components/progress/CProgress.ts deleted file mode 100644 index 03c39ed3..00000000 --- a/packages/coreui-vue/src/components/progress/CProgress.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { defineComponent, h, inject } from 'vue' - -import { CProgressBar } from './CProgressBar' -import { Color } from '../../props' - -const CProgress = defineComponent({ - name: 'CProgress', - props: { - /** - * Use to animate the stripes right to left via CSS3 animations. - */ - animated: Boolean, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Sets the height of the component. If you set that value the inner `` will automatically resize accordingly. - */ - height: Number, - /** - * A string of all className you want applied to the component. - * - * @since 5.0.0 - */ - progressBarClassName: String, - /** - * Makes progress bar thinner. - */ - thin: Boolean, - /** - * The percent to progress the ProgressBar. - */ - value: { - type: Number, - default: 0, - }, - /** - * Set the progress bar variant to optional striped. - * - * @values 'striped' - */ - variant: { - type: String, - validator: (value: string) => { - return value === 'striped' - }, - }, - /** - * Change the default color to white. - */ - white: Boolean, - }, - setup(props, { slots }) { - const stacked = inject('stacked', false) as boolean - - return () => - h( - 'div', - { - class: [ - 'progress', - { - 'progress-thin': props.thin, - 'progress-white': props.white, - }, - ], - style: { - ...(props.height ? { height: `${props.height}px` } : {}), - ...(stacked ? { width: `${props.value}%` } : {}), - }, - ...(props.value !== undefined && { - role: 'progressbar', - 'aria-valuenow': props.value, - 'aria-valuemin': 0, - 'aria-valuemax': 100, - }), - }, - // @ts-expect-error name is defined in component - slots.default && slots.default().some((vnode) => vnode.type.name === 'CProgressBar') - ? slots.default().map((vnode) => { - // @ts-expect-error name is defined in component - if (vnode.type.name === 'CProgressBar') { - return h(vnode, { - ...(props.animated && { animated: props.animated }), - ...(props.color && { color: props.color }), - ...(props.value && { value: props.value }), - ...(props.variant && { variant: props.variant }), - }) - } - return vnode - }) - : h( - CProgressBar, - { - ...(props.progressBarClassName && { class: props.progressBarClassName }), - animated: props.animated, - color: props.color, - value: props.value, - variant: props.variant, - }, - () => slots.default && slots.default(), - ), - ) - }, -}) - -export { CProgress } diff --git a/packages/coreui-vue/src/components/progress/CProgressBar.ts b/packages/coreui-vue/src/components/progress/CProgressBar.ts deleted file mode 100644 index a483cbde..00000000 --- a/packages/coreui-vue/src/components/progress/CProgressBar.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { defineComponent, h, inject } from 'vue' - -import { Color } from '../../props' - -const CProgressBar = defineComponent({ - name: 'CProgressBar', - props: { - /** - * Use to animate the stripes right to left via CSS3 animations. - */ - animated: Boolean, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * The percent to progress the ProgressBar. - */ - value: { - type: Number, - default: 0, - }, - /** - * Set the progress bar variant to optional striped. - * - * @values 'striped' - */ - variant: { - type: String, - validator: (value: string) => { - return value === 'striped' - }, - }, - }, - setup(props, { slots }) { - const stacked = inject('stacked', false) as boolean - - return () => - h( - 'div', - { - class: [ - 'progress-bar', - `bg-${props.color}`, - { - [`progress-bar-${props.variant}`]: props.variant, - ['progress-bar-animated']: props.animated, - }, - ], - ...(!stacked && { style: { width: `${props.value}%` } }), - }, - slots.default && slots.default(), - ) - }, -}) - -export { CProgressBar } diff --git a/packages/coreui-vue/src/components/progress/CProgressStacked.ts b/packages/coreui-vue/src/components/progress/CProgressStacked.ts deleted file mode 100644 index efa48cca..00000000 --- a/packages/coreui-vue/src/components/progress/CProgressStacked.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineComponent, h, provide } from 'vue' - -const CProgressStacked = defineComponent({ - name: 'CProgressStacked', - props: {}, - setup(_, { slots }) { - provide('stacked', true) - return () => - h( - 'div', - { - class: 'progress-stacked', - }, - slots.default && slots.default(), - ) - }, -}) - -export { CProgressStacked } diff --git a/packages/coreui-vue/src/components/progress/__tests__/CProgress.spec.ts b/packages/coreui-vue/src/components/progress/__tests__/CProgress.spec.ts deleted file mode 100644 index c9425d64..00000000 --- a/packages/coreui-vue/src/components/progress/__tests__/CProgress.spec.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CProgress as Component } from '../../../index' - -const ComponentName = 'CProgress' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - height: 100, - thin: true, - white: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('progress')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('progress')).toBe(true) - expect(customWrapper.classes('progress-thin')).toBe(true) - expect(customWrapper.classes('progress-white')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/progress/__tests__/CProgressBar.spec.ts b/packages/coreui-vue/src/components/progress/__tests__/CProgressBar.spec.ts deleted file mode 100644 index e5545ebf..00000000 --- a/packages/coreui-vue/src/components/progress/__tests__/CProgressBar.spec.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CProgressBar as Component } from '../../../index' - -const ComponentName = 'CProgressBar' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - animated: true, - color: 'warning', - value: 75, - variant: 'striped', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('progress-bar')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('progress-bar')).toBe(true) - expect(customWrapper.classes('progress-bar-striped')).toBe(true) - expect(customWrapper.classes('progress-bar-animated')).toBe(true) - expect(customWrapper.classes('bg-warning')).toBe(true) - expect(customWrapper.attributes('role')).toBe('progressbar') - expect(customWrapper.attributes('style')).toBe('width: 75%;') - expect(customWrapper.attributes('aria-valuenow')).toBe('75') - expect(customWrapper.attributes('aria-valuemin')).toBe('0') - expect(customWrapper.attributes('aria-valuemax')).toBe('100') - }) -}) diff --git a/packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgress.spec.ts.snap b/packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgress.spec.ts.snap deleted file mode 100644 index d4477a07..00000000 --- a/packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgress.spec.ts.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CProgress component renders correctly 1`] = ` -"
    -
    Default slot
    -
    " -`; - -exports[`Loads and display CProgress component renders correctly 1`] = ` -"
    -
    Default slot
    -
    " -`; diff --git a/packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.ts.snap b/packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.ts.snap deleted file mode 100644 index f5e81a11..00000000 --- a/packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CProgressBar component renders correctly 1`] = `"
    Default slot
    "`; - -exports[`Loads and display CProgressBar component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/progress/index.ts b/packages/coreui-vue/src/components/progress/index.ts deleted file mode 100644 index ae6fabfc..00000000 --- a/packages/coreui-vue/src/components/progress/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { App } from 'vue' -import { CProgress } from './CProgress' -import { CProgressBar } from './CProgressBar' -import { CProgressStacked } from './CProgressStacked' - -const CProgressPlugin = { - install: (app: App): void => { - app.component(CProgress.name as string, CProgress) - app.component(CProgressBar.name as string, CProgressBar) - app.component(CProgressStacked.name as string, CProgressStacked) - }, -} - -export { CProgressPlugin, CProgress, CProgressBar, CProgressStacked } diff --git a/packages/coreui-vue/src/components/sidebar/CSidebar.ts b/packages/coreui-vue/src/components/sidebar/CSidebar.ts deleted file mode 100644 index 64a5ef73..00000000 --- a/packages/coreui-vue/src/components/sidebar/CSidebar.ts +++ /dev/null @@ -1,218 +0,0 @@ -import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch } from 'vue' -import { CBackdrop } from '../backdrop' - -import { isInViewport } from '../../utils' - -const isOnMobile = (element: HTMLDivElement) => { - if (!element) { - return - } - - return Boolean(getComputedStyle(element).getPropertyValue('--cui-is-mobile')) -} - -const CSidebar = defineComponent({ - name: 'CSidebar', - props: { - /** - * Sets if the color of text should be colored for a light or dark dark background. - * - * @values 'dark', light' - */ - colorScheme: { - type: String, - default: undefined, - validator: (value: string) => { - return ['dark', 'light'].includes(value) - }, - }, - /** - * Make sidebar narrow. - */ - narrow: Boolean, - /** - * Set sidebar to overlaid variant. - */ - overlaid: Boolean, - /** - * Components placement, there’s no default placement. - * @values 'start', 'end' - */ - placement: { - type: String, - default: undefined, - validator: (value: string) => { - return ['start', 'end'].includes(value) - }, - }, - /** - * Place sidebar in non-static positions. - */ - position: { - type: String, - validator: (value: string) => { - return ['fixed'].includes(value) - }, - }, - /** - * Size the component small, large, or extra large. - */ - size: { - type: String, - validator: (value: string) => { - return ['sm', 'lg', 'xl'].includes(value) - }, - }, - /** - * Expand narrowed sidebar on hover. - */ - unfoldable: Boolean, - /** - * Toggle the visibility of sidebar component. - */ - visible: { - type: Boolean, - default: undefined, - }, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - /** - * Event emitted after visibility of component changed. - */ - 'visible-change', - ], - setup(props, { attrs, slots, emit }) { - const sidebarRef = ref() - - const inViewport = ref() - const mobile = ref() - const visibleMobile = ref(false) - const visibleDesktop = ref( - props.visible === undefined ? (props.overlaid ? false : true) : props.visible, - ) - - watch(inViewport, () => { - emit('visible-change', inViewport.value) - inViewport.value ? emit('show') : emit('hide') - }) - - watch( - () => props.visible, - () => props.visible !== undefined && handleVisibleChange(props.visible), - ) - - watch(mobile, () => { - if (mobile.value) { - console.log('mobile') - visibleMobile.value = false - } - }) - - onMounted(() => { - mobile.value = isOnMobile(sidebarRef.value) - inViewport.value = isInViewport(sidebarRef.value) - - window.addEventListener('resize', handleResize) - window.addEventListener('mouseup', handleClickOutside) - window.addEventListener('keyup', handleKeyup) - - sidebarRef.value.addEventListener('mouseup', handleOnClick) - sidebarRef.value.addEventListener('transitionend', () => { - inViewport.value = isInViewport(sidebarRef.value) - }) - }) - - onBeforeUnmount(() => { - window.removeEventListener('resize', handleResize) - window.removeEventListener('mouseup', handleClickOutside) - window.removeEventListener('keyup', handleKeyup) - - sidebarRef.value.removeEventListener('mouseup', handleOnClick) - // eslint-disable-next-line unicorn/no-invalid-remove-event-listener - sidebarRef.value.removeEventListener('transitionend', () => { - inViewport.value = isInViewport(sidebarRef.value) - }) - }) - - const handleVisibleChange = (visible: boolean) => { - if (mobile.value) { - visibleMobile.value = visible - return - } - - visibleDesktop.value = visible - } - - const handleHide = () => { - handleVisibleChange(false) - emit('visible-change', false) - } - - const handleResize = () => { - mobile.value = isOnMobile(sidebarRef.value) - inViewport.value = isInViewport(sidebarRef.value) - } - - const handleKeyup = (event: Event) => { - if (mobile.value && !sidebarRef.value.contains(event.target as HTMLElement)) { - handleHide() - } - } - const handleClickOutside = (event: Event) => { - if (mobile.value && !sidebarRef.value.contains(event.target as HTMLElement)) { - handleHide() - } - } - - const handleOnClick = (event: Event) => { - const target = event.target as HTMLAnchorElement - target && - target.classList.contains('nav-link') && - !target.classList.contains('nav-group-toggle') && - mobile.value && - handleHide() - } - - return () => [ - h( - 'div', - { - class: [ - 'sidebar', - { - [`sidebar-${props.colorScheme}`]: props.colorScheme, - 'sidebar-narrow': props.narrow, - 'sidebar-overlaid': props.overlaid, - [`sidebar-${props.placement}`]: props.placement, - [`sidebar-${props.position}`]: props.position, - [`sidebar-${props.size}`]: props.size, - 'sidebar-narrow-unfoldable': props.unfoldable, - show: - (mobile.value && visibleMobile.value) || (props.overlaid && visibleDesktop.value), - hide: visibleDesktop.value === false && !mobile.value && !props.overlaid, - }, - attrs.class, - ], - ref: sidebarRef, - }, - slots.default && slots.default(), - ), - mobile.value && - h(CBackdrop, { - class: 'sidebar-backdrop', - visible: visibleMobile.value, - onClick: () => handleHide(), - }), - ] - }, -}) - -export { CSidebar } diff --git a/packages/coreui-vue/src/components/sidebar/CSidebarBrand.ts b/packages/coreui-vue/src/components/sidebar/CSidebarBrand.ts deleted file mode 100644 index d58b5803..00000000 --- a/packages/coreui-vue/src/components/sidebar/CSidebarBrand.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CSidebarBrand = defineComponent({ - name: 'CSidebarBrand', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - * - */ - as: { - type: String, - default: 'div', - }, - /** - * The href attribute specifies the URL of the page the link goes to. - */ - href: String, - }, - setup(props, { slots }) { - return () => - h( - props.as ?? (props.href ? 'a' : 'div'), - { class: 'sidebar-brand', href: props.href }, - slots.default && slots.default(), - ) - }, -}) - -export { CSidebarBrand } diff --git a/packages/coreui-vue/src/components/sidebar/CSidebarFooter.ts b/packages/coreui-vue/src/components/sidebar/CSidebarFooter.ts deleted file mode 100644 index 7f7cd837..00000000 --- a/packages/coreui-vue/src/components/sidebar/CSidebarFooter.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CSidebarFooter = defineComponent({ - name: 'CSidebarFooter', - setup(_, { slots }) { - return () => h('div', { class: 'sidebar-footer' }, slots.default && slots.default()) - }, -}) - -export { CSidebarFooter } diff --git a/packages/coreui-vue/src/components/sidebar/CSidebarHeader.ts b/packages/coreui-vue/src/components/sidebar/CSidebarHeader.ts deleted file mode 100644 index 4851fd3f..00000000 --- a/packages/coreui-vue/src/components/sidebar/CSidebarHeader.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CSidebarHeader = defineComponent({ - name: 'CSidebarHeader', - setup(_, { slots }) { - return () => h('div', { class: 'sidebar-header' }, slots.default && slots.default()) - }, -}) - -export { CSidebarHeader } diff --git a/packages/coreui-vue/src/components/sidebar/CSidebarNav.ts b/packages/coreui-vue/src/components/sidebar/CSidebarNav.ts deleted file mode 100644 index daea06af..00000000 --- a/packages/coreui-vue/src/components/sidebar/CSidebarNav.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Component, defineComponent, h, ref, PropType } from 'vue' - -const CSidebarNav = defineComponent({ - name: 'CSidebarNav', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: [Object, String] as PropType, - default: 'ul', - }, - }, - setup(props, { slots }) { - const visibleGroup = ref() - - const handleVisibleChange = (visible: boolean, index: number) => { - if (visible) { - visibleGroup.value = index - } else { - if (visibleGroup.value === index) { - visibleGroup.value = 0 - } - } - } - - const isVisible = (index: number) => Boolean(visibleGroup.value === index) - - return () => - h( - props.as, - { - class: 'sidebar-nav', - }, - { - default: () => - slots.default && - slots.default().map((vnode, index) => { - // @ts-expect-error name is defined in component - if (vnode.type.name === 'CNavGroup') { - return h(vnode, { - onVisibleChange: (visible: boolean) => handleVisibleChange(visible, index + 1), - ...(visibleGroup.value && { visible: isVisible(index + 1) }), - }) - } - return vnode - }), - }, - ) - }, -}) - -export { CSidebarNav } diff --git a/packages/coreui-vue/src/components/sidebar/CSidebarToggler.ts b/packages/coreui-vue/src/components/sidebar/CSidebarToggler.ts deleted file mode 100644 index 315fb5c9..00000000 --- a/packages/coreui-vue/src/components/sidebar/CSidebarToggler.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CSidebarToggler = defineComponent({ - name: 'CSidebarToggler', - setup(_, { slots }) { - return () => h('button', { class: 'sidebar-toggler' }, slots.default && slots.default()) - }, -}) - -export { CSidebarToggler } diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebar.spec.ts b/packages/coreui-vue/src/components/sidebar/__tests__/CSidebar.spec.ts deleted file mode 100644 index 9343351d..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebar.spec.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSidebar as Component } from '../../../index' - -const ComponentName = 'CSidebar' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - narrow: true, - overlaid: true, - position: 'fixed', - size: 'xl', - unfoldable: true, - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.find('.sidebar').classes('sidebar')).toBe(true) - expect(defaultWrapper.find('.sidebar').classes('hide')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.find('.sidebar').classes('sidebar')).toBe(true) - expect(customWrapper.find('.sidebar').classes('sidebar-narrow')).toBe(true) - expect(customWrapper.find('.sidebar').classes('sidebar-overlaid')).toBe(true) - expect(customWrapper.find('.sidebar').classes('sidebar-fixed')).toBe(true) - expect(customWrapper.find('.sidebar').classes('sidebar-xl')).toBe(true) - expect(customWrapper.find('.sidebar').classes('sidebar-narrow-unfoldable')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarBrand.spec.ts b/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarBrand.spec.ts deleted file mode 100644 index 1b849317..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarBrand.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSidebarBrand as Component } from '../../../index' - -const ComponentName = 'CSidebarBrand' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('sidebar-brand')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarFooter.spec.ts b/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarFooter.spec.ts deleted file mode 100644 index 27830c41..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarFooter.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSidebarFooter as Component } from '../../../index' - -const ComponentName = 'CSidebarFooter' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('sidebar-footer')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarHeader.spec.ts b/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarHeader.spec.ts deleted file mode 100644 index ced864e1..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarHeader.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSidebarHeader as Component } from '../../../index' - -const ComponentName = 'CSidebarHeader' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('sidebar-header')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarNav.spec.ts b/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarNav.spec.ts deleted file mode 100644 index d1bfc88d..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarNav.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSidebarNav as Component } from '../../../index' - -const ComponentName = 'CSidebarNav' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('sidebar-nav')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarToggler.spec.ts b/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarToggler.spec.ts deleted file mode 100644 index 630609e6..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/CSidebarToggler.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSidebarToggler as Component } from '../../../index' - -const ComponentName = 'CSidebarToggler' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('sidebar-toggler')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.ts.snap b/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.ts.snap deleted file mode 100644 index 15a3cec4..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CSidebar component renders correctly 1`] = `""`; - -exports[`Loads and display CSidebar component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarBrand.spec.ts.snap b/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarBrand.spec.ts.snap deleted file mode 100644 index 5b05d064..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarBrand.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CSidebarBrand component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarFooter.spec.ts.snap b/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarFooter.spec.ts.snap deleted file mode 100644 index c275d81c..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarFooter.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CSidebarFooter component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarHeader.spec.ts.snap b/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarHeader.spec.ts.snap deleted file mode 100644 index edf15cc3..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarHeader.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CSidebarHeader component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarNav.spec.ts.snap b/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarNav.spec.ts.snap deleted file mode 100644 index b476da94..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarNav.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CSidebarNav component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarToggler.spec.ts.snap b/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarToggler.spec.ts.snap deleted file mode 100644 index 402da170..00000000 --- a/packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarToggler.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CSidebarToggler component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/sidebar/index.ts b/packages/coreui-vue/src/components/sidebar/index.ts deleted file mode 100644 index 11dd0095..00000000 --- a/packages/coreui-vue/src/components/sidebar/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { App } from 'vue' -import { CSidebar } from './CSidebar' -import { CSidebarBrand } from './CSidebarBrand' -import { CSidebarFooter } from './CSidebarFooter' -import { CSidebarHeader } from './CSidebarHeader' -import { CSidebarNav } from './CSidebarNav' -import { CSidebarToggler } from './CSidebarToggler' - -const CSidebarPlugin = { - install: (app: App): void => { - app.component(CSidebar.name as string, CSidebar) - app.component(CSidebarBrand.name as string, CSidebarBrand) - app.component(CSidebarFooter.name as string, CSidebarFooter) - app.component(CSidebarHeader.name as string, CSidebarHeader) - app.component(CSidebarNav.name as string, CSidebarNav) - app.component(CSidebarToggler.name as string, CSidebarToggler) - }, -} - -export { - CSidebarPlugin, - CSidebar, - CSidebarBrand, - CSidebarFooter, - CSidebarHeader, - CSidebarNav, - CSidebarToggler, -} diff --git a/packages/coreui-vue/src/components/spinner/CSpinner.ts b/packages/coreui-vue/src/components/spinner/CSpinner.ts deleted file mode 100644 index 1e4f0f26..00000000 --- a/packages/coreui-vue/src/components/spinner/CSpinner.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CSpinner = defineComponent({ - name: 'CSpinner', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: { - type: String, - default: 'div', - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: { - type: String, - validator: (value: string) => { - return [ - 'primary', - 'secondary', - 'success', - 'danger', - 'warning', - 'info', - 'dark', - 'light', - ].includes(value) - }, - }, - /** - * Size the component small. - * - * @values 'sm' - */ - size: { - type: String, - validator: (value: string) => { - return value === 'sm' - }, - }, - /** - * Set the button variant to an outlined button or a ghost button. - * - * @values 'border', 'grow' - */ - variant: { - type: String, - default: 'border', - validator: (value: string) => { - return ['border', 'grow'].includes(value) - }, - }, - /** - * Set visually hidden label for accessibility purposes. - */ - visuallyHiddenLabel: { - type: String, - default: 'Loading...', - }, - }, - setup(props) { - return () => - h( - props.as, - { - class: [ - `spinner-${props.variant}`, - { - [`spinner-${props.variant}-${props.size}`]: props.size, - [`text-${props.color}`]: props.color, - }, - ], - role: 'status', - }, - h('span', { class: ['visually-hidden'] }, props.visuallyHiddenLabel), - ) - }, -}) - -export { CSpinner } diff --git a/packages/coreui-vue/src/components/spinner/__tests__/CSpinner.spec.ts b/packages/coreui-vue/src/components/spinner/__tests__/CSpinner.spec.ts deleted file mode 100644 index f007df07..00000000 --- a/packages/coreui-vue/src/components/spinner/__tests__/CSpinner.spec.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CSpinner as Component } from '../../../index' - -const ComponentName = 'CSpinner' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: 'h4', - color: 'warning', - size: 'sm', - variant: 'grow', - visuallyHiddenLabel: 'visuallyHiddenLabel', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('spinner-border')).toBe(true) - expect(defaultWrapper.classes('text-undefined')).toBe(true) - expect(defaultWrapper.find('span').classes('visually-hidden')).toBe(true) - expect(defaultWrapper.find('span').text()).toContain('Loading...') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.classes('spinner-grow')).toBe(true) - expect(customWrapper.classes('text-warning')).toBe(true) - expect(customWrapper.classes('spinner-grow-sm')).toBe(true) - expect(customWrapper.find('span').classes('visually-hidden')).toBe(true) - expect(customWrapper.find('span').text()).toContain('visuallyHiddenLabel') - }) -}) diff --git a/packages/coreui-vue/src/components/spinner/__tests__/__snapshots__/CSpinner.spec.ts.snap b/packages/coreui-vue/src/components/spinner/__tests__/__snapshots__/CSpinner.spec.ts.snap deleted file mode 100644 index 2147b3ac..00000000 --- a/packages/coreui-vue/src/components/spinner/__tests__/__snapshots__/CSpinner.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CSpinner component renders correctly 1`] = `"

    visuallyHiddenLabel

    "`; - -exports[`Loads and display CSpinner component renders correctly 1`] = `"
    Loading...
    "`; diff --git a/packages/coreui-vue/src/components/spinner/index.ts b/packages/coreui-vue/src/components/spinner/index.ts deleted file mode 100644 index 8bcffb6d..00000000 --- a/packages/coreui-vue/src/components/spinner/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CSpinner } from './CSpinner' - -const CSpinnerPlugin = { - install: (app: App): void => { - app.component(CSpinner.name as string, CSpinner) - }, -} - -export { CSpinnerPlugin, CSpinner } diff --git a/packages/coreui-vue/src/components/table/CTable.ts b/packages/coreui-vue/src/components/table/CTable.ts deleted file mode 100644 index 563f6ac8..00000000 --- a/packages/coreui-vue/src/components/table/CTable.ts +++ /dev/null @@ -1,317 +0,0 @@ -import { computed, defineComponent, h, PropType } from 'vue' - -import { CTableBody } from './CTableBody' -import { CTableCaption } from './CTableCaption' -import { CTableDataCell } from './CTableDataCell' -import { CTableFoot } from './CTableFoot' -import { CTableHead } from './CTableHead' -import { CTableHeaderCell } from './CTableHeaderCell' -import { CTableRow } from './CTableRow' - -import { Color } from '../../props' -import { getColumnLabel, getColumnNames } from './utils' -import type { Column, FooterItem, Item } from './types' - -const CTable = defineComponent({ - name: 'CTable', - props: { - /** - * Set the vertical aligment. - * - * @values 'bottom', 'middle', 'top' - */ - align: { - type: String, - validator: (value: string) => { - return ['bottom', 'middle', 'top'].includes(value) - }, - }, - /** - * Sets the border color of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - borderColor: Color, - /** - * Add borders on all sides of the table and cells. - */ - bordered: Boolean, - /** - * Remove borders on all sides of the table and cells. - */ - borderless: Boolean, - /** - * Put the `` on the top of the table. - * - * @values 'top' | string - */ - caption: String, - /** - * Set the text of the table caption and the caption on the top of the table. - * - * @since 4.5.0 - */ - captionTop: String, - /** - * Prop for table columns configuration. If prop is not defined, table will display columns based on the first item keys, omitting keys that begins with underscore (e.g. '_props') - * - * In columns prop each array item represents one column. Item might be specified in two ways: - * String: each item define column name equal to item value. - * Object: item is object with following keys available as column configuration: - * - key (required)(String) - define column name equal to item key. - * - label (String) - define visible label of column. If not defined, label will be generated automatically based on column name, by converting kebab-case and snake_case to individual words and capitalization of each word. - * - _props (Object) - adds classes to all cels in column, ex. _props: { scope: 'col', className: 'custom-class' }, - * - _style (Object) - adds styles to the column header (useful for defining widths) - * - * @since 4.5.0 - */ - columns: { - type: Array as PropType<(Column | string)[]>, - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - /** - * Array of objects or strings, where each element represents one cell in the table footer. - * - * Example items: - * ['FooterCell', 'FooterCell', 'FooterCell'] - * or - * [{ label: 'FooterCell', _props: { color: 'success' }, ...] - * - * @since 4.5.0 - */ - footer: { - type: Array as PropType<(FooterItem | string)[]>, - }, - /** - * Enable a hover state on table rows within a ``. - */ - hover: Boolean, - /** - * Array of objects, where each object represents one item - row in table. Additionally, you can add style classes to each row by passing them by '_props' key and to single cell by '_cellProps'. - * - * Example item: - * { name: 'John' , age: 12, _props: { color: 'success' }, _cellProps: { age: { className: 'fw-bold'}}} - * - * @since 4.5.0 - */ - items: { - type: Array as PropType, - }, - responsive: { - type: [Boolean, String], - validator: (value: boolean | string) => { - if (typeof value == 'string') { - return ['sm', 'md', 'lg', 'xl', 'xxl'].includes(value) - } - if (typeof value == 'boolean') { - return true - } - return false - }, - }, - /** - * Make table more compact by cutting all cell `padding` in half. - */ - small: Boolean, - /** - * Add zebra-striping to any table row within the ``. - */ - striped: Boolean, - /** - * Add zebra-striping to any table column. - * - * @since 4.4.0 - */ - stripedColumns: Boolean, - /** - * Properties that will be passed to the table footer component. - * - * Properties to [CTableFoot](#ctablefoot) component. - * @since 4.5.0 - */ - tableFootProps: { - type: Object, - }, - /** - * Properties that will be passed to the table head component. - * - * Properties to [CTableHead](#ctablehead) component. - * @since 4.5.0 - */ - tableHeadProps: { - type: Object, - }, - }, - setup(props, { slots, attrs }) { - const columnNames = computed(() => getColumnNames(props.columns, props.items)) - // props.columns - // ? props.columns.map((column: Column | string) => { - // if (typeof column === 'object') return column.key - // else return column - // }) - // : Object.keys((props.items && props.items[0]) || {}).filter((el) => el.charAt(0) !== '_'), - // ) - - const table = () => - h( - 'table', - { - class: [ - 'table', - { - [`align-${props.align}`]: props.align, - [`caption-top`]: props.captionTop || props.caption === 'top', - [`border-${props.borderColor}`]: props.borderColor, - 'table-bordered': props.bordered, - 'table-borderless': props.borderless, - [`table-${props.color}`]: props.color, - 'table-hover': props.hover, - 'table-sm': props.small, - 'table-striped': props.striped, - 'table-striped-columns': props.stripedColumns, - }, - attrs.class, - ], - }, - { - default: () => [ - ((props.caption && props.caption !== 'top') || props.captionTop) && - h( - CTableCaption, - {}, - { - default: () => props.caption || props.captionTop, - }, - ), - props.columns && - h( - CTableHead, - { - ...props.tableHeadProps, - }, - { - default: () => - h( - CTableRow, - {}, - { - default: () => [ - props.columns && - props.columns.map((column: Column | string) => - h( - CTableHeaderCell, - { - ...(typeof column === 'object' && - column._props && { ...column._props }), - ...(typeof column === 'object' && - column._style && { style: { ...column._style } }), - }, - { - default: () => getColumnLabel(column), - }, - ), - ), - ], - }, - ), - }, - ), - props.items && - h( - CTableBody, - {}, - { - default: () => [ - props.items && - props.items.map((item: Item) => - h( - CTableRow, - { - ...(item._props && { ...item._props }), - }, - { - default: () => [ - columnNames.value && - columnNames.value.map( - (colName: string) => - item[colName] !== undefined && - h( - CTableDataCell, - { - ...(item._cellProps && - item._cellProps['all'] && { ...item._cellProps['all'] }), - ...(item._cellProps && - item._cellProps[colName] && { - ...item._cellProps[colName], - }), - }, - { - default: () => item[colName], - }, - ), - ), - ], - }, - ), - ), - ], - }, - ), - slots.default && slots.default(), - props.footer && - h( - CTableFoot, - { - ...props.tableFootProps, - }, - { - default: () => - h( - CTableRow, - {}, - { - default: () => [ - props.footer && - props.footer.map((item: FooterItem | string) => - h( - CTableDataCell, - { - ...(typeof item === 'object' && - item._props && { ...item._props }), - }, - { - default: () => (typeof item === 'object' ? item.label : item), - }, - ), - ), - ], - }, - ), - }, - ), - ], - }, - ) - return () => [ - props.responsive - ? h( - 'div', - { - class: - typeof props.responsive === 'boolean' - ? 'table-responsive' - : `table-responsive-${props.responsive}`, - }, - table(), - ) - : table(), - ] - }, -}) - -export { CTable } diff --git a/packages/coreui-vue/src/components/table/CTableBody.ts b/packages/coreui-vue/src/components/table/CTableBody.ts deleted file mode 100644 index 83526901..00000000 --- a/packages/coreui-vue/src/components/table/CTableBody.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CTableBody = defineComponent({ - name: 'CTableBody', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - }, - setup(props, { slots }) { - return () => - h( - 'tbody', - { - class: [ - { - [`table-${props.color}`]: props.color, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTableBody } diff --git a/packages/coreui-vue/src/components/table/CTableCaption.ts b/packages/coreui-vue/src/components/table/CTableCaption.ts deleted file mode 100644 index ef069990..00000000 --- a/packages/coreui-vue/src/components/table/CTableCaption.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CTableCaption = defineComponent({ - name: 'CTableCaption', - setup(_, { slots }) { - return () => h('caption', {}, slots.default && slots.default()) - }, -}) - -export { CTableCaption } diff --git a/packages/coreui-vue/src/components/table/CTableDataCell.ts b/packages/coreui-vue/src/components/table/CTableDataCell.ts deleted file mode 100644 index fa60429c..00000000 --- a/packages/coreui-vue/src/components/table/CTableDataCell.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CTableDataCell = defineComponent({ - name: 'CTableDataCell', - props: { - /** - * Highlight a table row or cell. - */ - active: Boolean, - /** - * Set the vertical aligment. - * - * @values 'bottom', 'middle', 'top' - */ - align: { - type: String, - validator: (value: string) => { - return ['bottom', 'middle', 'top'].includes(value) - }, - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - /** - * @ignore - */ - scope: String, - }, - setup(props, { slots }) { - return () => - h( - props.scope ? 'th' : 'td', - { - class: [ - { - [`align-${props.align}`]: props.align, - 'table-active': props.active, - [`table-${props.color}`]: props.color, - }, - ], - ...(props.scope && { scope: props.scope }), - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTableDataCell } diff --git a/packages/coreui-vue/src/components/table/CTableFoot.ts b/packages/coreui-vue/src/components/table/CTableFoot.ts deleted file mode 100644 index 3876e05c..00000000 --- a/packages/coreui-vue/src/components/table/CTableFoot.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CTableFoot = defineComponent({ - name: 'CTableFoot', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - }, - setup(props, { slots }) { - return () => - h( - 'tfoot', - { - class: [ - { - [`table-${props.color}`]: props.color, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTableFoot } diff --git a/packages/coreui-vue/src/components/table/CTableHead.ts b/packages/coreui-vue/src/components/table/CTableHead.ts deleted file mode 100644 index 85a50aa2..00000000 --- a/packages/coreui-vue/src/components/table/CTableHead.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CTableHead = defineComponent({ - name: 'CTableHead', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - }, - setup(props, { slots }) { - return () => - h( - 'thead', - { - class: [ - { - [`table-${props.color}`]: props.color, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTableHead } diff --git a/packages/coreui-vue/src/components/table/CTableHeaderCell.ts b/packages/coreui-vue/src/components/table/CTableHeaderCell.ts deleted file mode 100644 index fb4c9bea..00000000 --- a/packages/coreui-vue/src/components/table/CTableHeaderCell.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CTableHeaderCell = defineComponent({ - name: 'CTableHeaderCell', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - }, - setup(props, { slots }) { - return () => - h( - 'th', - { - class: [ - { - [`table-${props.color}`]: props.color, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTableHeaderCell } diff --git a/packages/coreui-vue/src/components/table/CTableRow.ts b/packages/coreui-vue/src/components/table/CTableRow.ts deleted file mode 100644 index 40dfeb66..00000000 --- a/packages/coreui-vue/src/components/table/CTableRow.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { Color } from '../../props' - -const CTableRow = defineComponent({ - name: 'CTableRow', - props: { - /** - * Highlight a table row or cell.. - */ - active: Boolean, - /** - * Set the vertical aligment. - * - * @values 'bottom', 'middle', 'top' - */ - align: { - type: String, - validator: (value: string) => { - return ['bottom', 'middle', 'top'].includes(value) - }, - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - }, - setup(props, { slots }) { - return () => - h( - 'tr', - { - class: [ - { - [`align-${props.align}`]: props.align, - 'table-active': props.active, - [`table-${props.color}`]: props.color, - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTableRow } diff --git a/packages/coreui-vue/src/components/table/__tests__/CTable.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTable.spec.ts deleted file mode 100644 index 04a481f0..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTable.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTable as Component } from '../../../index' - -const ComponentName = 'CTable' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - align: 'center', - borderColor: 'dark', - bordered: true, - borderless: true, - caption: 'top', - color: 'warning', - hover: true, - responsive: 'lg', - small: true, - striped: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.find('table').text()).toContain('Default slot') - expect(defaultWrapper.find('table').classes('table')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.find('div').classes('table-responsive-lg')).toBe(true) - expect(customWrapper.find('table').text()).toContain('Default slot') - expect(customWrapper.find('table').classes('table')).toBe(true) - expect(customWrapper.find('table').classes('align-center')).toBe(true) - expect(customWrapper.find('table').classes('table')).toBe(true) - expect(customWrapper.find('table').classes('caption-top')).toBe(true) - expect(customWrapper.find('table').classes('border-dark')).toBe(true) - expect(customWrapper.find('table').classes('table-bordered')).toBe(true) - expect(customWrapper.find('table').classes('table-borderless')).toBe(true) - expect(customWrapper.find('table').classes('table-warning')).toBe(true) - expect(customWrapper.find('table').classes('table-hover')).toBe(true) - expect(customWrapper.find('table').classes('table-sm')).toBe(true) - expect(customWrapper.find('table').classes('table-striped')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableBody.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableBody.spec.ts deleted file mode 100644 index abbdc049..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableBody.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableBody as Component } from '../../../index' - -const ComponentName = 'CTableBody' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('table-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableCaption.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableCaption.spec.ts deleted file mode 100644 index aa388314..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableCaption.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableCaption as Component } from '../../../index' - -const ComponentName = 'CTableCaption' - -const defaultWrapper = mount(Component, { - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableDataCell.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableDataCell.spec.ts deleted file mode 100644 index 530fac28..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableDataCell.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableDataCell as Component } from '../../../index' - -const ComponentName = 'CTableDataCell' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - align: 'middle', - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('align-middle')).toBe(true) - expect(customWrapper.classes('table-active')).toBe(true) - expect(customWrapper.classes('table-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableFoot.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableFoot.spec.ts deleted file mode 100644 index ccb2a125..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableFoot.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableFoot as Component } from '../../../index' - -const ComponentName = 'CTableFoot' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('table-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableHead.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableHead.spec.ts deleted file mode 100644 index fa8672a9..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableHead.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableHead as Component } from '../../../index' - -const ComponentName = 'CTableHead' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('table-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableHeaderCell.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableHeaderCell.spec.ts deleted file mode 100644 index e79a589d..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableHeaderCell.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableHeaderCell as Component } from '../../../index' - -const ComponentName = 'CTableHeaderCell' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('table-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/CTableRow.spec.ts b/packages/coreui-vue/src/components/table/__tests__/CTableRow.spec.ts deleted file mode 100644 index 755b0da4..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/CTableRow.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTableRow as Component } from '../../../index' - -const ComponentName = 'CTableRow' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - active: true, - align: 'middle', - color: 'warning', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('align-middle')).toBe(true) - expect(customWrapper.classes('table-active')).toBe(true) - expect(customWrapper.classes('table-warning')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTable.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTable.spec.ts.snap deleted file mode 100644 index 896ca48b..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTable.spec.ts.snap +++ /dev/null @@ -1,21 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTable component renders correctly 1`] = ` -"
    - - - - Default slot - -
    -
    " -`; - -exports[`Loads and display CTable component renders correctly 1`] = ` -" - - - Default slot - -
    " -`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableBody.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableBody.spec.ts.snap deleted file mode 100644 index fc64a172..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableBody.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTableBody component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CTableBody component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableCaption.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableCaption.spec.ts.snap deleted file mode 100644 index 51b451b6..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableCaption.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CTableCaption component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableDataCell.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableDataCell.spec.ts.snap deleted file mode 100644 index 75f33858..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableDataCell.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTableDataCell component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CTableDataCell component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableFoot.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableFoot.spec.ts.snap deleted file mode 100644 index 4d50b597..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableFoot.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTableFoot component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CTableFoot component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHead.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHead.spec.ts.snap deleted file mode 100644 index e2a9c114..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHead.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTableHead component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CTableHead component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHeaderCell.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHeaderCell.spec.ts.snap deleted file mode 100644 index b5523d84..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHeaderCell.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTableHeaderCell component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CTableHeaderCell component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableRow.spec.ts.snap b/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableRow.spec.ts.snap deleted file mode 100644 index 11c6d246..00000000 --- a/packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableRow.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTableRow component renders correctly 1`] = `"Default slot"`; - -exports[`Loads and display CTableRow component renders correctly 1`] = `"Default slot"`; diff --git a/packages/coreui-vue/src/components/table/index.ts b/packages/coreui-vue/src/components/table/index.ts deleted file mode 100644 index 96b44727..00000000 --- a/packages/coreui-vue/src/components/table/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { App } from 'vue' -import { CTable } from './CTable' -import { CTableBody } from './CTableBody' -import { CTableCaption } from './CTableCaption' -import { CTableDataCell } from './CTableDataCell' -import { CTableFoot } from './CTableFoot' -import { CTableHead } from './CTableHead' -import { CTableHeaderCell } from './CTableHeaderCell' -import { CTableRow } from './CTableRow' - -const CTablePlugin = { - install: (app: App): void => { - app.component(CTable.name as string, CTable) - app.component(CTableBody.name as string, CTableBody) - app.component(CTableCaption.name as string, CTableCaption) - app.component(CTableDataCell.name as string, CTableDataCell) - app.component(CTableFoot.name as string, CTableFoot) - app.component(CTableHead.name as string, CTableHead) - app.component(CTableHeaderCell.name as string, CTableHeaderCell) - app.component(CTableRow.name as string, CTableRow) - }, -} - -export { - CTablePlugin, - CTable, - CTableBody, - CTableCaption, - CTableDataCell, - CTableFoot, - CTableHead, - CTableHeaderCell, - CTableRow, -} diff --git a/packages/coreui-vue/src/components/table/types.ts b/packages/coreui-vue/src/components/table/types.ts deleted file mode 100644 index 8f96b27b..00000000 --- a/packages/coreui-vue/src/components/table/types.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type Column = { - label?: string - key: string - // eslint-disable-next-line @typescript-eslint/no-explicit-any - _style?: any - // eslint-disable-next-line @typescript-eslint/no-explicit-any - _props?: any -} - -export type FooterItem = { - label?: string - // eslint-disable-next-line @typescript-eslint/no-explicit-any - _props?: any -} - -export type Item = { - [key: string]: number | string | any - // eslint-disable-next-line @typescript-eslint/no-explicit-any - _props?: any -} diff --git a/packages/coreui-vue/src/components/table/utils.ts b/packages/coreui-vue/src/components/table/utils.ts deleted file mode 100644 index 9c55ade1..00000000 --- a/packages/coreui-vue/src/components/table/utils.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Column, Item } from './types' - -export const pretifyName = (name: string) => { - return name - .replace(/[-_.]/g, ' ') - .replace(/ +/g, ' ') - .replace(/([a-z0-9])([A-Z])/g, '$1 $2') - .split(' ') - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' ') -} - -export const getColumnLabel = (column: Column | string) => - typeof column === 'object' ? column.label ?? pretifyName(column.key) : pretifyName(column) - -export const getColumnNames = (columns: (string | Column)[] | undefined, items?: Item[]) => - columns - ? columns.map((column: Column | string) => { - return typeof column === 'object' ? column.key : column - }) - : items && getColumnNamesFromItems(items) - -export const getColumnNamesFromItems = (items: Item[]) => - Object.keys(items[0] || {}).filter((el) => el.charAt(0) !== '_') diff --git a/packages/coreui-vue/src/components/tabs/CTab.ts b/packages/coreui-vue/src/components/tabs/CTab.ts deleted file mode 100644 index 5eb4c513..00000000 --- a/packages/coreui-vue/src/components/tabs/CTab.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { defineComponent, h, inject, Ref } from 'vue' - -const CTab = defineComponent({ - name: 'CTab', - props: { - /** - * Toggle the disabled state for the component. - * - * @since 5.4.0 - */ - disabled: Boolean, - /** - * Item key. - */ - itemKey: { - type: [Number, String], - required: true, - }, - }, - setup(props, { slots }) { - const activeItemKey = inject('activeItemKey') as Ref - const id = inject('id') - const setActiveItemKey = inject('setActiveItemKey') as (key: number | string) => void - - const isActive = () => props.itemKey === activeItemKey.value - - return () => - h( - 'button', - { - class: [ - 'nav-link', - { - active: isActive(), - }, - ], - id: `${props.itemKey}-tab-${id}`, - role: 'tab', - tabindex: isActive() ? 0 : -1, - type: 'button', - 'aria-controls': `${props.itemKey}-tab-panel-${id}`, - 'aria-selected': isActive(), - disabled: props.disabled, - onClick: () => setActiveItemKey(props.itemKey), - onFocus: () => setActiveItemKey(props.itemKey), - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTab } diff --git a/packages/coreui-vue/src/components/tabs/CTabContent.ts b/packages/coreui-vue/src/components/tabs/CTabContent.ts deleted file mode 100644 index f0ad00b1..00000000 --- a/packages/coreui-vue/src/components/tabs/CTabContent.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CTabContent = defineComponent({ - name: 'CTabContent', - setup(_, { slots }) { - return () => h('div', { class: 'tab-content' }, slots.default && slots.default()) - }, -}) - -export { CTabContent } diff --git a/packages/coreui-vue/src/components/tabs/CTabList.ts b/packages/coreui-vue/src/components/tabs/CTabList.ts deleted file mode 100644 index 63b720f2..00000000 --- a/packages/coreui-vue/src/components/tabs/CTabList.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { defineComponent, h, ref } from 'vue' -import { getNextActiveElement } from '../../utils' - -const CTabList = defineComponent({ - name: 'CTabList', - props: { - /** - * Specify a layout type for component. - * - * @values 'fill', 'justified' - */ - layout: { - type: String, - validator: (value: string) => { - return ['fill', 'justified'].includes(value) - }, - }, - /** - * Set the nav variant to tabs or pills. - * - * @values 'pills', 'tabs', 'underline', 'underline-border' - */ - variant: { - type: String, - validator: (value: string) => { - return ['pills', 'tabs', 'underline', 'underline-border'].includes(value) - }, - }, - }, - setup(props, { slots }) { - const tabListRef = ref() - - const handleKeydown = (event: KeyboardEvent) => { - if ( - tabListRef.value && - (event.key === 'ArrowDown' || - event.key === 'ArrowUp' || - event.key === 'ArrowLeft' || - event.key === 'ArrowRight' || - event.key === 'Home' || - event.key === 'End') - ) { - event.preventDefault() - const target = event.target as HTMLElement - // eslint-disable-next-line unicorn/prefer-spread - const items: HTMLElement[] = Array.from( - tabListRef.value.querySelectorAll('.nav-link:not(.disabled):not(:disabled)'), - ) - - let nextActiveElement - - if (event.key === 'Home' || event.key === 'End') { - nextActiveElement = event.key === 'End' ? items.at(-1) : items[0] - } else { - nextActiveElement = getNextActiveElement( - items, - target, - event.key === 'ArrowDown' || event.key === 'ArrowRight', - true, - ) - } - - if (nextActiveElement) { - nextActiveElement.focus({ preventScroll: true }) - } - } - } - - return () => - h( - 'div', - { - class: [ - 'nav', - { - [`nav-${props.layout}`]: props.layout, - [`nav-${props.variant}`]: props.variant, - }, - ], - role: 'tablist', - onKeydown: (event) => handleKeydown(event), - ref: tabListRef, - }, - slots.default && slots.default(), - ) - }, -}) - -export { CTabList } diff --git a/packages/coreui-vue/src/components/tabs/CTabPane.ts b/packages/coreui-vue/src/components/tabs/CTabPane.ts deleted file mode 100644 index 7614c346..00000000 --- a/packages/coreui-vue/src/components/tabs/CTabPane.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { defineComponent, h, ref, RendererElement, Transition, vShow, withDirectives } from 'vue' - -import { executeAfterTransition } from '../../utils/transition' - -const CTabPane = defineComponent({ - name: 'CTabPane', - props: { - /** - * Enable fade in and fade out transition. - * - * @since 5.1.0 - */ - transition: { - type: Boolean, - default: true, - }, - /** - * Toggle the visibility of component. - */ - visible: { - type: Boolean, - default: false, - }, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { slots, emit }) { - const tabPaneRef = ref() - const firstRender = ref(true) - - const handleEnter = (el: RendererElement, done: () => void) => { - firstRender.value = false - emit('show') - setTimeout(() => { - executeAfterTransition(() => done(), el as HTMLElement) - el.classList.add('show') - }, 1) - } - - const handleLeave = (el: RendererElement, done: () => void) => { - firstRender.value = false - emit('hide') - el.classList.remove('show') - executeAfterTransition(() => done(), el as HTMLElement) - } - - return () => - h( - Transition, - { - onEnter: (el, done) => handleEnter(el, done), - onLeave: (el, done) => handleLeave(el, done), - }, - () => - withDirectives( - h( - 'div', - { - class: [ - 'tab-pane', - { - active: props.visible, - fade: props.transition, - show: firstRender.value && props.visible, - }, - ], - ref: tabPaneRef, - }, - slots.default && slots.default(), - ), - [[vShow, props.visible]], - ), - ) - }, -}) - -export { CTabPane } diff --git a/packages/coreui-vue/src/components/tabs/CTabPanel.ts b/packages/coreui-vue/src/components/tabs/CTabPanel.ts deleted file mode 100644 index 3182e74f..00000000 --- a/packages/coreui-vue/src/components/tabs/CTabPanel.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { - defineComponent, - h, - inject, - ref, - Ref, - RendererElement, - Transition, - vShow, - watch, - withDirectives, -} from 'vue' - -import { executeAfterTransition } from '../../utils/transition' - -const CTabPanel = defineComponent({ - name: 'CTabPanel', - props: { - /** - * Item key. - */ - itemKey: { - type: [Number, String], - required: true, - }, - /** - * Enable fade in and fade out transition. - */ - transition: { - type: Boolean, - default: true, - }, - /** - * Toggle the visibility of component. - */ - visible: { - type: Boolean, - default: false, - }, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { slots, emit }) { - const activeItemKey = inject('activeItemKey') as Ref - const id = inject('id') - const tabPaneRef = ref() - const firstRender = ref(true) - const visible = ref() - - watch( - () => props.visible, - () => { - visible.value = props.visible - }, - { - immediate: true, - }, - ) - - watch( - activeItemKey, - () => { - visible.value = Boolean(activeItemKey.value === props.itemKey) - }, - { - immediate: true, - }, - ) - - const handleEnter = (el: RendererElement, done: () => void) => { - firstRender.value = false - emit('show') - setTimeout(() => { - executeAfterTransition(() => done(), el as HTMLElement) - el.classList.add('show') - }, 1) - } - - const handleLeave = (el: RendererElement, done: () => void) => { - firstRender.value = false - emit('hide') - el.classList.remove('show') - executeAfterTransition(() => done(), el as HTMLElement) - } - - return () => - h( - Transition, - { - onEnter: (el, done) => handleEnter(el, done), - onLeave: (el, done) => handleLeave(el, done), - }, - () => - withDirectives( - h( - 'div', - { - class: [ - 'tab-pane', - { - active: visible.value, - fade: props.transition, - show: firstRender.value && visible.value, - }, - ], - id: `${props.itemKey}-tab-panel-${id}`, - role: 'tabpanel', - 'aria-labelledby': `${props.itemKey}-tab-${id}`, - tabindex: 0, - ref: tabPaneRef, - }, - slots.default && slots.default(), - ), - [[vShow, visible.value]], - ), - ) - }, -}) - -export { CTabPanel } diff --git a/packages/coreui-vue/src/components/tabs/CTabs.ts b/packages/coreui-vue/src/components/tabs/CTabs.ts deleted file mode 100644 index b61908c2..00000000 --- a/packages/coreui-vue/src/components/tabs/CTabs.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { defineComponent, h, provide, ref, useId, watch } from 'vue' - -const CTabs = defineComponent({ - name: 'CTabs', - props: { - /** - * The active item key. - */ - activeItemKey: { - type: [Number, String], - required: true, - } - }, - emits: [ - /** - * The callback is fired when the active tab changes. - */ - 'change', - ], - setup(props, { slots, emit }) { - const activeItemKey = ref(props.activeItemKey) - const uniqueId = useId() - const setActiveItemKey = (key: string | number) => { - activeItemKey.value = key - } - - watch( - () => props.activeItemKey, - (value) => { - activeItemKey.value = value - emit('change', value) - }, - ) - - provide('activeItemKey', activeItemKey) - provide('id', uniqueId) - provide('setActiveItemKey', setActiveItemKey) - - return () => h('div', { class: 'tabs' }, slots.default && slots.default()) - }, -}) - -export { CTabs } diff --git a/packages/coreui-vue/src/components/tabs/__tests__/CTabContent.spec.ts b/packages/coreui-vue/src/components/tabs/__tests__/CTabContent.spec.ts deleted file mode 100644 index 20f4ffaf..00000000 --- a/packages/coreui-vue/src/components/tabs/__tests__/CTabContent.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTabContent as Component } from '../../../index' - -const ComponentName = 'CTabContent' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('tab-content')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/tabs/__tests__/CTabPane.spec.ts b/packages/coreui-vue/src/components/tabs/__tests__/CTabPane.spec.ts deleted file mode 100644 index 21b235f6..00000000 --- a/packages/coreui-vue/src/components/tabs/__tests__/CTabPane.spec.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CTabPane as Component } from '../../../index' - -const ComponentName = 'CTabPane' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.find('.tab-pane').classes('tab-pane')).toBe(true) - expect(defaultWrapper.find('.tab-pane').classes('fade')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.find('.tab-pane').classes('tab-pane')).toBe(true) - expect(customWrapper.find('.tab-pane').classes('fade')).toBe(true) - expect(customWrapper.find('.tab-pane').classes('show')).toBe(true) - expect(customWrapper.find('.tab-pane').classes('active')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabContent.spec.ts.snap b/packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabContent.spec.ts.snap deleted file mode 100644 index a6fe655d..00000000 --- a/packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabContent.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CTabContent component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap b/packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap deleted file mode 100644 index 49b97a03..00000000 --- a/packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CTabPane component renders correctly 1`] = ` -" -
    Default slot
    -
    " -`; - -exports[`Loads and display CTabPane component renders correctly 1`] = ` -" - -" -`; diff --git a/packages/coreui-vue/src/components/tabs/index.ts b/packages/coreui-vue/src/components/tabs/index.ts deleted file mode 100644 index 7c848b03..00000000 --- a/packages/coreui-vue/src/components/tabs/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { App } from 'vue' -import { CTab } from './CTab' -import { CTabContent } from './CTabContent' -import { CTabList } from './CTabList' -import { CTabPane } from './CTabPane' -import { CTabPanel } from './CTabPanel' -import { CTabs } from './CTabs' - -const CTabsPlugin = { - install: (app: App): void => { - app.component(CTab.name as string, CTab) - app.component(CTabContent.name as string, CTabContent) - app.component(CTabList.name as string, CTabList) - app.component(CTabPane.name as string, CTabPane) - app.component(CTabPanel.name as string, CTabPanel) - app.component(CTabs.name as string, CTabs) - }, -} - -export { CTabsPlugin, CTab, CTabContent, CTabList, CTabPane, CTabPanel, CTabs } diff --git a/packages/coreui-vue/src/components/toast/CToast.ts b/packages/coreui-vue/src/components/toast/CToast.ts deleted file mode 100644 index eb6c84e5..00000000 --- a/packages/coreui-vue/src/components/toast/CToast.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { defineComponent, h, onMounted, provide, ref, Transition } from 'vue' - -import { Color } from '../../props' - -const CToast = defineComponent({ - name: 'CToast', - props: { - /** - * Auto hide the toast. - */ - autohide: { - type: Boolean, - default: true, - }, - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string - */ - color: Color, - /** - * Delay hiding the toast (ms). - */ - delay: { - type: Number, - default: 5000, - }, - /** - * Optionally add a close button to component and allow it to self dismiss. - */ - dismissible: { - type: Boolean, - default: true, - }, - /** - * index of the component. - */ - index: Number, - /** - * Title node for your component. - */ - title: String, - /** - * Toggle the visibility of component. - */ - visible: Boolean, - }, - emits: [ - /** - * Callback fired when the component requests to be closed. - */ - 'close', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { slots, emit }) { - const timeout = ref(0) - const visible = ref() - - const updateVisible = (_visible: boolean) => { - visible.value = _visible - } - - provide('updateVisible', updateVisible) - - onMounted(() => { - if (props.visible) { - visible.value = props.visible - } - - if (props.autohide) { - clearTimeout(timeout.value) - timeout.value = window.setTimeout(() => { - visible.value = false - emit('close') - }, props.delay) - } - }) - - return () => - h( - Transition, - { - appear: true, - enterFromClass: '', - enterActiveClass: 'show showing', - enterToClass: 'show', - leaveFromClass: 'show', - leaveActiveClass: 'show showing', - leaveToClass: 'show', - onAfterEnter: (el) => { - el.classList.add('show') - props.index ? emit('show', props.index) : emit('show') - }, - onAfterLeave: () => { - props.index ? emit('close', props.index) : emit('close') - }, - }, - { - default: () => - visible.value && - h( - 'div', - { - class: [ - 'toast fade', - { - [`bg-${props.color}`]: props.color, - }, - ], - 'aria-live': 'assertive', - 'aria-atomic': true, - role: 'alert', - }, - slots.default && slots.default(), - ), - }, - ) - }, -}) - -export { CToast } diff --git a/packages/coreui-vue/src/components/toast/CToastBody.ts b/packages/coreui-vue/src/components/toast/CToastBody.ts deleted file mode 100644 index 7d935069..00000000 --- a/packages/coreui-vue/src/components/toast/CToastBody.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CToastBody = defineComponent({ - name: 'CToastBody', - setup(_, { slots }) { - return () => h('div', { class: 'toast-body' }, slots.default && slots.default()) - }, -}) - -export { CToastBody } diff --git a/packages/coreui-vue/src/components/toast/CToastClose.ts b/packages/coreui-vue/src/components/toast/CToastClose.ts deleted file mode 100644 index a190e323..00000000 --- a/packages/coreui-vue/src/components/toast/CToastClose.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { defineComponent, h, inject, resolveComponent } from 'vue' -import { CCloseButton } from '../close-button/CCloseButton' - -import type { ComponentProps } from '../../utils/ComponentProps' - -interface CCloseButtonProps extends ComponentProps { - as?: string -} - -const CToastClose = defineComponent({ - name: 'CToastClose', - props: { - /** - * Component used for the root node. Either a string to use a HTML element or a component. - */ - as: String, - ...CCloseButton.props, - }, - emits: [ - /** - * Event called before the dissmiss animation has started. - */ - 'close', - ], - setup(props: CCloseButtonProps, { slots, emit }) { - // eslint-disable-next-line no-unused-vars - const updateVisible = inject('updateVisible') as (visible: boolean) => void - const handleClose = () => { - emit('close') - updateVisible(false) - } - return () => - props.as - ? h( - resolveComponent(props.as), - { - onClick: () => { - handleClose() - }, - }, - () => slots.default && slots.default(), - ) - : h(CCloseButton, { - ...props, - onClick: () => { - handleClose() - }, - }) - }, -}) - -export { CToastClose } diff --git a/packages/coreui-vue/src/components/toast/CToastHeader.ts b/packages/coreui-vue/src/components/toast/CToastHeader.ts deleted file mode 100644 index 3f822da0..00000000 --- a/packages/coreui-vue/src/components/toast/CToastHeader.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineComponent, h } from 'vue' -import { CToastClose } from './CToastClose' - -const CToastHeader = defineComponent({ - name: 'CToastHeader', - props: { - /** - * Automatically add a close button to the header. - */ - closeButton: Boolean, - }, - setup(props, { slots }) { - return () => - h('div', { class: 'toast-header' }, [ - slots.default && slots.default(), - props.closeButton && h(CToastClose), - ]) - }, -}) - -export { CToastHeader } diff --git a/packages/coreui-vue/src/components/toast/CToaster.ts b/packages/coreui-vue/src/components/toast/CToaster.ts deleted file mode 100644 index 12217da4..00000000 --- a/packages/coreui-vue/src/components/toast/CToaster.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { defineComponent, h } from 'vue' - -const CToaster = defineComponent({ - name: 'CToaster', - props: { - /** - * Describes the placement of component. - * - * @values 'top-start', 'top', 'top-end', 'middle-start', 'middle', 'middle-end', 'bottom-start', 'bottom', 'bottom-end' - */ - placement: { - type: String, - validator: (value: string) => { - return [ - 'top-start', - 'top-center', - 'top-end', - 'middle-start', - 'middle-center', - 'middle-end', - 'bottom-start', - 'bottom-center', - 'bottom-end', - ].includes(value) - }, - }, - }, - setup(props, { slots }) { - return () => - h( - 'div', - { - class: [ - 'toaster toast-container', - { - 'position-fixed': props.placement, - 'top-0': props.placement && props.placement.includes('top'), - 'top-50 translate-middle-y': props.placement && props.placement.includes('middle'), - 'bottom-0': props.placement && props.placement.includes('bottom'), - 'start-0': props.placement && props.placement.includes('start'), - 'start-50 translate-middle-x': props.placement && props.placement.includes('center'), - 'end-0': props.placement && props.placement.includes('end'), - }, - ], - }, - slots.default && slots.default(), - ) - }, -}) - -export { CToaster } diff --git a/packages/coreui-vue/src/components/toast/__tests__/CToast.spec.ts b/packages/coreui-vue/src/components/toast/__tests__/CToast.spec.ts deleted file mode 100644 index c6296599..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/CToast.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CToast as Component } from '../../../index' - -const ComponentName = 'CToast' - -const defaultWrapper = mount(Component, { - propsData: { - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - autohide: false, - color: 'warning', - delay: 3000, - dismissible: false, - key: 123, - title: 'title', - visible: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.find('div').text()).toContain('Default slot') - expect(defaultWrapper.find('div').classes('toast')).toBe(true) - expect(defaultWrapper.find('div').classes('fade')).toBe(true) - expect(defaultWrapper.find('div').attributes('aria-live')).toBe('assertive') - expect(defaultWrapper.find('div').attributes('aria-atomic')).toBe('true') - expect(defaultWrapper.find('div').attributes('role')).toBe('alert') - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.find('div').text()).toContain('Default slot') - expect(customWrapper.find('div').classes('toast')).toBe(true) - expect(customWrapper.find('div').classes('fade')).toBe(true) - expect(customWrapper.find('div').classes('bg-warning')).toBe(true) - expect(customWrapper.find('div').attributes('aria-live')).toBe('assertive') - expect(customWrapper.find('div').attributes('aria-atomic')).toBe('true') - expect(customWrapper.find('div').attributes('role')).toBe('alert') - }) -}) diff --git a/packages/coreui-vue/src/components/toast/__tests__/CToastBody.spec.ts b/packages/coreui-vue/src/components/toast/__tests__/CToastBody.spec.ts deleted file mode 100644 index eab8e7e4..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/CToastBody.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CToastBody as Component } from '../../../index' - -const ComponentName = 'CToastBody' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('toast-body')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/toast/__tests__/CToastClose.spec.ts b/packages/coreui-vue/src/components/toast/__tests__/CToastClose.spec.ts deleted file mode 100644 index b12e21a1..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/CToastClose.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CButton, CToastClose as Component } from '../../../index' - -const ComponentName = 'CToastClose' - -const updateVisible = (v: boolean) => { - return v -} - -const defaultWrapper = mount(Component, { - global: { - provide: { - updateVisible: updateVisible, - }, - }, - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - as: CButton, - }, - slots: { - default: 'Default slot', - }, - global: { - provide: { - updateVisible: function () { - return true - }, - }, - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.classes('btn')).toBe(true) - expect(defaultWrapper.classes('btn-close')).toBe(true) - }) - it('event on click', () => { - defaultWrapper.trigger('click') - const incrementEvent = defaultWrapper.emitted('close') - expect(incrementEvent).toHaveLength(1) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - //expect(customWrapper.classes('btn')).toBe(true) - }) - it('event on click', () => { - customWrapper.trigger('click') - const incrementEvent = customWrapper.emitted('close') - expect(incrementEvent).toHaveLength(1) - }) -}) diff --git a/packages/coreui-vue/src/components/toast/__tests__/CToastHeader.spec.ts b/packages/coreui-vue/src/components/toast/__tests__/CToastHeader.spec.ts deleted file mode 100644 index 6950cfae..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/CToastHeader.spec.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CToastHeader as Component } from '../../../index' - -const ComponentName = 'CToastHeader' - -const updateVisible = (v: boolean) => { - return v -} - -const defaultWrapper = mount(Component, { - global: { - provide: { - updateVisible: updateVisible, - }, - }, - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - closeButton: true, - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('toast-header')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('toast-header')).toBe(true) - expect(customWrapper.find('button').classes('btn')).toBe(true) - expect(customWrapper.find('button').classes('btn-close')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/toast/__tests__/CToaster.spec.ts b/packages/coreui-vue/src/components/toast/__tests__/CToaster.spec.ts deleted file mode 100644 index d6e5a617..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/CToaster.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CToaster as Component } from '../../../index' - -const ComponentName = 'CToaster' - -const defaultWrapper = mount(Component, { - propsData: {}, - slots: { - default: 'Default slot', - }, -}) - -const customWrapper = mount(Component, { - propsData: { - placement: 'top-end', - }, - slots: { - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(defaultWrapper.text()).toContain('Default slot') - expect(defaultWrapper.classes('toaster')).toBe(true) - expect(defaultWrapper.classes('toast-container')).toBe(true) - expect(defaultWrapper.classes('p-3')).toBe(true) - }) -}) - -describe(`Customize ${ComponentName} component`, () => { - it('renders correctly', () => { - expect(customWrapper.html()).toMatchSnapshot() - }) - it('contain slots and classes', () => { - expect(customWrapper.text()).toContain('Default slot') - expect(customWrapper.classes('toaster')).toBe(true) - expect(customWrapper.classes('toast-container')).toBe(true) - expect(customWrapper.classes('p-3')).toBe(true) - expect(customWrapper.classes('position-fixed')).toBe(true) - expect(customWrapper.classes('top-0')).toBe(true) - expect(customWrapper.classes('end-0')).toBe(true) - }) -}) diff --git a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToast.spec.ts.snap b/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToast.spec.ts.snap deleted file mode 100644 index a5234490..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToast.spec.ts.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CToast component renders correctly 1`] = ` -" - -" -`; - -exports[`Loads and display CToast component renders correctly 1`] = ` -" - -" -`; diff --git a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastBody.spec.ts.snap b/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastBody.spec.ts.snap deleted file mode 100644 index 0636c970..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastBody.spec.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CToastBody component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap b/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap deleted file mode 100644 index 6944431f..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CToastClose component renders correctly 1`] = `""`; - -exports[`Loads and display CToastClose component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastHeader.spec.ts.snap b/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastHeader.spec.ts.snap deleted file mode 100644 index 6682d823..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastHeader.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CToastHeader component renders correctly 1`] = `"
    Default slot
    "`; - -exports[`Loads and display CToastHeader component renders correctly 1`] = ` -"
    Default slot - -
    " -`; diff --git a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToaster.spec.ts.snap b/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToaster.spec.ts.snap deleted file mode 100644 index 950cc006..00000000 --- a/packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToaster.spec.ts.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Customize CToaster component renders correctly 1`] = `"
    Default slot
    "`; - -exports[`Loads and display CToaster component renders correctly 1`] = `"
    Default slot
    "`; diff --git a/packages/coreui-vue/src/components/toast/index.ts b/packages/coreui-vue/src/components/toast/index.ts deleted file mode 100644 index bf297589..00000000 --- a/packages/coreui-vue/src/components/toast/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { App } from 'vue' -import { CToast } from './CToast' -import { CToastBody } from './CToastBody' -import { CToastClose } from './CToastClose' -import { CToaster } from './CToaster' -import { CToastHeader } from './CToastHeader' - -const CToastPlugin = { - install: (app: App): void => { - app.component(CToast.name as string, CToast) - app.component(CToastBody.name as string, CToastBody) - app.component(CToastClose.name as string, CToastClose) - app.component(CToaster.name as string, CToaster) - app.component(CToastHeader.name as string, CToastHeader) - }, -} - -export { CToastPlugin, CToast, CToastBody, CToastClose, CToaster, CToastHeader } diff --git a/packages/coreui-vue/src/components/tooltip/CTooltip.ts b/packages/coreui-vue/src/components/tooltip/CTooltip.ts deleted file mode 100644 index 6fe15d0e..00000000 --- a/packages/coreui-vue/src/components/tooltip/CTooltip.ts +++ /dev/null @@ -1,244 +0,0 @@ -import { defineComponent, h, PropType, ref, RendererElement, Transition, useId } from 'vue' -import type { Placement } from '@popperjs/core' - -import { CConditionalTeleport } from '../conditional-teleport' -import { usePopper } from '../../composables' -import type { Placements, Triggers } from '../../types' -import { executeAfterTransition } from '../../utils/transition' -import { getRTLPlacement } from '../../utils' - -const CTooltip = defineComponent({ - name: 'CTooltip', - inheritAttrs: false, - props: { - /** - * Apply a CSS fade transition to the tooltip. - * - * @since 4.9.0 - */ - animation: { - type: Boolean, - default: true, - }, - /** - * Appends the vue tooltip to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`. - * - * @since 5.0.0 - */ - container: { - type: [Object, String] as PropType HTMLElement) | string>, - default: 'body', - }, - /** - * Content for your component. If you want to pass non-string value please use dedicated slot `` - */ - content: String, - /** - * The delay for displaying and hiding the popover (in milliseconds). When a numerical value is provided, the delay applies to both the hide and show actions. The object structure for specifying the delay is as follows: delay: `{ 'show': 500, 'hide': 100 }`. - * - * @since 4.9.0 - */ - delay: { - type: [Number, Object] as PropType, - default: 0, - }, - /** - * Specify the desired order of fallback placements by providing a list of placements as an array. The placements should be prioritized based on preference. - * - * @since 4.9.0 - */ - fallbackPlacements: { - type: [String, Array] as PropType, - default: () => ['top', 'right', 'bottom', 'left'], - validator: (value: Placements | Placements[]) => { - if (typeof value === 'string') { - return ['top', 'right', 'bottom', 'left'].includes(value) - } - if (Array.isArray(value)) { - return value.every((e) => ['top', 'right', 'bottom', 'left'].includes(e)) - } - return false - }, - }, - /** - * Offset of the tooltip relative to its target. - */ - offset: { - type: Array, - default: () => [0, 6], - }, - /** - * Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. - */ - placement: { - type: String as PropType, - default: 'top', - validator: (value: string) => { - return ['top', 'right', 'bottom', 'left'].includes(value) - }, - }, - /** - * Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. - * - * @values 'click', 'focus', 'hover' - */ - trigger: { - type: [String, Array] as PropType, - default: () => ['hover', 'focus'], - validator: (value: Triggers | Triggers[]) => { - if (typeof value === 'string') { - return ['click', 'focus', 'hover'].includes(value) - } - if (Array.isArray(value)) { - return value.every((e) => ['click', 'focus', 'hover'].includes(e)) - } - return false - }, - }, - /** - * Toggle the visibility of tooltip component. - */ - visible: Boolean, - }, - emits: [ - /** - * Callback fired when the component requests to be hidden. - */ - 'hide', - /** - * Callback fired when the component requests to be shown. - */ - 'show', - ], - setup(props, { attrs, slots, emit }) { - const togglerRef = ref() - const tooltipRef = ref() - const visible = ref(props.visible) - - const { initPopper, destroyPopper } = usePopper() - const uniqueId = `tooltip-${useId()}` - - const delay = - typeof props.delay === 'number' ? { show: props.delay, hide: props.delay } : props.delay - - const popperConfig = { - modifiers: [ - { - name: 'arrow', - options: { - element: '.tooltip-arrow', - }, - }, - { - name: 'flip', - options: { - fallbackPlacements: props.fallbackPlacements, - }, - }, - { - name: 'offset', - options: { - offset: props.offset, - }, - }, - ], - placement: getRTLPlacement(props.placement, togglerRef.value), - } - - const handleEnter = (el: RendererElement, done: () => void) => { - emit('show') - initPopper(togglerRef.value, tooltipRef.value, popperConfig) - el.classList.add('show') - executeAfterTransition(() => done(), el as HTMLElement) - } - - const handleLeave = (el: RendererElement, done: () => void) => { - emit('hide') - el.classList.remove('show') - executeAfterTransition(() => { - done() - destroyPopper() - }, el as HTMLElement) - } - - const toggleVisible = (event: Event, _visible: boolean) => { - togglerRef.value = event.target - if (_visible) { - setTimeout(() => { - visible.value = true - }, delay.show) - return - } - - setTimeout(() => { - visible.value = false - }, delay.hide) - } - - return () => [ - h( - CConditionalTeleport, - { - container: props.container, - teleport: true, - }, - { - default: () => - h( - Transition, - { - onEnter: (el, done) => handleEnter(el, done), - onLeave: (el, done) => handleLeave(el, done), - }, - () => - visible.value && - h( - 'div', - { - ...attrs, - class: [ - 'tooltip', - 'bs-tooltip-auto', - { - fade: props.animation, - }, - attrs.class, - ], - id: uniqueId, - ref: tooltipRef, - role: 'tooltip', - }, - [ - h('div', { class: 'tooltip-arrow' }), - (props.content || slots.content) && - h( - 'div', - { class: 'tooltip-inner' }, - { - default: () => (slots.content && slots.content()) || props.content, - }, - ), - ], - ), - ), - }, - ), - slots.toggler && - slots.toggler({ - id: visible.value ? uniqueId : null, - on: { - click: (event: Event) => - props.trigger.includes('click') && toggleVisible(event, !visible.value), - blur: (event: Event) => props.trigger.includes('focus') && toggleVisible(event, false), - focus: (event: Event) => props.trigger.includes('focus') && toggleVisible(event, true), - mouseenter: (event: Event) => - props.trigger.includes('hover') && toggleVisible(event, true), - mouseleave: (event: Event) => - props.trigger.includes('hover') && toggleVisible(event, false), - }, - }), - ] - }, -}) - -export { CTooltip } diff --git a/packages/coreui-vue/src/components/tooltip/index.ts b/packages/coreui-vue/src/components/tooltip/index.ts deleted file mode 100644 index cde4a9a3..00000000 --- a/packages/coreui-vue/src/components/tooltip/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { App } from 'vue' -import { CTooltip } from './CTooltip' - -const CTooltipPlugin = { - install: (app: App): void => { - app.component(CTooltip.name as string, CTooltip) - }, -} - -export { CTooltipPlugin, CTooltip } diff --git a/packages/coreui-vue/src/components/widgets/CWidgetStatsA.ts b/packages/coreui-vue/src/components/widgets/CWidgetStatsA.ts deleted file mode 100644 index 998217ed..00000000 --- a/packages/coreui-vue/src/components/widgets/CWidgetStatsA.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { CCard, CCardBody } from '../card' - -const CWidgetStatsA = defineComponent({ - name: 'CWidgetStatsA', - props: { - color: String, - /** - * Title for your component. If you want to pass non-string value please use dedicated slot `` - */ - title: String, - /** - * Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` - */ - value: { - type: [Number, String], - default: 0, - }, - }, - /** - * Location for action component, ex. ``. - * - * @slot action - */ - /** - * Location for chart component. - * - * @slot chart - */ - setup(props, { slots }) { - return () => - h( - CCard, - { - class: [{ [`bg-${props.color}`]: props.color, 'text-white': props.color }], - }, - () => [ - h( - CCardBody, - { - class: 'pb-0 d-flex justify-content-between align-items-start', - }, - () => [ - h('div', {}, [ - (props.value || slots.value) && - h( - 'div', - { class: 'fs-4 fw-semibold' }, - { - default: () => (slots.value && slots.value()) || props.value, - }, - ), - (props.title || slots.title) && - h( - 'div', - {}, - { - default: () => (slots.title && slots.title()) || props.title, - }, - ), - ]), - /** - * @slot Location for action component, ex. ``. - */ - slots.action && slots.action(), - ], - ), - /** - * @slot Location for chart component. - */ - slots.chart && slots.chart(), - slots.default && slots.default(), - ], - ) - }, -}) - -export { CWidgetStatsA } diff --git a/packages/coreui-vue/src/components/widgets/CWidgetStatsB.ts b/packages/coreui-vue/src/components/widgets/CWidgetStatsB.ts deleted file mode 100644 index ded7cd3f..00000000 --- a/packages/coreui-vue/src/components/widgets/CWidgetStatsB.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { defineComponent, h } from 'vue' -import { shape } from 'vue-types' - -import { CCard, CCardBody } from '../card' -import { CProgress } from '../progress' - -import { Color } from '../../props' - -const CWidgetStatsB = defineComponent({ - name: 'CWidgetStatsB', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Colors have been inverted from their default dark shade. - */ - inverse: Boolean, - progress: shape({ - /** - * Sets the color context of the progress bar to one of CoreUI’s themed colors - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * The percent to progress the ProgressBar (out of 100). - */ - value: { - type: Number, - default: 0, - }, - }), - /** - * Helper text for your component. If you want to pass non-string value please use dedicated slot `` - */ - text: String, - /** - * Title for your component. If you want to pass non-string value please use dedicated slot `` - */ - title: String, - /** - * Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` - */ - value: { - type: [Number, String], - default: 0, - }, - }, - setup(props, { slots }) { - return () => - h( - CCard, - { - class: [ - { - 'text-white': props.inverse, - }, - ], - color: props.color, - }, - () => - h( - CCardBody, - { - class: 'card-body', - }, - () => [ - (props.value || slots.value) && - h( - 'div', - { - class: 'fs-4 fw-semibold', - }, - { - default: () => (slots.value && slots.value()) || props.value, - }, - ), - (props.title || slots.title) && - h( - 'div', - {}, - { - default: () => (slots.title && slots.title()) || props.title, - }, - ), - h(CProgress, { - class: 'my-2', - ...(props.progress && props.progress.color && { color: props.progress.color }), - height: 4, - ...(props.progress && props.progress.value && { value: props.progress.value }), - white: props.inverse, - }), - (props.text || slots.text) && - h( - 'small', - { - class: [props.inverse ? 'text-white text-opacity-75' : 'text-body-secondary'], - }, - { - default: () => (slots.text && slots.text()) || props.text, - }, - ), - ], - ), - ) - }, -}) - -export { CWidgetStatsB } diff --git a/packages/coreui-vue/src/components/widgets/CWidgetStatsC.ts b/packages/coreui-vue/src/components/widgets/CWidgetStatsC.ts deleted file mode 100644 index 8c4c6a7c..00000000 --- a/packages/coreui-vue/src/components/widgets/CWidgetStatsC.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { defineComponent, h } from 'vue' -import { shape } from 'vue-types' - -import { Color } from '../../props' -import { CCard, CCardBody } from '../card' -import { CProgress } from '../progress/CProgress' - -const CWidgetStatsC = defineComponent({ - name: 'CWidgetStatsC', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Colors have been inverted from their default dark shade. - */ - inverse: Boolean, - progress: shape({ - /** - * Sets the color context of the progress bar to one of CoreUI’s themed colors - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * The percent to progress the ProgressBar (out of 100). - */ - value: { - type: Number, - default: 0, - }, - }), - /** - * Title for your component. If you want to pass non-string value please use dedicated slot `` - */ - title: String, - /** - * Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` - */ - value: { - type: [Number, String], - default: 0, - }, - }, - /** - * Location for icon component. - * - * @slot icon - */ - setup(props, { slots }) { - return () => - h( - CCard, - { - class: [ - { - ['text-white']: props.inverse, - }, - ], - color: props.color, - }, - () => - h( - CCardBody, - { - class: 'card-body', - }, - () => [ - slots.icon && - h( - 'div', - { - class: [ - 'text-end mb-4', - props.inverse ? 'text-white text-opacity-75' : 'text-body-secondary', - ], - }, - slots.icon && slots.icon(), - ), - (props.value || slots.value) && - h( - 'div', - { - class: 'fs-4 fw-semibold', - }, - { - default: () => (slots.value && slots.value()) || props.value, - }, - ), - (props.title || slots.title) && - h( - 'div', - { - class: [ - 'text-uppercase fw-semibold small', - props.inverse ? 'text-white text-opacity-75' : 'text-body-secondary', - ], - }, - { - default: () => (slots.title && slots.title()) || props.title, - }, - ), - h(CProgress, { - class: 'my-2', - ...(props.progress && props.progress.color && { color: props.progress.color }), - height: 4, - ...(props.progress && props.progress.value && { value: props.progress.value }), - white: props.inverse, - }), - ], - ), - ) - }, -}) - -export { CWidgetStatsC } diff --git a/packages/coreui-vue/src/components/widgets/CWidgetStatsD.ts b/packages/coreui-vue/src/components/widgets/CWidgetStatsD.ts deleted file mode 100644 index 0489d1eb..00000000 --- a/packages/coreui-vue/src/components/widgets/CWidgetStatsD.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { defineComponent, h, PropType } from 'vue' - -import { CCard, CCardBody, CCardHeader } from '../card/' -import { CCol } from '../grid/' - -import { Color } from '../../props' - -type Value = { - title?: string - value?: number | string -} - -const CWidgetStatsD = defineComponent({ - name: 'CWidgetStatsD', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Values and titles for your component. - */ - values: { - type: Array as PropType, - default: () => [], - }, - }, - /** - * Location for icon component, ex. ``. - * - * @slot icon - */ - /** - * Location for chart component. - * - * @slot chart - */ - setup(props, { slots }) { - return () => - h( - CCard, - {}, - { - default: () => [ - h( - CCardHeader, - { - class: [ - 'position-relative d-flex justify-content-center align-items-center', - { - [`bg-${props.color}`]: props.color, - }, - ], - }, - () => [slots.icon && slots.icon(), slots.chart && slots.chart()], - ), - h( - CCardBody, - { - class: 'row text-center', - }, - { - default: () => - props.values && - props.values.map((value: Value, index: number) => [ - index % 2 !== 0 && h('div', { class: 'vr' }), - h( - CCol, - {}, - { - default: () => [ - h(CCol, { class: 'fs-5 fw-semibold' }, () => value.value), - h( - CCol, - { class: 'text-uppercase text-body-secondary small' }, - () => value.title, - ), - ], - }, - ), - ]), - }, - ), - ], - }, - ) - }, -}) - -export { CWidgetStatsD } diff --git a/packages/coreui-vue/src/components/widgets/CWidgetStatsE.ts b/packages/coreui-vue/src/components/widgets/CWidgetStatsE.ts deleted file mode 100644 index 8c68d976..00000000 --- a/packages/coreui-vue/src/components/widgets/CWidgetStatsE.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { CCard, CCardBody } from '../card/' - -const CWidgetStatsE = defineComponent({ - name: 'CWidgetStatsE', - props: { - /** - * Title for your component. If you want to pass non-string value please use dedicated slot `` - */ - title: String, - /** - * Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` - */ - value: { - type: [Number, String], - default: 0, - }, - }, - /** - * Location for chart component. - * - * @slot chart - */ - setup(props, { slots }) { - return () => - h(CCard, {}, () => - h( - CCardBody, - { - class: 'text-center', - }, - () => [ - (props.title || slots.title) && - h( - 'div', - { - class: 'text-body-secondary small text-uppercase font-weight-bold', - }, - { - default: () => (slots.title && slots.title()) || props.title, - }, - ), - (props.value || slots.value) && - h( - 'div', - { - class: 'h2 py-3', - }, - { - default: () => (slots.value && slots.value()) || props.value, - }, - ), - slots.chart && slots.chart(), - slots.default && slots.default(), - ], - ), - ) - }, -}) - -export { CWidgetStatsE } diff --git a/packages/coreui-vue/src/components/widgets/CWidgetStatsF.ts b/packages/coreui-vue/src/components/widgets/CWidgetStatsF.ts deleted file mode 100644 index 0c2ffd8e..00000000 --- a/packages/coreui-vue/src/components/widgets/CWidgetStatsF.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { defineComponent, h } from 'vue' - -import { CCard, CCardBody, CCardFooter } from '../card/' - -import { Color } from '../../props' - -const CWidgetStatsF = defineComponent({ - name: 'CWidgetStatsF', - props: { - /** - * Sets the color context of the component to one of CoreUI’s themed colors. - * - * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' - */ - color: Color, - /** - * Set padding of your component. - */ - padding: { - type: Boolean, - default: true, - }, - /** - * Title for your component. If you want to pass non-string value please use dedicated slot `` - */ - title: String, - /** - * Helper text for your component. If you want to pass non-string value please use dedicated slot `` - */ - text: String, - /** - * Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` - */ - value: { - type: [Number, String], - default: 0, - }, - }, - /** - * Location for icon component. - * - * @slot icon - */ - setup(props, { slots }) { - return () => - h( - CCard, - {}, - { - default: () => [ - h( - CCardBody, - { - class: ['d-flex align-items-center', props.padding === false && 'p-0'], - }, - () => [ - h( - 'div', - { - class: [ - 'me-3', - 'text-white', - `bg-${props.color}`, - props.padding ? 'p-3' : 'p-4', - ], - }, - (slots.default && slots.default()) || (slots.icon && slots.icon()), - ), - h('div', {}, [ - (props.value || slots.value) && - h( - 'div', - { - class: [`fs-6 fw-semibold text-${props.color}`], - }, - { - default: () => (slots.value && slots.value()) || props.value, - }, - ), - (props.title || slots.title) && - h( - 'div', - { - class: 'text-body-secondary text-uppercase fw-semibold small', - }, - { - default: () => (slots.title && slots.title()) || props.title, - }, - ), - ]), - ], - ), - slots.footer && h(CCardFooter, {}, () => slots.footer && slots.footer()), - ], - }, - ) - }, -}) - -export { CWidgetStatsF } diff --git a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsA.spec.ts b/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsA.spec.ts deleted file mode 100644 index a3218baf..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsA.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CWidgetStatsA as Component } from '../../../index' - -const ComponentName = 'CWidgetStatsA' - -const defaultWrapper = mount(Component, { - propsData: { - color: 'warning', - title: 'title', - value: 75, - }, - slots: { - action: 'action', - chart: 'chart', - default: 'Default slot', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsB.spec.ts b/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsB.spec.ts deleted file mode 100644 index 8ef63d6a..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsB.spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CWidgetStatsB as Component } from '../../../index' - -const ComponentName = 'CWidgetStatsB' - -const defaultWrapper = mount(Component, { - propsData: { - color: 'warning', - inverse: true, - progress: { - color: 'info', - value: 75, - }, - text: 'text', - title: 'title', - value: 75, - }, - slots: {}, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsC.spec.ts b/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsC.spec.ts deleted file mode 100644 index eb2374e1..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsC.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CWidgetStatsC as Component } from '../../../index' - -const ComponentName = 'CWidgetStatsC' - -const defaultWrapper = mount(Component, { - propsData: { - color: 'warning', - inverse: true, - progress: { - color: 'info', - value: 75, - }, - title: 'title', - value: 75, - }, - slots: { - icon: 'icon', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsD.spec.ts b/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsD.spec.ts deleted file mode 100644 index 93101c67..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsD.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CWidgetStatsD as Component } from '../../../index' - -const ComponentName = 'CWidgetStatsD' - -const defaultWrapper = mount(Component, { - propsData: { - color: 'warning', - values: [ - { title: 'aa', value: 'bb' }, - { title: 'cc', value: 'dd' }, - ], - }, - slots: { - icon: 'icon', - chart: 'chart', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsE.spec.ts b/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsE.spec.ts deleted file mode 100644 index 21090b6b..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsE.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CWidgetStatsE as Component } from '../../../index' - -const ComponentName = 'CWidgetStatsE' - -const defaultWrapper = mount(Component, { - propsData: { - title: 'title', - value: 'value', - }, - slots: { - chart: 'chart', - default: 'default', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsF.spec.ts b/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsF.spec.ts deleted file mode 100644 index e2eb8ce5..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsF.spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { mount } from '@vue/test-utils' -import { CWidgetStatsF as Component } from '../../../index' - -const ComponentName = 'CWidgetStatsF' - -const defaultWrapper = mount(Component, { - propsData: { - color: 'warning', - padding: true, - title: 'title', - text: 'text', - value: 75, - }, - slots: { - icon: 'icon', - default: 'default', - footer: 'footer', - }, -}) - -describe(`Loads and display ${ComponentName} component`, () => { - it('has a name', () => { - expect(Component.name).toMatch(ComponentName) - }) - it('renders correctly', () => { - expect(defaultWrapper.html()).toMatchSnapshot() - }) -}) diff --git a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.ts.snap b/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.ts.snap deleted file mode 100644 index c2d3d59c..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.ts.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CWidgetStatsA component renders correctly 1`] = ` -"
    -
    -
    -
    75
    -
    title
    -
    action -
    chartDefault slot -
    " -`; diff --git a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.ts.snap b/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.ts.snap deleted file mode 100644 index 35a70bb9..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.ts.snap +++ /dev/null @@ -1,15 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CWidgetStatsB component renders correctly 1`] = ` -"
    -
    -
    75
    -
    title
    -
    -
    - -
    -
    text -
    -
    " -`; diff --git a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.ts.snap b/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.ts.snap deleted file mode 100644 index acea9bdf..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.ts.snap +++ /dev/null @@ -1,16 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CWidgetStatsC component renders correctly 1`] = ` -"
    -
    -
    icon
    -
    75
    -
    title
    -
    -
    - -
    -
    -
    -
    " -`; diff --git a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.ts.snap b/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.ts.snap deleted file mode 100644 index 904ea85c..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.ts.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CWidgetStatsD component renders correctly 1`] = ` -"
    -
    iconchart
    -
    - -
    -
    bb
    -
    aa
    -
    -
    -
    -
    dd
    -
    cc
    -
    -
    -
    " -`; diff --git a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.ts.snap b/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.ts.snap deleted file mode 100644 index 18ed7668..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.ts.snap +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CWidgetStatsE component renders correctly 1`] = ` -"
    -
    -
    title
    -
    value
    chartdefault -
    -
    " -`; diff --git a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.ts.snap b/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.ts.snap deleted file mode 100644 index 08c236ae..00000000 --- a/packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.ts.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Loads and display CWidgetStatsF component renders correctly 1`] = ` -"
    -
    -
    default
    -
    -
    75
    -
    title
    -
    -
    - -
    " -`; diff --git a/packages/coreui-vue/src/components/widgets/index.ts b/packages/coreui-vue/src/components/widgets/index.ts deleted file mode 100644 index 38a6f825..00000000 --- a/packages/coreui-vue/src/components/widgets/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { App } from 'vue' -import { CWidgetStatsA } from './CWidgetStatsA' -import { CWidgetStatsB } from './CWidgetStatsB' -import { CWidgetStatsC } from './CWidgetStatsC' -import { CWidgetStatsD } from './CWidgetStatsD' -import { CWidgetStatsE } from './CWidgetStatsE' -import { CWidgetStatsF } from './CWidgetStatsF' - -const CWidgetsStatsPlugin = { - install: (app: App): void => { - app.component(CWidgetStatsA.name as string, CWidgetStatsA) - app.component(CWidgetStatsB.name as string, CWidgetStatsB) - app.component(CWidgetStatsC.name as string, CWidgetStatsC) - app.component(CWidgetStatsD.name as string, CWidgetStatsD) - app.component(CWidgetStatsE.name as string, CWidgetStatsE) - app.component(CWidgetStatsF.name as string, CWidgetStatsF) - }, -} - -export { - CWidgetsStatsPlugin, - CWidgetStatsA, - CWidgetStatsB, - CWidgetStatsC, - CWidgetStatsD, - CWidgetStatsE, - CWidgetStatsF, -} diff --git a/packages/coreui-vue/src/composables/index.ts b/packages/coreui-vue/src/composables/index.ts deleted file mode 100644 index 4d78d30e..00000000 --- a/packages/coreui-vue/src/composables/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { useColorModes } from './useColorModes' -import { usePopper } from './usePopper' -import { useUniqueId } from './useUniqueId' - -export { useColorModes, usePopper, useUniqueId } diff --git a/packages/coreui-vue/src/composables/useColorModes.ts b/packages/coreui-vue/src/composables/useColorModes.ts deleted file mode 100644 index ac622e5d..00000000 --- a/packages/coreui-vue/src/composables/useColorModes.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { onBeforeMount, ref, watch } from 'vue' - -const getStoredTheme = (localStorageItemName: string) => - typeof window !== 'undefined' && localStorage.getItem(localStorageItemName) - -const setStoredTheme = (localStorageItemName: string, colorMode: string) => - localStorage.setItem(localStorageItemName, colorMode) - -const getPreferredColorScheme = (localStorageItemName: string) => { - if (typeof window === 'undefined') { - return - } - - const storedTheme = getStoredTheme(localStorageItemName) - - if (storedTheme) { - return storedTheme - } - - return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' -} - -const setTheme = (colorMode: string) => { - document.documentElement.dataset.coreuiTheme = - colorMode === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches - ? 'dark' - : colorMode - - const event = new Event('ColorSchemeChange') - document.documentElement.dispatchEvent(event) -} - -export const useColorModes = (localStorageItemName = 'coreui-vue-color-scheme') => { - const colorMode = ref(getPreferredColorScheme(localStorageItemName)) - - watch(colorMode, () => { - if (colorMode.value) { - setStoredTheme(localStorageItemName, colorMode.value) - setTheme(colorMode.value) - } - }) - - onBeforeMount(() => { - if (typeof getStoredTheme(localStorageItemName) === 'string' && colorMode.value) { - setTheme(colorMode.value) - } - - window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { - const storedTheme = getStoredTheme(localStorageItemName) - if (storedTheme !== 'light' && storedTheme !== 'dark' && colorMode.value) { - setTheme(colorMode.value) - } - }) - }) - - return { - colorMode, - isColorModeSet: () => Boolean(getStoredTheme(localStorageItemName)), - setColorMode: (mode: string) => { - colorMode.value = mode - }, - } -} diff --git a/packages/coreui-vue/src/composables/usePopper.ts b/packages/coreui-vue/src/composables/usePopper.ts deleted file mode 100644 index 23bba6d5..00000000 --- a/packages/coreui-vue/src/composables/usePopper.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ref } from 'vue' -import { createPopper } from '@popperjs/core' -import type { Instance, Options } from '@popperjs/core' - -export const usePopper = () => { - const _popper = ref() - - const initPopper = (reference: HTMLElement, popper: HTMLElement, options: Partial) => { - _popper.value = createPopper(reference, popper, options) - } - - const destroyPopper = () => { - if (_popper.value) { - _popper.value.destroy() - } - - _popper.value = undefined - } - - return { - popper: _popper.value, - initPopper, - destroyPopper, - } -} diff --git a/packages/coreui-vue/src/composables/useUniqueId.ts b/packages/coreui-vue/src/composables/useUniqueId.ts deleted file mode 100644 index e6f724a9..00000000 --- a/packages/coreui-vue/src/composables/useUniqueId.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ref } from 'vue' - -export const useUniqueId = (prefix: string = '') => { - const ids = ref([]) - - const getUID = () => { - do { - prefix += Math.floor(Math.random() * 1_000_000) - } while (ids.value.includes(prefix)) - - ids.value.push(prefix) - return prefix - } - - return { - getUID, - } -} diff --git a/packages/coreui-vue/src/directives/index.ts b/packages/coreui-vue/src/directives/index.ts deleted file mode 100644 index 1ee9a52b..00000000 --- a/packages/coreui-vue/src/directives/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import vcplaceholder from './v-c-placeholder' -import vcpopover from './v-c-popover' -import vctooltip from './v-c-tooltip' - -export { vcplaceholder, vcpopover, vctooltip } diff --git a/packages/coreui-vue/src/directives/v-c-placeholder.ts b/packages/coreui-vue/src/directives/v-c-placeholder.ts deleted file mode 100644 index fcfe23b3..00000000 --- a/packages/coreui-vue/src/directives/v-c-placeholder.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { DirectiveBinding } from 'vue' - -const BREAKPOINTS = [ - 'xxl' as const, - 'xl' as const, - 'lg' as const, - 'md' as const, - 'sm' as const, - 'xs' as const, -] - -export default { - name: 'c-placeholder', - mounted(el: HTMLElement, binding: DirectiveBinding): void { - const value = binding.value - el.classList.add(value.animation ? `placeholder-${value.animation}` : 'placeholder') - - BREAKPOINTS.forEach((bp) => { - const breakpoint = value[bp] - - const infix = bp === 'xs' ? '' : `-${bp}` - - if (typeof breakpoint === 'number') { - el.classList.add(`col${infix}-${breakpoint}`) - } - - if (typeof breakpoint === 'boolean') { - el.classList.add(`col${infix}`) - } - }) - }, -} diff --git a/packages/coreui-vue/src/directives/v-c-popover.ts b/packages/coreui-vue/src/directives/v-c-popover.ts deleted file mode 100644 index 5e846244..00000000 --- a/packages/coreui-vue/src/directives/v-c-popover.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { DirectiveBinding } from 'vue' -import { createPopper } from '@popperjs/core' -import type { Options } from '@popperjs/core' - -import { useUniqueId } from '../composables' - -const createPopoverElement = (id: string, header: string, content: string): HTMLDivElement => { - const popover = document.createElement('div') - popover.id = id - popover.classList.add('popover', 'bs-popover-auto', 'fade') - popover.setAttribute('role', 'popover') - popover.innerHTML = `
    -
    ${header}
    -
    ${content}
    ` - return popover -} - -const addPopoverElement = ( - el: HTMLElement, - popover: HTMLDivElement, - popperOptions: Partial, - uID: string, -) => { - el.setAttribute('aria-describedby', uID) - document.body.appendChild(popover) - createPopper(el, popover, popperOptions) - setTimeout(() => { - popover.classList.add('show') - }, 1) -} - -const removePopoverElement = (el: HTMLElement, popover: HTMLDivElement) => { - el.removeAttribute('aria-describedby') - popover.classList.remove('show') - setTimeout(() => { - popover.remove() - }, 300) -} - -const togglePopoverElement = ( - el: HTMLElement, - popover: HTMLDivElement, - popperOptions: Partial, - uID: string, -) => { - const popperElement = document.getElementById(popover.id) - if (popperElement && popperElement.classList.contains('show')) { - removePopoverElement(el, popover) - return - } - addPopoverElement(el, popover, popperOptions, uID) -} - -export default { - name: 'c-popover', - uid: '', - mounted(el: HTMLElement, binding: DirectiveBinding): void { - const { getUID } = useUniqueId('popover') - const value = binding.value - const content = typeof value === 'string' ? value : value.content ?? '' - const header = value.header ?? '' - const trigger = value.trigger ?? 'click' - - // Popper Config - const offset = value.offset ?? [0, 8] - const placement = value.placement ?? 'top' - - const popperOptions = { - placement: placement, - modifiers: [ - { - name: 'offset', - options: { - offset: offset, - }, - }, - ], - } - - const uID = getUID() - binding.arg = uID - const popover = createPopoverElement(uID, header, content) - - trigger.includes('click') && - el.addEventListener('click', () => { - togglePopoverElement(el, popover, popperOptions, uID) - }) - - if (trigger.includes('focus')) { - el.addEventListener('focus', () => { - addPopoverElement(el, popover, popperOptions, uID) - }) - el.addEventListener('blur', () => { - removePopoverElement(el, popover) - }) - } - - if (trigger.includes('hover')) { - el.addEventListener('mouseenter', () => { - addPopoverElement(el, popover, popperOptions, uID) - }) - el.addEventListener('mouseleave', () => { - removePopoverElement(el, popover) - }) - } - }, - unmounted(_el: HTMLElement, binding: DirectiveBinding): void { - const popover = binding.arg && document.getElementById(binding.arg) - popover && popover.remove() - }, -} diff --git a/packages/coreui-vue/src/directives/v-c-tooltip.ts b/packages/coreui-vue/src/directives/v-c-tooltip.ts deleted file mode 100644 index bf888042..00000000 --- a/packages/coreui-vue/src/directives/v-c-tooltip.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { DirectiveBinding } from 'vue' -import { createPopper } from '@popperjs/core' -import type { Options } from '@popperjs/core' - -import { useUniqueId } from '../composables' - -const createTooltipElement = (id: string, content: string): HTMLDivElement => { - const tooltip = document.createElement('div') - tooltip.id = id - tooltip.classList.add('tooltip', 'bs-tooltip-auto', 'fade') - tooltip.setAttribute('role', 'tooltip') - tooltip.innerHTML = `
    -
    ${content}
    ` - return tooltip -} - -const addTooltipElement = ( - el: HTMLElement, - tooltip: HTMLDivElement, - popperOptions: Partial, - uID: string, -) => { - el.setAttribute('aria-describedby', uID) - document.body.appendChild(tooltip) - createPopper(el, tooltip, popperOptions) - setTimeout(() => { - tooltip.classList.add('show') - }, 1) -} - -const removeTooltipElement = (el: HTMLElement, tooltip: HTMLDivElement) => { - el.removeAttribute('aria-describedby') - tooltip.classList.remove('show') - setTimeout(() => { - tooltip.remove() - }, 300) -} - -const toggleTooltipElement = ( - el: HTMLElement, - tooltip: HTMLDivElement, - popperOptions: Partial, - uID: string, -) => { - const popperElement = document.getElementById(tooltip.id) - if (popperElement && popperElement.classList.contains('show')) { - removeTooltipElement(el, tooltip) - return - } - addTooltipElement(el, tooltip, popperOptions, uID) -} - -export default { - name: 'c-tooltip', - mounted(el: HTMLElement, binding: DirectiveBinding): void { - const { getUID } = useUniqueId('tooltip') - const value = binding.value - const content = typeof value === 'string' ? value : value.content ?? '' - const trigger = value.trigger ?? 'hover' - - // Popper Config - const offset = value.offset ?? [0, 6] - const placement = value.placement ?? 'top' - - const popperOptions = { - placement: placement, - modifiers: [ - { - name: 'offset', - options: { - offset: offset, - }, - }, - ], - } - - const uID = getUID() - binding.arg = uID - const tooltip = createTooltipElement(uID, content) - - trigger.includes('click') && - el.addEventListener('click', () => { - toggleTooltipElement(el, tooltip, popperOptions, uID) - }) - - if (trigger.includes('focus')) { - el.addEventListener('focus', () => { - addTooltipElement(el, tooltip, popperOptions, uID) - }) - el.addEventListener('blur', () => { - removeTooltipElement(el, tooltip) - }) - } - - if (trigger.includes('hover')) { - el.addEventListener('mouseenter', () => { - addTooltipElement(el, tooltip, popperOptions, uID) - }) - el.addEventListener('mouseleave', () => { - removeTooltipElement(el, tooltip) - }) - } - }, - beforeUnmount(_el: HTMLElement, binding: DirectiveBinding): void { - const tooltip = binding.arg && document.getElementById(binding.arg) - tooltip && tooltip.remove() - }, -} diff --git a/packages/coreui-vue/src/directives/v-c-visible.ts b/packages/coreui-vue/src/directives/v-c-visible.ts deleted file mode 100644 index 50c27869..00000000 --- a/packages/coreui-vue/src/directives/v-c-visible.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ObjectDirective } from 'vue' - -interface VShowElement extends HTMLElement { - // _vod = vue original display - _vod: string -} - -export const vVisible: ObjectDirective = { - beforeMount(el, { value }, { transition }) { - el._vod = el.style.display === 'none' ? '' : el.style.display - if (transition && value) { - transition.beforeEnter(el) - } - }, - mounted(el, { value }, { transition }) { - if (transition && value) { - transition.enter(el) - } - }, - updated(el, { value, oldValue }, { transition }) { - if (!value === !oldValue) return - if (transition) { - if (value) { - transition.beforeEnter(el) - transition.enter(el) - } else { - transition.leave(el, () => { - // setDisplay(el, false) - }) - } - } - }, -} diff --git a/packages/coreui-vue/src/index.ts b/packages/coreui-vue/src/index.ts deleted file mode 100644 index 6b6bbeef..00000000 --- a/packages/coreui-vue/src/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { App } from 'vue' -import * as Components from './components' -import * as Directives from './directives' - -const CoreuiVue = { - install: (app: App): void => { - for (const key in Components) { - app.component(key, (Components as { [key: string]: any })[key]) - } - - for (const key in Directives) { - app.directive( - (Directives as { [key: string]: any })[key]['name'], - (Directives as { [key: string]: any })[key], - ) - } - }, -} - -// Export library -export default CoreuiVue - -// Export components & directives -export * from './components' -export * from './composables' -export * from './directives' diff --git a/packages/coreui-vue/src/props.ts b/packages/coreui-vue/src/props.ts deleted file mode 100644 index f0fda387..00000000 --- a/packages/coreui-vue/src/props.ts +++ /dev/null @@ -1,83 +0,0 @@ -export const Shape = { - type: String, - validator: (value: string): boolean => { - // The value must match one of these strings - return [ - 'rounded', - 'rounded-top', - 'rounded-end', - 'rounded-bottom', - 'rounded-start', - 'rounded-circle', - 'rounded-pill', - 'rounded-0', - 'rounded-1', - 'rounded-2', - 'rounded-3', - ].includes(value) - }, -} - -export const Align = { - type: String, - validator: (value: string): boolean => { - // The value must match one of these strings - return ['', 'left', 'center', 'right'].includes(value) - }, -} - -export const Color = { - type: String, - validator: (value: string): boolean => { - // The value must match one of these strings - return [ - 'primary', - 'secondary', - 'success', - 'danger', - 'warning', - 'info', - 'dark', - 'light', - 'link', - 'transparent', - ].includes(value) - }, -} - -export const TextColor = { - type: String, - validator: (value: string): boolean => { - return [ - 'primary', - 'secondary', - 'success', - 'danger', - 'warning', - 'info', - 'dark', - 'light', - 'primary-emphasis', - 'secondary-emphasis', - 'success-emphasis', - 'danger-emphasis', - 'warning-emphasis', - 'info-emphasis', - 'light-emphasis', - 'body', - 'body-emphasis', - 'body-secondary', - 'body-tertiary', - 'black', - 'black-50', - 'white', - 'white-50', - ].includes(value) - }, -} - -export const Breakpoint = { - validator: (value: boolean | number): boolean => { - return typeof value == 'boolean' || typeof value == 'number' ? true : false - }, -} diff --git a/packages/coreui-vue/src/shims-vue.d.ts b/packages/coreui-vue/src/shims-vue.d.ts deleted file mode 100644 index ac1ded79..00000000 --- a/packages/coreui-vue/src/shims-vue.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare module '*.vue' { - import { DefineComponent } from 'vue' - const component: DefineComponent<{}, {}, any> - export default component -} diff --git a/packages/coreui-vue/src/types.ts b/packages/coreui-vue/src/types.ts deleted file mode 100644 index b229df7c..00000000 --- a/packages/coreui-vue/src/types.ts +++ /dev/null @@ -1,46 +0,0 @@ -export type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' - -export type Colors = - | 'primary' - | 'secondary' - | 'success' - | 'danger' - | 'warning' - | 'info' - | 'dark' - | 'light' - | string - -export type Placements = - | 'auto' - | 'auto-start' - | 'auto-end' - | 'top-end' - | 'top' - | 'top-start' - | 'bottom-end' - | 'bottom' - | 'bottom-start' - | 'right-start' - | 'right' - | 'right-end' - | 'left-start' - | 'left' - | 'left-end' - | string - -export type Shapes = - | 'rounded' - | 'rounded-top' - | 'rounded-end' - | 'rounded-bottom' - | 'rounded-start' - | 'rounded-circle' - | 'rounded-pill' - | 'rounded-0' - | 'rounded-1' - | 'rounded-2' - | 'rounded-3' - | string - -export type Triggers = 'hover' | 'focus' | 'click' diff --git a/packages/coreui-vue/src/utils/ComponentProps.ts b/packages/coreui-vue/src/utils/ComponentProps.ts deleted file mode 100644 index 5bd3991c..00000000 --- a/packages/coreui-vue/src/utils/ComponentProps.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DefineComponent, ExtractPropTypes, ExtractPublicPropTypes } from 'vue' - -export type ComponentProps = - T extends DefineComponent, any, any> - ? ExtractPublicPropTypes - : never diff --git a/packages/coreui-vue/src/utils/getNextActiveElement.ts b/packages/coreui-vue/src/utils/getNextActiveElement.ts deleted file mode 100644 index a80293ca..00000000 --- a/packages/coreui-vue/src/utils/getNextActiveElement.ts +++ /dev/null @@ -1,23 +0,0 @@ -const getNextActiveElement = ( - list: HTMLElement[], - activeElement: HTMLElement, - shouldGetNext: boolean, - isCycleAllowed: boolean, -) => { - const listLength = list.length - let index = list.indexOf(activeElement) - - if (index === -1) { - return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0] - } - - index += shouldGetNext ? 1 : -1 - - if (isCycleAllowed) { - index = (index + listLength) % listLength - } - - return list[Math.max(0, Math.min(index, listLength - 1))] -} - -export default getNextActiveElement diff --git a/packages/coreui-vue/src/utils/getRTLPlacement.ts b/packages/coreui-vue/src/utils/getRTLPlacement.ts deleted file mode 100644 index 87c38517..00000000 --- a/packages/coreui-vue/src/utils/getRTLPlacement.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Placement } from '@popperjs/core' -import isRTL from './isRTL' - -const getRTLPlacement = (placement: string, element: HTMLDivElement | null): Placement => { - switch (placement) { - case 'right': { - return isRTL(element) ? 'left' : 'right' - } - case 'left': { - return isRTL(element) ? 'right' : 'left' - } - default: { - return placement as Placement - } - } -} - -export default getRTLPlacement diff --git a/packages/coreui-vue/src/utils/getUID.ts b/packages/coreui-vue/src/utils/getUID.ts deleted file mode 100644 index 7aeb1b76..00000000 --- a/packages/coreui-vue/src/utils/getUID.ts +++ /dev/null @@ -1,9 +0,0 @@ -const getUID = (prefix: string) => { - do { - prefix += Math.floor(Math.random() * 1_000_000) - } while (document.getElementById(prefix)) - - return prefix -} - -export default getUID diff --git a/packages/coreui-vue/src/utils/index.ts b/packages/coreui-vue/src/utils/index.ts deleted file mode 100644 index b478e8c2..00000000 --- a/packages/coreui-vue/src/utils/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import getNextActiveElement from './getNextActiveElement' -import getRTLPlacement from './getRTLPlacement' -import getUID from './getUID' -import isInViewport from './isInViewport' -import isRTL from './isRTL' - -export { getNextActiveElement, getRTLPlacement, getUID, isInViewport, isRTL } diff --git a/packages/coreui-vue/src/utils/isInViewport.ts b/packages/coreui-vue/src/utils/isInViewport.ts deleted file mode 100644 index 7aae5391..00000000 --- a/packages/coreui-vue/src/utils/isInViewport.ts +++ /dev/null @@ -1,11 +0,0 @@ -const isInViewport = (element: HTMLElement) => { - const rect = element.getBoundingClientRect() - return ( - Math.floor(rect.top) >= 0 && - Math.floor(rect.left) >= 0 && - Math.floor(rect.bottom) <= (window.innerHeight || document.documentElement.clientHeight) && - Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth) - ) -} - -export default isInViewport diff --git a/packages/coreui-vue/src/utils/isRTL.ts b/packages/coreui-vue/src/utils/isRTL.ts deleted file mode 100644 index 17180d80..00000000 --- a/packages/coreui-vue/src/utils/isRTL.ts +++ /dev/null @@ -1,13 +0,0 @@ -const isRTL = (element?: HTMLElement | HTMLDivElement | null) => { - if (typeof document !== 'undefined' && document.documentElement.dir === 'rtl') { - return true - } - - if (element) { - return element.closest('[dir="rtl"]') !== null - } - - return false -} - -export default isRTL diff --git a/packages/coreui-vue/src/utils/transition.ts b/packages/coreui-vue/src/utils/transition.ts deleted file mode 100644 index 874fbf8c..00000000 --- a/packages/coreui-vue/src/utils/transition.ts +++ /dev/null @@ -1,65 +0,0 @@ -const execute = (callback: () => void) => { - if (typeof callback === 'function') { - callback() - } -} - -export const executeAfterTransition = ( - callback: () => void, - transitionElement: HTMLElement, - waitForTransition = true, -) => { - if (!waitForTransition) { - execute(callback) - return - } - - const durationPadding = 5 - const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding - - let called = false - - const handler = ({ target }: { target: any }) => { - if (target !== transitionElement) { - return - } - - called = true - transitionElement.removeEventListener('transitionend', handler) - execute(callback) - } - - transitionElement.addEventListener('transitionend', handler) - setTimeout(() => { - if (!called) { - triggerTransitionEnd(transitionElement) - } - }, emulatedDuration) -} - -export const getTransitionDurationFromElement = (element: HTMLElement) => { - if (!element) { - return 0 - } - - // Get transition-duration of the element - let { transitionDuration, transitionDelay } = window.getComputedStyle(element) - - const floatTransitionDuration = Number.parseFloat(transitionDuration) - const floatTransitionDelay = Number.parseFloat(transitionDelay) - - // Return 0 if element or transition duration is not found - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0 - } - - // If multiple durations are defined, take the first - transitionDuration = transitionDuration.split(',')[0] - transitionDelay = transitionDelay.split(',')[0] - - return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000 -} - -export const triggerTransitionEnd = (element: HTMLElement) => { - element.dispatchEvent(new Event('transitionend')) -} diff --git a/packages/coreui-vue/tsconfig.json b/packages/coreui-vue/tsconfig.json deleted file mode 100644 index 37245843..00000000 --- a/packages/coreui-vue/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig", - "compilerOptions": { - "declarationDir": "." - }, - "include": ["src/**/*"] -} \ No newline at end of file diff --git a/packages/docs/.vuepress/client.ts b/packages/docs/.vuepress/client.ts deleted file mode 100644 index 0404f0fd..00000000 --- a/packages/docs/.vuepress/client.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { defineClientConfig } from '@vuepress/client' - -import { CIcon, CIconSvg } from '@coreui/icons-vue' -import CChartPlugin from '@coreui/vue-chartjs' -import CoreuiVue from '@coreui/vue/src/' -import '@coreui/coreui/scss/coreui.scss' -import '@coreui/chartjs/scss/coreui-chartjs.scss' - -import { - cibCoreuiC, - cibDiscourse, - cibFacebook, - cibGithub, - cibTwitter, - cibOpenCollective, - cilArrowBottom, - cilArrowRight, - cilArrowTop, - cilBasket, - cilBurn, - cilCheckCircle, - cilCloudDownload, - cilContrast, - cilHandshake, - cilInfo, - cilLayers, - cilMenu, - cilMoon, - cilOptions, - cilPeople, - cilPuzzle, - cilSettings, - cilSpeedometer, - cilSun, - cilUserFollow, - cilWarning, -} from '@coreui/icons' - -export const icons = { - cibCoreuiC, - cibDiscourse, - cibFacebook, - cibGithub, - cibTwitter, - cibOpenCollective, - cilArrowBottom, - cilArrowRight, - cilArrowTop, - cilBasket, - cilBurn, - cilCheckCircle, - cilCloudDownload, - cilContrast, - cilHandshake, - cilInfo, - cilLayers, - cilMenu, - cilMoon, - cilOptions, - cilPeople, - cilPuzzle, - cilSettings, - cilSpeedometer, - cilSun, - cilUserFollow, - cilWarning, -} - -export default defineClientConfig({ - enhance({ app, router }) { - app.use(CoreuiVue) - app.provide('icons', icons) - app.component('CIcon', CIcon) - app.component('CIconSvg', CIconSvg) - app.use(CChartPlugin), - router.addRoute({ path: '', redirect: '/getting-started/introduction.html' }) - }, -}) diff --git a/packages/docs/.vuepress/config.ts b/packages/docs/.vuepress/config.ts deleted file mode 100644 index ea00ecf0..00000000 --- a/packages/docs/.vuepress/config.ts +++ /dev/null @@ -1,389 +0,0 @@ -import { defineUserConfig } from 'vuepress' -import { viteBundler } from '@vuepress/bundler-vite' -import { activeHeaderLinksPlugin } from '@vuepress/plugin-active-header-links' -import { markdownContainerPlugin } from '@vuepress/plugin-markdown-container' -import { prismjsPlugin } from '@vuepress/plugin-prismjs' -import { registerComponentsPlugin } from '@vuepress/plugin-register-components' -import { tocPlugin } from '@vuepress/plugin-toc' -import { getDirname, path } from '@vuepress/utils' -import anchor from 'markdown-it-anchor' -import include_plugin from 'markdown-it-include' -import { defaultTheme } from './src/node' - -const __dirname = getDirname(import.meta.url) - -export default defineUserConfig({ - base: `/vue/docs/`, - lang: 'en-US', - title: 'Vue UI Components · CoreUI', - description: 'UI Components Library for Vue.js (Vue 3)', - head: [['link', { rel: 'icon', href: `/vue/docs/favicons/favicon-96x96.png` }]], - bundler: viteBundler(), - markdown: { - anchor: { - permalink: anchor.permalink.linkInsideHeader({ - class: 'anchor-link', - placement: 'after' - }), - }, - }, - extendsMarkdown: (md) => { - md.use(include_plugin), - (md.renderer.rules.table_open = function (tokens, idx) { - return '' - }) - }, - plugins: [ - activeHeaderLinksPlugin({ - headerLinkSelector: 'a.sidebar-item', - headerAnchorSelector: '.header-anchor', - // should greater than page transition duration - delay: 300, - }), - // backToTopPlugin(), - markdownContainerPlugin({ - type: 'demo', - before: (): string => `
    \n`, - after: (): string => '
    \n', - }), - markdownContainerPlugin({ - type: 'demo-bg-secondary', - before: (): string => - `
    \n`, - after: (): string => '
    \n', - }), - markdownContainerPlugin({ - type: 'demo-dark', - before: (): string => `
    \n`, - after: (): string => '
    \n', - }), - markdownContainerPlugin({ - type: 'demo-rounded', - before: (): string => `
    \n`, - after: (): string => '
    \n', - }), - prismjsPlugin(), - registerComponentsPlugin({ - components: { - Callout: path.resolve(__dirname, './src/client/components/Callout.vue'), - ScssDocs: path.resolve(__dirname, './src/client/components/ScssDocs.vue'), - }, - }), - tocPlugin({}), - { - name: 'extendsPage', - extendsPage: (page) => { - const frontmatter = page.frontmatter - - frontmatter.head = [ - ['link', { rel: 'canonical', href: `https://coreui.io/vue/docs${page.path}` }], - ] - }, - }, - ], - theme: defaultTheme({ - sidebar: [ - { - text: 'Getting started', - icon: '', - link: `/getting-started/`, - children: [ - { - text: 'Introduction', - link: `/getting-started/introduction.html`, - }, - { - text: 'Accessibility', - link: `/getting-started/accessibility.html`, - }, - ], - }, - { - text: 'Customize', - icon: '', - link: '/customize/', - children: [ - { - text: 'Sass', - link: '/customize/sass.html', - }, - { - text: 'Options', - link: '/customize/options.html', - }, - { - text: 'CSS Variables', - link: '/customize/css-variables.html', - }, - ], - }, - { - text: 'Layout', - icon: ``, - link: `/layout/`, - children: [ - { - text: 'Breakpoints', - link: `/layout/breakpoints.html`, - }, - { - text: 'Columns', - link: `/layout/columns.html`, - }, - { - text: 'Containers', - link: `/layout/containers.html`, - }, - { - text: 'Grid', - link: `/layout/grid.html`, - }, - { - text: 'Gutters', - link: `/layout/gutters.html`, - }, - ], - }, - { - text: 'Forms', - icon: ``, - link: `/forms/`, - children: [ - { - text: 'Checkbox', - link: `/forms/checkbox.html`, - }, - { - text: 'Input', - link: `/forms/input.html`, - }, - { - text: 'Input group', - link: `/forms/input-group.html`, - }, - { - text: 'Radio', - link: `/forms/radio.html`, - }, - { - text: 'Range', - link: `/forms/range.html`, - }, - { - text: 'Select', - link: `/forms/select.html`, - }, - { - text: 'Switch', - link: `/forms/switch.html`, - }, - { - text: 'Textarea', - link: `/forms/textarea.html`, - }, - { - text: 'Floating labels', - link: `/forms/floating-labels.html`, - }, - { - text: 'Layout', - link: `/forms/layout.html`, - }, - { - text: 'Validation', - link: `/forms/validation.html`, - }, - ], - }, - { - text: 'Components', - icon: '', - link: `/components/`, - children: [ - { - text: 'Accordion', - link: `/components/accordion.html`, - }, - { - text: 'Alert', - link: `/components/alert.html`, - }, - { - text: 'Avatar', - link: `/components/avatar.html`, - }, - { - text: 'Badge', - link: `/components/badge.html`, - }, - { - text: 'Breadcrumb', - link: `/components/breadcrumb.html`, - }, - { - text: 'Buttons', - link: `/components/button.html`, - }, - { - text: 'Button Group', - link: `/components/button-group.html`, - }, - { - text: 'Callout', - link: `/components/callout.html`, - }, - { - text: 'Card', - link: `/components/card.html`, - }, - { - text: 'Carousel', - link: `/components/carousel.html`, - }, - { - text: 'Chart', - link: `/components/chart.html`, - }, - { - text: 'Close Button', - link: `/components/close-button.html`, - }, - { - text: 'Collapse', - link: `/components/collapse.html`, - }, - { - text: 'Dropdown', - link: `/components/dropdown.html`, - }, - { - text: 'Footer', - link: `/components/footer.html`, - }, - { - text: 'Header', - link: `/components/header.html`, - }, - { - text: 'Icon', - link: `/components/icon.html`, - }, - { - text: 'Image', - link: `/components/image.html`, - }, - { - text: 'List Group', - link: `/components/list-group.html`, - }, - { - text: 'Modal', - link: `/components/modal.html`, - }, - { - text: 'Navs & Tabs', - link: `/components/navs-tabs.html`, - }, - { - text: 'Navbar', - link: `/components/navbar.html`, - }, - { - text: 'Offcanvas', - link: `/components/offcanvas.html`, - }, - { - text: 'Pagination', - link: `/components/pagination.html`, - }, - { - text: 'Placeholder', - link: `/components/placeholder.html`, - }, - { - text: 'Popover', - link: `/components/popover.html`, - }, - { - text: 'Progress', - link: `/components/progress.html`, - }, - { - text: 'Sidebar', - link: `/components/sidebar.html`, - }, - { - text: 'Spinner', - link: `/components/spinner.html`, - }, - { - text: 'Table', - link: `/components/table.html`, - }, - { - text: 'Tabs', - link: `/components/tabs.html`, - }, - { - text: 'Toast', - link: `/components/toast.html`, - }, - { - text: 'Tooltip', - link: `/components/tooltip.html`, - }, - { - text: 'Widgets', - link: `/components/widgets.html`, - }, - ], - }, - { - text: 'Templates', - link: '/templates/', - icon: '', - children: [ - { - text: 'Admin & Dashboard', - link: '/templates/admin-dashboard.html', - badge: { - color: 'success', - text: 'New', - }, - }, - { - text: 'Download', - link: '/templates/download.html', - }, - { - text: 'Installation', - link: '/templates/installation.html', - }, - { - text: 'Customize', - link: '/templates/customize.html', - }, - { - text: 'Contents', - link: '/templates/contents.html', - }, - ], - }, - { - text: 'Migration', - link: '/migration/', - icon: '', - children: [ - { - text: 'v4', - link: '/migration/v4.html', - }, - { - text: 'v5', - link: '/migration/v5.html', - }, - ], - }, - ], - }), -}) diff --git a/packages/docs/.vuepress/public/brand/coreui-react.svg b/packages/docs/.vuepress/public/brand/coreui-react.svg deleted file mode 100755 index 9d44bb80..00000000 --- a/packages/docs/.vuepress/public/brand/coreui-react.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - coreui react - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/docs/.vuepress/public/favicon.ico b/packages/docs/.vuepress/public/favicon.ico deleted file mode 100644 index bf08304b..00000000 Binary files a/packages/docs/.vuepress/public/favicon.ico and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/android-icon-144x144.png b/packages/docs/.vuepress/public/favicons/android-icon-144x144.png deleted file mode 100644 index 4a91ec87..00000000 Binary files a/packages/docs/.vuepress/public/favicons/android-icon-144x144.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/android-icon-192x192.png b/packages/docs/.vuepress/public/favicons/android-icon-192x192.png deleted file mode 100644 index b14fee80..00000000 Binary files a/packages/docs/.vuepress/public/favicons/android-icon-192x192.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/android-icon-36x36.png b/packages/docs/.vuepress/public/favicons/android-icon-36x36.png deleted file mode 100644 index e958525d..00000000 Binary files a/packages/docs/.vuepress/public/favicons/android-icon-36x36.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/android-icon-48x48.png b/packages/docs/.vuepress/public/favicons/android-icon-48x48.png deleted file mode 100644 index cc96c868..00000000 Binary files a/packages/docs/.vuepress/public/favicons/android-icon-48x48.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/android-icon-72x72.png b/packages/docs/.vuepress/public/favicons/android-icon-72x72.png deleted file mode 100644 index d8083777..00000000 Binary files a/packages/docs/.vuepress/public/favicons/android-icon-72x72.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/android-icon-96x96.png b/packages/docs/.vuepress/public/favicons/android-icon-96x96.png deleted file mode 100644 index f3831425..00000000 Binary files a/packages/docs/.vuepress/public/favicons/android-icon-96x96.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-114x114.png b/packages/docs/.vuepress/public/favicons/apple-icon-114x114.png deleted file mode 100644 index 60cc9ba5..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-114x114.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-120x120.png b/packages/docs/.vuepress/public/favicons/apple-icon-120x120.png deleted file mode 100644 index 334a49af..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-120x120.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-144x144.png b/packages/docs/.vuepress/public/favicons/apple-icon-144x144.png deleted file mode 100644 index 4a91ec87..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-144x144.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-152x152.png b/packages/docs/.vuepress/public/favicons/apple-icon-152x152.png deleted file mode 100644 index d56d74ef..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-152x152.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-180x180.png b/packages/docs/.vuepress/public/favicons/apple-icon-180x180.png deleted file mode 100644 index 449c1188..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-180x180.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-57x57.png b/packages/docs/.vuepress/public/favicons/apple-icon-57x57.png deleted file mode 100644 index e3f2f14a..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-57x57.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-60x60.png b/packages/docs/.vuepress/public/favicons/apple-icon-60x60.png deleted file mode 100644 index 6a341e2c..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-60x60.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-72x72.png b/packages/docs/.vuepress/public/favicons/apple-icon-72x72.png deleted file mode 100644 index d8083777..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-72x72.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-76x76.png b/packages/docs/.vuepress/public/favicons/apple-icon-76x76.png deleted file mode 100644 index d16fe084..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-76x76.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon-precomposed.png b/packages/docs/.vuepress/public/favicons/apple-icon-precomposed.png deleted file mode 100644 index ba91b901..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon-precomposed.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/apple-icon.png b/packages/docs/.vuepress/public/favicons/apple-icon.png deleted file mode 100644 index ba91b901..00000000 Binary files a/packages/docs/.vuepress/public/favicons/apple-icon.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/browserconfig.xml b/packages/docs/.vuepress/public/favicons/browserconfig.xml deleted file mode 100644 index c5541482..00000000 --- a/packages/docs/.vuepress/public/favicons/browserconfig.xml +++ /dev/null @@ -1,2 +0,0 @@ - -#ffffff \ No newline at end of file diff --git a/packages/docs/.vuepress/public/favicons/favicon-16x16.png b/packages/docs/.vuepress/public/favicons/favicon-16x16.png deleted file mode 100644 index 95b7c793..00000000 Binary files a/packages/docs/.vuepress/public/favicons/favicon-16x16.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/favicon-32x32.png b/packages/docs/.vuepress/public/favicons/favicon-32x32.png deleted file mode 100644 index 0ae4bb17..00000000 Binary files a/packages/docs/.vuepress/public/favicons/favicon-32x32.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/favicon-96x96.png b/packages/docs/.vuepress/public/favicons/favicon-96x96.png deleted file mode 100644 index f3831425..00000000 Binary files a/packages/docs/.vuepress/public/favicons/favicon-96x96.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/manifest.json b/packages/docs/.vuepress/public/favicons/manifest.json deleted file mode 100644 index 35f191b0..00000000 --- a/packages/docs/.vuepress/public/favicons/manifest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "CoreUI for Vue.js", - "icons": [ - { - "src": "\/android-icon-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "\/android-icon-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "\/android-icon-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "\/android-icon-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "\/android-icon-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "\/android-icon-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] -} \ No newline at end of file diff --git a/packages/docs/.vuepress/public/favicons/ms-icon-144x144.png b/packages/docs/.vuepress/public/favicons/ms-icon-144x144.png deleted file mode 100644 index 4a91ec87..00000000 Binary files a/packages/docs/.vuepress/public/favicons/ms-icon-144x144.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/ms-icon-150x150.png b/packages/docs/.vuepress/public/favicons/ms-icon-150x150.png deleted file mode 100644 index 62a71f99..00000000 Binary files a/packages/docs/.vuepress/public/favicons/ms-icon-150x150.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/ms-icon-310x310.png b/packages/docs/.vuepress/public/favicons/ms-icon-310x310.png deleted file mode 100644 index 6135f12f..00000000 Binary files a/packages/docs/.vuepress/public/favicons/ms-icon-310x310.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/ms-icon-70x70.png b/packages/docs/.vuepress/public/favicons/ms-icon-70x70.png deleted file mode 100644 index bee38523..00000000 Binary files a/packages/docs/.vuepress/public/favicons/ms-icon-70x70.png and /dev/null differ diff --git a/packages/docs/.vuepress/public/favicons/safari-pinned-tab.svg b/packages/docs/.vuepress/public/favicons/safari-pinned-tab.svg deleted file mode 100644 index aa6e85cb..00000000 --- a/packages/docs/.vuepress/public/favicons/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/docs/.vuepress/public/images/angular.jpg b/packages/docs/.vuepress/public/images/angular.jpg deleted file mode 100755 index 50448112..00000000 Binary files a/packages/docs/.vuepress/public/images/angular.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/1.jpg b/packages/docs/.vuepress/public/images/avatars/1.jpg deleted file mode 100644 index 8b5f8091..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/1.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/2.jpg b/packages/docs/.vuepress/public/images/avatars/2.jpg deleted file mode 100644 index 161eeef5..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/2.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/3.jpg b/packages/docs/.vuepress/public/images/avatars/3.jpg deleted file mode 100644 index 53ecc542..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/3.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/4.jpg b/packages/docs/.vuepress/public/images/avatars/4.jpg deleted file mode 100644 index a6ee3c72..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/4.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/5.jpg b/packages/docs/.vuepress/public/images/avatars/5.jpg deleted file mode 100644 index c38baeed..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/5.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/6.jpg b/packages/docs/.vuepress/public/images/avatars/6.jpg deleted file mode 100644 index 57bbf968..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/6.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/7.jpg b/packages/docs/.vuepress/public/images/avatars/7.jpg deleted file mode 100644 index dfc20b7a..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/7.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/8.jpg b/packages/docs/.vuepress/public/images/avatars/8.jpg deleted file mode 100644 index 4e8b48d4..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/8.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/avatars/9.jpg b/packages/docs/.vuepress/public/images/avatars/9.jpg deleted file mode 100644 index f690e78c..00000000 Binary files a/packages/docs/.vuepress/public/images/avatars/9.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/brand/coreui-signet.svg b/packages/docs/.vuepress/public/images/brand/coreui-signet.svg deleted file mode 100644 index 9a4b2c5f..00000000 --- a/packages/docs/.vuepress/public/images/brand/coreui-signet.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - Untitled 3 - - - - - - - \ No newline at end of file diff --git a/packages/docs/.vuepress/public/images/react.jpg b/packages/docs/.vuepress/public/images/react.jpg deleted file mode 100755 index a1fe5a74..00000000 Binary files a/packages/docs/.vuepress/public/images/react.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/vue.jpg b/packages/docs/.vuepress/public/images/vue.jpg deleted file mode 100755 index d7b39647..00000000 Binary files a/packages/docs/.vuepress/public/images/vue.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/public/images/vue400.jpg b/packages/docs/.vuepress/public/images/vue400.jpg deleted file mode 100644 index 7f309ec2..00000000 Binary files a/packages/docs/.vuepress/public/images/vue400.jpg and /dev/null differ diff --git a/packages/docs/.vuepress/src/assets/brand/coreui-vue.svg b/packages/docs/.vuepress/src/assets/brand/coreui-vue.svg deleted file mode 100755 index 2b481a7d..00000000 --- a/packages/docs/.vuepress/src/assets/brand/coreui-vue.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/components/Ads.vue b/packages/docs/.vuepress/src/client/components/Ads.vue deleted file mode 100644 index 0cbcdb65..00000000 --- a/packages/docs/.vuepress/src/client/components/Ads.vue +++ /dev/null @@ -1,34 +0,0 @@ - \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/components/Banner.vue b/packages/docs/.vuepress/src/client/components/Banner.vue deleted file mode 100644 index ba150ac6..00000000 --- a/packages/docs/.vuepress/src/client/components/Banner.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/components/Callout.vue b/packages/docs/.vuepress/src/client/components/Callout.vue deleted file mode 100644 index da3b93d8..00000000 --- a/packages/docs/.vuepress/src/client/components/Callout.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/components/Footer.vue b/packages/docs/.vuepress/src/client/components/Footer.vue deleted file mode 100644 index d38e5749..00000000 --- a/packages/docs/.vuepress/src/client/components/Footer.vue +++ /dev/null @@ -1,38 +0,0 @@ - \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/components/Header.vue b/packages/docs/.vuepress/src/client/components/Header.vue deleted file mode 100644 index 17ee1090..00000000 --- a/packages/docs/.vuepress/src/client/components/Header.vue +++ /dev/null @@ -1,97 +0,0 @@ - - diff --git a/packages/docs/.vuepress/src/client/components/OtherFrameworks.vue b/packages/docs/.vuepress/src/client/components/OtherFrameworks.vue deleted file mode 100644 index b58ceed6..00000000 --- a/packages/docs/.vuepress/src/client/components/OtherFrameworks.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/components/ScssDocs.vue b/packages/docs/.vuepress/src/client/components/ScssDocs.vue deleted file mode 100644 index 61a93fee..00000000 --- a/packages/docs/.vuepress/src/client/components/ScssDocs.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/components/Sidebar.vue b/packages/docs/.vuepress/src/client/components/Sidebar.vue deleted file mode 100755 index 49581af1..00000000 --- a/packages/docs/.vuepress/src/client/components/Sidebar.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/components/SidebarNav.ts b/packages/docs/.vuepress/src/client/components/SidebarNav.ts deleted file mode 100755 index ba1b4a81..00000000 --- a/packages/docs/.vuepress/src/client/components/SidebarNav.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { defineComponent, h, computed, onMounted, ref } from 'vue' -import { useRoute } from 'vuepress/client' -import { RouterLink} from 'vue-router' -import { useSidebarItems } from '../composables' -import { withBase } from '@vuepress/client' -import { CBadge, CNavGroup, CNavItem, CSidebarNav } from '@coreui/vue/src/' -import { CIcon } from '@coreui/icons-vue' - -import type { VNode } from 'vue' -import type { RouteLocationNormalizedLoaded } from 'vue-router' -import type { ResolvedSidebarItem } from '../../shared' - -const normalizePath = (path: string): string => - decodeURI(path) - .replace(/#.*$/, '') - .replace(/(index)?\.(md|html)$/, '') - -const isActiveLink = (route: RouteLocationNormalizedLoaded, link?: string): boolean => { - if (link === undefined) { - return false - } - - if (route.hash === link) { - return true - } - - const currentPath = normalizePath(route.path) - const targetPath = normalizePath(link) - - return currentPath === targetPath -} - -const isActiveItem = (route: RouteLocationNormalizedLoaded, item: ResolvedSidebarItem): boolean => { - if (isActiveLink(route, item.link)) { - return true - } - - if (item.children) { - return item.children.some((child) => isActiveItem(route, child)) - } - - return false -} - -const SidebarNav = defineComponent({ - name: 'SidebarNav', - setup() { - const sidebarItems = useSidebarItems() - const route = useRoute() - const firstRender = ref(true) - - onMounted(() => { - firstRender.value = false - }) - - const renderItem = (item: any): VNode => { - if (item.children && !item.link.includes('.html')) { - const visible = computed(() => item.children.some((child) => isActiveItem(route, child))) - - return h( - CNavGroup, - { - ...(firstRender.value && { visible: visible.value }), - compact: true, - }, - { - togglerContent: () => [ - h(CIcon, { - customClassName: 'nav-icon text-primary', - icon: ['512 512', item.icon], - height: 64, - width: 64, - }), - item.text, - ], - default: () => item.children.map((child) => renderItem(child)), - }, - ) - } - - return h( - RouterLink, - { - to: item.link, - custom: true, - }, - { - default: (props) => - h( - CNavItem, - { - active: props.isActive, - disabled: item.disabled, - href: withBase(item.link), - }, - { - default: () => [ - item.text, - item.badge && - h( - CBadge, - { - class: 'ms-auto', - color: item.badge.color, - }, - { - default: () => item.badge.text, - }, - ), - ], - }, - ), - }, - ) - } - - return () => h( - CSidebarNav, - {}, - { - default: () => sidebarItems.value.map((item: any) => renderItem(item)), - } - ) - }, -}) - -export { SidebarNav } \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/components/Toc.vue b/packages/docs/.vuepress/src/client/components/Toc.vue deleted file mode 100644 index 074ca917..00000000 --- a/packages/docs/.vuepress/src/client/components/Toc.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/components/other_frameworks.json b/packages/docs/.vuepress/src/client/components/other_frameworks.json deleted file mode 100644 index b9297930..00000000 --- a/packages/docs/.vuepress/src/client/components/other_frameworks.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "accordion": { - "angular": "https://coreui.io/angular/docs/components/accordion/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/accordion/", - "react": "https://coreui.io/react/docs/components/accordion/", - "vue": "https://coreui.io/vue/docs/components/accordion.html" - }, - "alert": { - "angular": "https://coreui.io/angular/docs/components/alert/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/alerts/", - "react": "https://coreui.io/react/docs/components/alert/", - "vue": "https://coreui.io/vue/docs/components/alert.html" - }, - "avatar": { - "angular": "https://coreui.io/angular/docs/components/avatar/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/avatar/", - "react": "https://coreui.io/react/docs/components/avatar/", - "vue": "https://coreui.io/vue/docs/components/avatar.html" - }, - "badge": { - "angular": "https://coreui.io/angular/docs/components/badge/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/badge/", - "react": "https://coreui.io/react/docs/components/badge/", - "vue": "https://coreui.io/vue/docs/components/badge.html" - }, - "breadcrumb": { - "angular": "https://coreui.io/angular/docs/components/breadcrumb/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/breadcrumb/", - "react": "https://coreui.io/react/docs/components/breadcrumb/", - "vue": "https://coreui.io/vue/docs/components/breadcrumb.html" - }, - "button": { - "angular": "https://coreui.io/angular/docs/components/button/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/buttons/", - "react": "https://coreui.io/react/docs/components/button/", - "vue": "https://coreui.io/vue/docs/components/button.html" - }, - "button-group": { - "angular": "https://coreui.io/angular/docs/components/button-group/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/button-group/", - "react": "https://coreui.io/react/docs/components/button-group/", - "vue": "https://coreui.io/vue/docs/components/button-group.html" - }, - "callout": { - "angular": "https://coreui.io/angular/docs/components/callout/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/callout/", - "react": "https://coreui.io/react/docs/components/callout/", - "vue": "https://coreui.io/vue/docs/components/callout.html" - }, - "card": { - "angular": "https://coreui.io/angular/docs/components/card/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/card/", - "react": "https://coreui.io/react/docs/components/card/", - "vue": "https://coreui.io/vue/docs/components/card.html" - }, - "carousel": { - "angular": "https://coreui.io/angular/docs/components/carousel/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/carousel/", - "react": "https://coreui.io/react/docs/components/carousel/", - "vue": "https://coreui.io/vue/docs/components/carousel.html" - }, - "checkbox": { - "angular": "https://coreui.io/angular/docs/forms/checks-radios/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/checks-radios/", - "react": "https://coreui.io/react/docs/forms/checkbox/", - "vue": "https://coreui.io/vue/docs/forms/checkbox.html" - }, - "close-button": { - "angular": "https://coreui.io/angular/docs/components/close-button/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/close-button/", - "react": "https://coreui.io/react/docs/components/close-button/", - "vue": "https://coreui.io/vue/docs/components/close-button.html" - }, - "collapse": { - "angular": "https://coreui.io/angular/docs/components/collapse/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/collapse/", - "react": "https://coreui.io/react/docs/components/collapse/", - "vue": "https://coreui.io/vue/docs/components/collapse.html" - }, - "dropdown": { - "angular": "https://coreui.io/angular/docs/components/dropdown/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/dropdowns/", - "react": "https://coreui.io/react/docs/components/dropdown/", - "vue": "https://coreui.io/vue/docs/components/dropdown.html" - }, - "footer": { - "angular": "https://coreui.io/angular/docs/components/footer/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/footer/", - "react": "https://coreui.io/react/docs/components/footer/", - "vue": "https://coreui.io/vue/docs/components/footer.html" - }, - "header": { - "angular": "https://coreui.io/angular/docs/components/header/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/header/", - "react": "https://coreui.io/react/docs/components/header/", - "vue": "https://coreui.io/vue/docs/components/header.html" - }, - "icon": { - "angular": "https://coreui.io/angular/docs/components/icon/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/icon/", - "react": "https://coreui.io/react/docs/components/icon/", - "vue": "https://coreui.io/vue/docs/components/icon.html" - }, - "image": { - "angular": "https://coreui.io/angular/docs/components/image/", - "bootstrap": "https://coreui.io/bootstrap/docs/content/images/", - "react": "https://coreui.io/react/docs/components/image/", - "vue": "https://coreui.io/vue/docs/components/image.html" - }, - "input": { - "angular": "https://coreui.io/angular/docs/forms/input/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/form-control/", - "react": "https://coreui.io/react/docs/forms/input/", - "vue": "https://coreui.io/vue/docs/forms/input.html" - }, - "input-group": { - "angular": "https://coreui.io/angular/docs/forms/input-group/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/input-group/", - "react": "https://coreui.io/react/docs/forms/input-group/", - "vue": "https://coreui.io/vue/docs/forms/input-group.html" - }, - "floating-labels": { - "angular": "https://coreui.io/angular/docs/forms/floating-labels/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/floating-labels/", - "react": "https://coreui.io/react/docs/forms/floating-labels/", - "vue": "https://coreui.io/vue/docs/forms/floating-labels.html" - }, - "list-group": { - "angular": "https://coreui.io/angular/docs/components/list-group/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/list-group/", - "react": "https://coreui.io/react/docs/components/list-group/", - "vue": "https://coreui.io/vue/docs/components/list-group.html" - }, - "modal": { - "angular": "https://coreui.io/angular/docs/components/modal/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/modal/", - "react": "https://coreui.io/react/docs/components/modal/", - "vue": "https://coreui.io/vue/docs/components/modal.html" - }, - "navbar": { - "bootstrap": "https://coreui.io/bootstrap/docs/components/navbar/", - "react": "https://coreui.io/react/docs/components/navbar/", - "vue": "https://coreui.io/vue/docs/components/navbar.html" - }, - "navs-tabs": { - "angular": "https://coreui.io/angular/docs/components/nav/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/navs-tabs/", - "react": "https://coreui.io/react/docs/components/navs-tabs/", - "vue": "https://coreui.io/vue/docs/components/navs-tabs.html" - }, - "offcanvas": { - "angular": "https://coreui.io/angular/docs/components/offcanvas/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/offcanvas/", - "react": "https://coreui.io/react/docs/components/offcanvas/", - "vue": "https://coreui.io/vue/docs/components/offcanvas.html" - }, - "pagination": { - "angular": "https://coreui.io/angular/docs/components/pagination/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/pagination/", - "react": "https://coreui.io/react/docs/components/pagination/", - "vue": "https://coreui.io/vue/docs/components/pagination.html" - }, - "placeholder": { - "angular": "https://coreui.io/angular/docs/components/placeholder/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/placeholders/", - "react": "https://coreui.io/react/docs/components/placeholder/", - "vue": "https://coreui.io/vue/docs/components/placeholder.html" - }, - "popover": { - "angular": "https://coreui.io/angular/docs/components/popover/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/popovers/", - "react": "https://coreui.io/react/docs/components/popover/", - "vue": "https://coreui.io/vue/docs/components/popover.html" - }, - "progress": { - "angular": "https://coreui.io/angular/docs/components/progress/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/progress/", - "react": "https://coreui.io/react/docs/components/progress/", - "vue": "https://coreui.io/vue/docs/components/progress.html" - }, - "radio": { - "angular": "https://coreui.io/angular/docs/forms/checks-radios/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/checks-radios/", - "react": "https://coreui.io/react/docs/forms/radio/", - "vue": "https://coreui.io/vue/docs/forms/radio.html" - }, - "range": { - "angular": "https://coreui.io/angular/docs/forms/range/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/range/", - "react": "https://coreui.io/react/docs/forms/range/", - "vue": "https://coreui.io/vue/docs/forms/range.html" - }, - "select": { - "angular": "https://coreui.io/angular/docs/forms/select/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/select/", - "react": "https://coreui.io/react/docs/forms/select/", - "vue": "https://coreui.io/vue/docs/forms/select.html" - }, - "sidebar": { - "angular": "https://coreui.io/angular/docs/components/sidebar/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/sidebar/", - "react": "https://coreui.io/react/docs/components/sidebar/", - "vue": "https://coreui.io/vue/docs/components/sidebar.html" - }, - "spinner": { - "angular": "https://coreui.io/angular/docs/components/spinner/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/spinners/", - "react": "https://coreui.io/react/docs/components/spinner/", - "vue": "https://coreui.io/vue/docs/components/spinner.html" - }, - "switch": { - "angular": "https://coreui.io/angular/docs/forms/checks-radios/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/checks-radios/", - "react": "https://coreui.io/react/docs/forms/switch/", - "vue": "https://coreui.io/vue/docs/forms/switch.html" - }, - "table": { - "angular": "https://coreui.io/angular/docs/components/table/", - "bootstrap": "https://coreui.io/bootstrap/docs/content/tables/", - "react": "https://coreui.io/react/docs/components/table/", - "vue": "https://coreui.io/vue/docs/components/table.html" - }, - "textarea": { - "angular": "https://coreui.io/angular/docs/forms/form-control/", - "bootstrap": "https://coreui.io/bootstrap/docs/forms/form-control/", - "react": "https://coreui.io/react/docs/forms/textarea/", - "vue": "https://coreui.io/vue/docs/forms/textarea.html" - }, - "toast": { - "angular": "https://coreui.io/angular/docs/components/toast/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/toasts/", - "react": "https://coreui.io/react/docs/components/toast/", - "vue": "https://coreui.io/vue/docs/components/toast.html" - }, - "tooltip": { - "angular": "https://coreui.io/angular/docs/components/tooltip/", - "bootstrap": "https://coreui.io/bootstrap/docs/components/tooltips/", - "react": "https://coreui.io/react/docs/components/tooltip/", - "vue": "https://coreui.io/vue/docs/components/tooltip.html" - } -} diff --git a/packages/docs/.vuepress/src/client/composables/index.ts b/packages/docs/.vuepress/src/client/composables/index.ts deleted file mode 100644 index 26ca889b..00000000 --- a/packages/docs/.vuepress/src/client/composables/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './useScrollPromise' -export * from './useSidebarItems' -export * from './useThemeData' diff --git a/packages/docs/.vuepress/src/client/composables/useNavLink.ts b/packages/docs/.vuepress/src/client/composables/useNavLink.ts deleted file mode 100755 index 0dc5fc38..00000000 --- a/packages/docs/.vuepress/src/client/composables/useNavLink.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { NavLink } from '../../shared/index.js' -import { useResolveRouteWithRedirect } from './useResolveRouteWithRedirect.js' - -declare module 'vue-router' { - interface RouteMeta { - title?: string - } -} - -/** - * Resolve NavLink props from string - * - * @example - * - Input: '/README.md' - * - Output: { text: 'Home', link: '/' } - */ -export const useNavLink = (item: string): NavLink => { - // the route path of vue-router is url-encoded, and we expect users are using - // non-url-encoded string in theme config, so we need to url-encode it first to - // resolve the route correctly - const resolved = useResolveRouteWithRedirect(encodeURI(item)) - return { - text: resolved.meta.title || item, - link: resolved.name === '404' ? item : resolved.fullPath, - } -} \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/composables/useResolveRouteWithRedirect.ts b/packages/docs/.vuepress/src/client/composables/useResolveRouteWithRedirect.ts deleted file mode 100755 index 5a1958a4..00000000 --- a/packages/docs/.vuepress/src/client/composables/useResolveRouteWithRedirect.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { isFunction, isString } from '@vuepress/shared' -import { useRouter } from 'vue-router' -import type { Router } from 'vue-router' - -/** - * Resolve a route with redirection - */ -export const useResolveRouteWithRedirect = ( - ...args: Parameters -): ReturnType => { - const router = useRouter() - const route = router.resolve(...args) - const lastMatched = route.matched[route.matched.length - 1] - if (!lastMatched?.redirect) { - return route - } - const { redirect } = lastMatched - const resolvedRedirect = isFunction(redirect) ? redirect(route) : redirect - const resolvedRedirectObj = isString(resolvedRedirect) - ? { path: resolvedRedirect } - : resolvedRedirect - return useResolveRouteWithRedirect({ - hash: route.hash, - query: route.query, - params: route.params, - ...resolvedRedirectObj, - }) -} \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/composables/useScrollPromise.ts b/packages/docs/.vuepress/src/client/composables/useScrollPromise.ts deleted file mode 100755 index 02e726ca..00000000 --- a/packages/docs/.vuepress/src/client/composables/useScrollPromise.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface ScrollPromise { - wait(): Promise | null - pending: () => void - resolve: () => void -} - -let promise: Promise | null = null -let promiseResolve: (() => void) | null = null - -const scrollPromise: ScrollPromise = { - wait: () => promise, - pending: () => { - promise = new Promise((resolve) => (promiseResolve = resolve)) - }, - resolve: () => { - promiseResolve?.() - promise = null - promiseResolve = null - }, -} - -export const useScrollPromise = (): ScrollPromise => scrollPromise \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/composables/useSidebarItems.ts b/packages/docs/.vuepress/src/client/composables/useSidebarItems.ts deleted file mode 100755 index cc9aa7b6..00000000 --- a/packages/docs/.vuepress/src/client/composables/useSidebarItems.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { usePageData, usePageFrontmatter } from '@vuepress/client' -import type { PageHeader } from '@vuepress/client' -import { - isPlainObject, - isString, - resolveLocalePath, -} from '@vuepress/shared' -import { computed, inject, provide } from 'vue' -import type { ComputedRef, InjectionKey } from 'vue' -import { useRoute } from 'vue-router' -import type { - DefaultThemeData, - DefaultThemeNormalPageFrontmatter, - ResolvedSidebarItem, - SidebarConfigArray, - SidebarConfigObject, - SidebarItem, -} from '../../shared/index.js' -import { useNavLink } from './useNavLink.js' -import { useThemeLocaleData } from './useThemeData.js' - -export type SidebarItemsRef = ComputedRef - -export const sidebarItemsSymbol: InjectionKey = - Symbol('sidebarItems') - -/** - * Inject sidebar items global computed - */ -export const useSidebarItems = (): SidebarItemsRef => { - const sidebarItems = inject(sidebarItemsSymbol) - if (!sidebarItems) { - throw new Error('useSidebarItems() is called without provider.') - } - return sidebarItems -} - -/** - * Create sidebar items ref and provide as global computed in setup - */ -export const setupSidebarItems = (): void => { - const themeLocale = useThemeLocaleData() - const frontmatter = usePageFrontmatter() - const sidebarItems = computed(() => - resolveSidebarItems(frontmatter.value, themeLocale.value) - ) - provide(sidebarItemsSymbol, sidebarItems) -} - -/** - * Resolve sidebar items global computed - * - * It should only be resolved and provided once - */ -export const resolveSidebarItems = ( - frontmatter: DefaultThemeNormalPageFrontmatter, - themeLocale: DefaultThemeData -): ResolvedSidebarItem[] => { - // get sidebar config from frontmatter > theme data - const sidebarConfig = frontmatter.sidebar ?? themeLocale.sidebar ?? 'auto' - const sidebarDepth = frontmatter.sidebarDepth ?? themeLocale.sidebarDepth ?? 2 - - // resolve sidebar items according to the config - if (frontmatter.home || sidebarConfig === false) { - return [] - } - - if (sidebarConfig === 'auto') { - return resolveAutoSidebarItems(sidebarDepth) - } - - if (Array.isArray(sidebarConfig)) { - return resolveArraySidebarItems(sidebarConfig, sidebarDepth) - } - - if (isPlainObject(sidebarConfig)) { - return resolveMultiSidebarItems(sidebarConfig, sidebarDepth) - } - - return [] -} - -/** - * Util to transform page header to sidebar item - */ -export const headerToSidebarItem = ( - header: PageHeader, - sidebarDepth: number -): ResolvedSidebarItem => ({ - text: header.title, - link: header.link, - children: headersToSidebarItemChildren(header.children, sidebarDepth), -}) - -export const headersToSidebarItemChildren = ( - headers: PageHeader[], - sidebarDepth: number -): ResolvedSidebarItem[] => - sidebarDepth > 0 - ? headers.map((header) => headerToSidebarItem(header, sidebarDepth - 1)) - : [] - -/** - * Resolve sidebar items if the config is `auto` - */ -export const resolveAutoSidebarItems = ( - sidebarDepth: number -): ResolvedSidebarItem[] => { - const page = usePageData() - - return [ - { - text: page.value.title, - children: headersToSidebarItemChildren(page.value.headers, sidebarDepth), - }, - ] -} - -/** - * Resolve sidebar items if the config is an array - */ -export const resolveArraySidebarItems = ( - sidebarConfig: SidebarConfigArray, - sidebarDepth: number -): ResolvedSidebarItem[] => { - const route = useRoute() - const page = usePageData() - - const handleChildItem = ( - item: ResolvedSidebarItem | SidebarItem | string - ): ResolvedSidebarItem => { - let childItem: ResolvedSidebarItem - if (isString(item)) { - childItem = useNavLink(item) - } else { - childItem = item as ResolvedSidebarItem - } - - if (childItem.children) { - return { - ...childItem, - children: childItem.children.map((item) => handleChildItem(item)), - } - } - - // TODO: check if we need this - // if the sidebar item is current page and children is not set - // use headers of current page as children - // if (childItem.link === route.path) { - // // skip h1 header - // const headers = - // page.value.headers[0]?.level === 1 - // ? page.value.headers[0].children - // : page.value.headers - // return { - // ...childItem, - // children: headersToSidebarItemChildren(headers, sidebarDepth), - // } - // } - - return childItem - } - - return sidebarConfig.map((item) => handleChildItem(item)) -} - -/** - * Resolve sidebar items if the config is a key -> value (path-prefix -> array) object - */ -export const resolveMultiSidebarItems = ( - sidebarConfig: SidebarConfigObject, - sidebarDepth: number -): ResolvedSidebarItem[] => { - const route = useRoute() - const sidebarPath = resolveLocalePath(sidebarConfig, route.path) - const matchedSidebarConfig = sidebarConfig[sidebarPath] ?? [] - - return resolveArraySidebarItems(matchedSidebarConfig, sidebarDepth) -} \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/composables/useThemeData.ts b/packages/docs/.vuepress/src/client/composables/useThemeData.ts deleted file mode 100755 index 78ab77f7..00000000 --- a/packages/docs/.vuepress/src/client/composables/useThemeData.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - useThemeData as _useThemeData, - useThemeLocaleData as _useThemeLocaleData, -} from '@vuepress/plugin-theme-data/client' -import type { - ThemeDataRef, - ThemeLocaleDataRef, -} from '@vuepress/plugin-theme-data/client' -import type { DefaultThemeData } from '../../shared/index.js' - -export const useThemeData = (): ThemeDataRef => - _useThemeData() -export const useThemeLocaleData = (): ThemeLocaleDataRef => - _useThemeLocaleData() \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/config.ts b/packages/docs/.vuepress/src/client/config.ts deleted file mode 100644 index ca174efb..00000000 --- a/packages/docs/.vuepress/src/client/config.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { defineClientConfig } from '@vuepress/client' -import { h } from 'vue' -import { - setupSidebarItems, - useScrollPromise, -} from './composables/index.js' -import Layout from './layouts/Layout.vue' -import NotFound from './layouts/404.vue' - -import './styles/index.scss' - -export default defineClientConfig({ - enhance({ app, router }) { - - // compat with @vuepress/plugin-external-link-icon - app.component('AutoLinkExternalIcon', () => { - const ExternalLinkIcon = app.component('ExternalLinkIcon') - if (ExternalLinkIcon) { - return h(ExternalLinkIcon) - } - return null - }) - - // handle scrollBehavior with transition - const scrollBehavior = router.options.scrollBehavior! - router.options.scrollBehavior = async (...args) => { - await useScrollPromise().wait() - return scrollBehavior(...args) - } - }, - - setup() { - setupSidebarItems() - }, - - layouts: { - Layout, - NotFound, - }, -}) \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/index.ts b/packages/docs/.vuepress/src/client/index.ts deleted file mode 100755 index 520d8125..00000000 --- a/packages/docs/.vuepress/src/client/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from '../shared/index.js' -export * from './composables/index.js' \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/layouts/404.vue b/packages/docs/.vuepress/src/client/layouts/404.vue deleted file mode 100755 index b8315905..00000000 --- a/packages/docs/.vuepress/src/client/layouts/404.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/layouts/Layout.vue b/packages/docs/.vuepress/src/client/layouts/Layout.vue deleted file mode 100755 index 75d6da70..00000000 --- a/packages/docs/.vuepress/src/client/layouts/Layout.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/layouts/Redirect.vue b/packages/docs/.vuepress/src/client/layouts/Redirect.vue deleted file mode 100644 index 2f3cb7c6..00000000 --- a/packages/docs/.vuepress/src/client/layouts/Redirect.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/packages/docs/.vuepress/src/client/shim.d.ts b/packages/docs/.vuepress/src/client/shim.d.ts deleted file mode 100755 index f97ca4f4..00000000 --- a/packages/docs/.vuepress/src/client/shim.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -declare module '*.vue' { - import type { ComponentOptions } from 'vue' - const comp: ComponentOptions - export default comp -} - -declare module '*.module.scss?module' { - const cssVars: Record - export default cssVars -} \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/styles/_ads.scss b/packages/docs/.vuepress/src/client/styles/_ads.scss deleted file mode 100644 index 575db8b0..00000000 --- a/packages/docs/.vuepress/src/client/styles/_ads.scss +++ /dev/null @@ -1,38 +0,0 @@ -// stylelint-disable declaration-no-important, selector-max-id - -// -// Carbon ads -// - -#carbonads { - position: static; - display: block; - max-width: 400px; - padding: 15px 15px 15px 160px; - margin: 2rem 0; - overflow: hidden; - @include font-size(.8125rem); - line-height: 1.4; - text-align: left; - background-color: var(--cui-tertiary-bg); - - a { - color: var(--cui-body-color); - text-decoration: none; - } - - @include media-breakpoint-up(sm) { - @include border-radius(.5rem); - } -} - -.carbon-img { - float: left; - margin-left: -145px; -} - -.carbon-poweredby { - display: block; - margin-top: .75rem; - color: var(--cui-body-color) !important; -} diff --git a/packages/docs/.vuepress/src/client/styles/_anchor.scss b/packages/docs/.vuepress/src/client/styles/_anchor.scss deleted file mode 100644 index 3f9ade89..00000000 --- a/packages/docs/.vuepress/src/client/styles/_anchor.scss +++ /dev/null @@ -1,22 +0,0 @@ -.anchor-link { - font-weight: 400; - color: rgba($link-color, .5); - padding-left: 0.375em; - text-decoration: none; - opacity: 0; - @include transition(color .15s ease-in-out); - - &:focus, - &:hover { - color: $link-color; - text-decoration: none; - } -} - -h2, h3, h4, h5, h6 { - &:hover { - .anchor-link { - opacity: 1; - } - } -} \ No newline at end of file diff --git a/packages/docs/.vuepress/src/client/styles/_callouts.scss b/packages/docs/.vuepress/src/client/styles/_callouts.scss deleted file mode 100644 index a0dc566c..00000000 --- a/packages/docs/.vuepress/src/client/styles/_callouts.scss +++ /dev/null @@ -1,39 +0,0 @@ -// -// Callouts -// - -.docs-callout { - --#{$prefix}link-color-rgb: var(--cd-callout-link); - --#{$prefix}code-color: var(--cd-callout-code-color); - - padding: 1.25rem; - margin-top: 1.25rem; - margin-bottom: 1.25rem; - background-color: var(--cd-callout-bg, var(--cui-gray-100)); - border-left: .25rem solid var(--cd-callout-border, var(--cui-gray-300)); - - h4 { - margin-bottom: .25rem; - } - - > :last-child { - margin-bottom: 0; - } - - + .docs-callout { - margin-top: -.25rem; - } - - .highlight { - background-color: rgba($black, .05); - } -} - -// Variations -@each $variant in $cd-callout-variants { - .docs-callout-#{$variant} { - --cd-callout-color: var(--cui-#{$variant}-text-emphasis); - --cd-callout-bg: rgba(var(--cui-#{$variant}-rgb), .1); - --cd-callout-border: var(--cui-#{$variant}); - } -} diff --git a/packages/docs/.vuepress/src/client/styles/_component-examples.scss b/packages/docs/.vuepress/src/client/styles/_component-examples.scss deleted file mode 100644 index 2e725c8f..00000000 --- a/packages/docs/.vuepress/src/client/styles/_component-examples.scss +++ /dev/null @@ -1,471 +0,0 @@ -// -// Docs examples -// - -.docs-code-tabs { - padding: 0 ($cd-gutter-x * .5); - margin: 0 ($cd-gutter-x * -.5); - - @include media-breakpoint-up(md) { - padding: 0; - margin: 0; - } -} - -.docs-code-tab-content { - .tab-pane div[class^="language-"] { - border-top: 0 !important; - @include border-top-radius(0 !important); - } -} - -.docs-example-snippet { - border: solid var(--cui-border-color); - border-width: 1px 0; - - @include media-breakpoint-up(md) { - border-width: 1px; - } -} - -.docs-example { - --cd-example-padding: 1rem; - - position: relative; - padding: var(--cd-example-padding); - margin: 0 ($cd-gutter-x * -.5); - border: solid var(--cui-border-color); - border-width: 1px 0; - @include clearfix(); - - @include media-breakpoint-up(md) { - --cd-example-padding: 1.5rem; - - margin-right: 0; - margin-left: 0; - border-width: 1px; - @include border-top-radius(var(--cui-border-radius)); - } - - + .docs-code-snippet { - @include border-top-radius(0); - border: solid var(--cui-border-color); - border-width: 0 1px 1px; - } - - + p { - margin-top: 2rem; - } - - > .form-control { - + .form-control { - margin-top: .5rem; - } - } - - > .nav + .nav, - > .alert + .alert, - > .navbar + .navbar, - > .progress + .progress { - margin-top: $spacer; - } - - > .dropdown-menu { - position: static; - display: block; - } - - > :last-child, - > nav:last-child .breadcrumb { - margin-bottom: 0; - } - - > hr:last-child { - margin-bottom: $spacer; - } - - // Images - > svg + svg, - > img + img { - margin-left: .5rem; - } - - // Avatars - > .avatar + .avatar { - margin-left: .25rem; - } - - // Badges - > .badge + .badge { - margin-left: .25rem; - } - - // Buttons - > .btn, - > .btn-group { - margin: .25rem .125rem; - } - > .btn-toolbar + .btn-toolbar { - margin-top: .5rem; - } - - // List groups - > .list-group { - max-width: 400px; - } - - > [class*="list-group-horizontal"] { - max-width: 100%; - } - - // Navbars - .fixed-top, - .sticky-top { - position: static; - margin: calc(var(--cd-example-padding) * -1) calc(var(--cd-example-padding) * -1) var(--cd-example-padding); // stylelint-disable-line function-disallowed-list - } - - .fixed-bottom, - .sticky-bottom { - position: static; - margin: var(--cd-example-padding) calc(var(--cd-example-padding) * -1) calc(var(--cd-example-padding) * -1); // stylelint-disable-line function-disallowed-list - - } - - // Pagination - .pagination { - margin-bottom: 0; - } - - // Sidebar - .sidebar-narrow, - .sidebar-narrow-unfoldable { - position: static; - } - - .sidebar-narrow-unfoldable { - min-height: 550px; - } - - // Spinners - > .spinner-grow + .spinner-border, - > .spinner-border + .spinner-grow, - > .spinner-border + .spinner-border, - > .spinner-grow + .spinner-grow { - margin-left: .25rem; - } -} - -// -// Grid examples -// - -.docs-example-row [class^="col"], -.docs-example-cols [class^="col"] > *, -.docs-example-cssgrid [class*="grid"] > * { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(var(--cd-violet-rgb), .15); - border: 1px solid rgba(var(--cd-violet-rgb), .3); -} - -.docs-example-row .row + .row, -.docs-example-cssgrid .grid + .grid { - margin-top: 1rem; -} - -.docs-example-row-flex-cols .row { - min-height: 10rem; - background-color: rgba(var(--cd-violet-rgb), .15); -} - -.docs-example-flex div:not(.vr) { - background-color: rgba(var(--cd-violet-rgb), .15); - border: 1px solid rgba(var(--cd-violet-rgb), .3); -} - -// Grid mixins -.example-container { - width: 800px; - @include make-container(); -} - -.example-row { - @include make-row(); -} - -.example-content-main { - @include make-col-ready(); - - @include media-breakpoint-up(sm) { - @include make-col(6); - } - - @include media-breakpoint-up(lg) { - @include make-col(8); - } -} - -.example-content-secondary { - @include make-col-ready(); - - @include media-breakpoint-up(sm) { - @include make-col(6); - } - - @include media-breakpoint-up(lg) { - @include make-col(4); - } -} - -// Ratio helpers -.docs-example-ratios { - .ratio { - display: inline-block; - width: 10rem; - color: var(--cui-secondary-color); - background-color: var(--cui-tertiary-bg); - border: var(--cui-border-width) solid var(--cui-border-color); - - > div { - display: flex; - align-items: center; - justify-content: center; - } - } -} -.docs-example-ratios-breakpoint { - .ratio-4x3 { - width: 16rem; - - @include media-breakpoint-up(md) { - --cui-aspect-ratio: 50%; // 2x1 - } - } -} - -.docs-example-offcanvas { - .offcanvas { - position: static; - display: block; - height: 200px; - visibility: visible; - transform: translate(0); - } -} - -// Tooltips -.tooltip-demo { - a { - white-space: nowrap; - } - - .btn { - margin: .25rem .125rem; - } -} - -// scss-docs-start custom-tooltip -.custom-tooltip { - --cui-tooltip-bg: var(--cui-primary); -} -// scss-docs-end custom-tooltip - -// scss-docs-start custom-popovers -.custom-popover { - --cui-popover-max-width: 200px; - --cui-popover-border-color: var(--cui-primary); - --cui-popover-header-bg: var(--cui-primary); - --cui-popover-header-color: var(--cui-white); - --cui-popover-body-padding-x: 1rem; - --cui-popover-body-padding-y: .5rem; -} -// scss-docs-end custom-popovers - -// Scrollspy demo on fixed height div -.scrollspy-example { - height: 200px; - margin-top: .5rem; - overflow: auto; -} - -.scrollspy-example-2 { - height: 350px; - overflow: auto; -} - -.simple-list-example-scrollspy { - .active { - background-color: rgba(var(--cd-violet-rgb), .15); - } -} - -.docs-example-border-utils { - [class^="border"] { - display: inline-block; - width: 5rem; - height: 5rem; - margin: .25rem; - background-color: var(--cui-tertiary-bg); - } -} - -.docs-example-rounded-utils { - [class*="rounded"] { - margin: .25rem; - } -} - -.docs-example-position-utils { - position: relative; - padding: 2rem; - - .position-relative { - height: 200px; - background-color: var(--cui-tertiary-bg); - } - - .position-absolute { - width: 2rem; - height: 2rem; - background-color: var(--cui-body-color); - @include border-radius(); - } -} - -.docs-example-position-examples { - &::after { - content: none; - } -} - -// Placeholders -.docs-example-placeholder-cards { - &::after { - display: none; - } - - .card { - width: 18rem; - } -} - -// Toasts -.docs-example-toasts { - min-height: 240px; -} - -.docs-example-zindex-levels { - min-height: 15rem; - - > div { - color: var(--cui-body-bg); - background-color: var(--cd-violet); - border: 1px solid var(--cd-purple); - - > span { - position: absolute; - right: 5px; - bottom: 0; - } - } - - > :nth-child(2) { - top: 3rem; - left: 3rem; - } - > :nth-child(3) { - top: 4.5rem; - left: 4.5rem; - } - > :nth-child(4) { - top: 6rem; - left: 6rem; - } - > :nth-child(5) { - top: 7.5rem; - left: 7.5rem; - } -} - -// -// Code snippets -// - -div[class^="language-"], -.highlight { - position: relative; - padding: .75rem ($cd-gutter-x * .5); - margin: 0 ($cd-gutter-x * -.5) 1rem ($cd-gutter-x * -.5) ; - border: 1px solid var(--cui-border-color); - background-color: var(--cd-pre-bg); - - @include media-breakpoint-up(md) { - padding: .75rem 1.25rem; - margin-right: 0; - margin-left: 0; - @include border-radius(var(--cui-border-radius)); - } - - pre { - padding: .25rem 0 .875rem; - margin-top: .8125rem; - margin-bottom: 0; - overflow: overlay; - white-space: pre; - background-color: transparent; - border: 0; - } - - pre code { - @include font-size(inherit); - color: var(--cui-body-color); // Effectively the base text color - word-wrap: normal; - } -} - -.docs-code-snippet { - margin: 0 ($cd-gutter-x * -.5) $spacer; - - div[class^="language-"], - .highlight { - margin-bottom: 0; - } - - .docs-example ~ div[class^="language-"], - .docs-example ~ .highlight { - border: 0; - @include border-top-radius(0); - } - - .docs-example { - margin: 0; - border: 0; - } - - @include media-breakpoint-up(md) { - margin-right: 0; - margin-left: 0; - @include border-radius($border-radius); - } -} - -.highlight-toolbar { - background-color: var(--cd-pre-bg); -} - -.docs-scss-docs { - .highlight-toolbar { - @include border-top-radius(calc(var(--cui-border-radius) + 1px)); - } -} - -.docs-example { - border-bottom-width: 0; -} - -.docs-example + div[class^="language-"], -.docs-example + .highlight { - border-top-width: 0; - @include border-top-radius(0); -} diff --git a/packages/docs/.vuepress/src/client/styles/_footer.scss b/packages/docs/.vuepress/src/client/styles/_footer.scss deleted file mode 100644 index 7544a17b..00000000 --- a/packages/docs/.vuepress/src/client/styles/_footer.scss +++ /dev/null @@ -1,19 +0,0 @@ -// -// Footer -// - -.footer { - --cui-footer-bg: var(--cui-tertiary-bg); - @include font-size(.875rem); - - a { - color: var(--#{$prefix}tertiary-color); - text-decoration: none; - - &:hover, - &:focus { - color: var(--cui-link-hover-color); - text-decoration: underline; - } - } -} diff --git a/packages/docs/.vuepress/src/client/styles/_layout.scss b/packages/docs/.vuepress/src/client/styles/_layout.scss deleted file mode 100644 index 2ee63995..00000000 --- a/packages/docs/.vuepress/src/client/styles/_layout.scss +++ /dev/null @@ -1,54 +0,0 @@ -.wrapper { - width: 100%; - @include ltr-rtl("padding-left", var(--cui-sidebar-occupy-start, 0)); - will-change: auto; - @include transition(padding .15s); - - > .container-lg { - --cui-gutter-x: 3rem; - } -} - -.docs-sidebar { - grid-area: sidebar; -} - -.docs-main { - grid-area: main; - - @include media-breakpoint-down(lg) { - max-width: 760px; - margin-inline: auto; - } - - @include media-breakpoint-up(md) { - display: grid; - grid-template-areas: - "intro" - "toc" - "content"; - grid-template-rows: auto auto 1fr; - gap: $grid-gutter-width; - } - - @include media-breakpoint-up(lg) { - grid-template-areas: - "intro toc" - "content toc"; - grid-template-rows: auto 1fr; - grid-template-columns: 4fr 1fr; - } -} - -.docs-intro { - grid-area: intro; -} - -.docs-toc { - grid-area: toc; -} - -.docs-content { - grid-area: content; - min-width: 1px; // Fix width when bd-content contains a `
    ` https://github.com/twbs/bootstrap/issues/25410
    -}
    diff --git a/packages/docs/.vuepress/src/client/styles/_prism.scss b/packages/docs/.vuepress/src/client/styles/_prism.scss
    deleted file mode 100644
    index 6145e4b6..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_prism.scss
    +++ /dev/null
    @@ -1,172 +0,0 @@
    -/* PrismJS 1.24.1
    -https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript */
    -/**
    - * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
    - * Based on https://github.com/chriskempson/tomorrow-theme
    - * @author Rose Pritchard
    - */
    -
    -:root,
    -[data-coreui-theme="light"] {
    -  // --base00: #fff;
    -  // --base01: #f5f5f5;
    -  --base02: #c8c8fa;
    -  --base03: #565c64;
    -  --base04: #666;
    -  --base05: #333;
    -  --base06: #fff;
    -  --base07: #{$teal-700}; // #9a6700
    -  --base08: #{mix($red-500, $red-600, 50%)}; // #bc4c00
    -  --base09: #{$cyan-700}; // #087990
    -  --base0A: #{$purple-500}; // #795da3
    -  --base0B: #{$blue-700}; // #183691
    -  --base0C: #{$blue-700}; // #183691
    -  --base0D: #{$purple-500}; // #795da3
    -  --base0E: #{$pink-600}; // #a71d5d
    -  --base0F: #333;
    - }
    -
    -@include color-mode(dark, true) {
    -  // --base00: #282c34;
    -  // --base01: #353b45;
    -  --base02: #3e4451;
    -  --base03: #868e96;
    -  --base04: #868e96;
    -  --base05: #abb2bf;
    -  --base06: #b6bdca;
    -  --base07: #{$orange-300}; // #d19a66
    -  --base08: #{$cyan-300};
    -  --base09: #{$orange-300}; // #d19a66
    -  --base0A: #{$yellow-200}; // #e5c07b
    -  --base0B: #{$teal-300}; // #98c379
    -  --base0C: #{$teal-300}; // #56b6c2
    -  --base0D: #{$blue-300}; // #61afef
    -  --base0E: #{$indigo-200}; // #c678dd
    -  --base0F: #{$red-300}; // #be5046
    -
    -  .language-diff .gd {
    -    color: $red-400;
    -  }
    -  .language-diff .gi {
    -    color: $green-400;
    -  }
    -}
    -
    -code[class*='language-'],
    -pre[class*='language-'] {
    -  background: none;
    -  font-family: var(--cui-font-monospace);
    -  font-size: .875em;
    -  text-align: left;
    -  white-space: pre;
    -
    -  -moz-tab-size: 4;
    -  -o-tab-size: 4;
    -  tab-size: 4;
    -
    -  -webkit-hyphens: none;
    -  -moz-hyphens: none;
    -  -ms-hyphens: none;
    -  hyphens: none;
    -}
    -
    -pre[class*='language-']:not(.language-sass):not(.language-scss):not(.language-text):not(.language-css) {
    -  overflow: scroll;
    -  max-height: 500px;
    -}
    -
    -.token.comment,
    -.token.block-comment,
    -.token.prolog,
    -.token.doctype,
    -.token.cdata {
    -  color: var(--base03);
    -}
    -
    -.token.tag {
    -  color: var(--base08);
    -}
    -
    -.token.attr-name,
    -.token.namespace,
    -.token.deleted {
    -  color: var(--base0A);
    -}
    -
    -.token.punctuation {
    -  color: var(--base05);
    -}
    -
    -.token.function-name {
    -  color: var(--base0A); 
    -}
    -
    -.token.boolean,
    -.token.number,
    -.token.function {
    -  color: var(--base09);
    -}
    -
    -.token.class-name,
    -.token.maybe-class-name {
    -  color: var(--base08);
    -}
    -
    -.token.property,
    -.token.constant,
    -.token.symbol {
    -  color: var(--base0A);
    -}
    -
    -.token.selector,
    -.token.important,
    -.token.atrule,
    -.token.keyword,
    -.token.builtin {
    -  color: var(--base0E);
    -}
    -
    -.token.string,
    -.token.char,
    -.token.attr-value,
    -.token.regex,
    -.token.variable {
    -  color: var(--base0C);
    -}
    -
    -.token.operator,
    -.token.entity,
    -.token.url {
    -  color: var(--base05);
    -}
    -
    -.token.important,
    -.token.bold {
    -  font-weight: bold;
    -}
    -.token.italic {
    -  font-style: italic;
    -}
    -
    -.token.entity {
    -  cursor: help;
    -}
    -
    -.token.inserted {
    -  color: green;
    -}
    -
    -.language-bash,
    -.language-sh {
    -  .token-line::before {
    -    color: var(--base03);
    -    content: "$ ";
    -    user-select: none;
    -  }
    -}
    -
    -.language-powershell::before {
    -  color: var(--base0C);
    -  content: "PM> ";
    -  user-select: none;
    -}
    \ No newline at end of file
    diff --git a/packages/docs/.vuepress/src/client/styles/_scrolling.scss b/packages/docs/.vuepress/src/client/styles/_scrolling.scss
    deleted file mode 100644
    index 20179600..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_scrolling.scss
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -// When navigating with the keyboard, prevent focus from landing behind the sticky header
    -
    -main {
    -  a,
    -  button,
    -  h2,
    -  h3,
    -  h4,
    -  [tabindex="0"] {
    -    scroll-margin-top: 80px;
    -    scroll-margin-bottom: 100px;
    -  }
    -}
    diff --git a/packages/docs/.vuepress/src/client/styles/_search.scss b/packages/docs/.vuepress/src/client/styles/_search.scss
    deleted file mode 100644
    index c487e640..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_search.scss
    +++ /dev/null
    @@ -1,152 +0,0 @@
    -// stylelint-disable selector-class-pattern
    -
    -:root {
    -  --docsearch-primary-color: var(--cui-primary);
    -  --docsearch-logo-color: var(--cui-primary);
    -}
    -
    -@include color-mode(dark, true) {
    -  // From here, the values are copied from https://cdn.jsdelivr.net/npm/@docsearch/css@3
    -  // in html[data-theme="dark"] selector
    -  // and are slightly modified for formatting purpose
    -  --docsearch-text-color: #f5f6f7;
    -  --docsearch-container-background: rgba(9, 10, 17, .8);
    -  --docsearch-modal-background: #15172a;
    -  --docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;
    -  --docsearch-searchbox-background: #090a11;
    -  --docsearch-searchbox-focus-background: #000;
    -  --docsearch-hit-color: #bec3c9;
    -  --docsearch-hit-shadow: none;
    -  --docsearch-hit-background: #090a11;
    -  --docsearch-key-gradient: linear-gradient(-26.5deg, #565872, #31355b);
    -  --docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgba(3, 4, 9, .3);
    -  --docsearch-footer-background: #1e2136;
    -  --docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, .5), 0 -4px 8px 0 rgba(0, 0, 0, .2);
    -  --docsearch-muted-color: #7f8497;
    -}
    -
    -.DocSearch-Container {
    -  --docsearch-muted-color: var(--cui-secondary-color);
    -  --docsearch-hit-shadow: none;
    -
    -  z-index: 2000; // Make sure to be over all components showcased in the documentation
    -  cursor: auto; // Needed because of [role="button"] in Algolia search modal. Remove once https://github.com/algolia/docsearch/issues/1370 is tackled.
    -
    -  @include media-breakpoint-up(lg) {
    -    padding-top: 4rem;
    -  }
    -}
    -
    -.DocSearch-Button {
    -  --docsearch-searchbox-background: #{rgba($black, .1)};
    -  // --docsearch-searchbox-color: #{$white};
    -  --docsearch-searchbox-focus-background: #{rgba($black, .25)};
    -  // --docsearch-searchbox-shadow: #{0 0 0 .25rem rgba($bd-accent, .4)};
    -  // --docsearch-text-color: #{$white};
    -  // --docsearch-muted-color: #{rgba($white, .65)};
    -
    -  min-width: 200px;
    -  min-height: 38px;
    -  font-family: $input-font-family;
    -  font-weight: $input-font-weight;
    -  line-height: $input-line-height;
    -  @include font-size($input-font-size);
    -  color: $input-color;
    -  background-color: $input-bg;
    -  background-clip: padding-box;
    -  border: $input-border-width solid $input-border-color;
    -
    -  // Note: This has no effect on `s in CSS.
    -  @include border-radius($btn-border-radius);
    -
    -  @include box-shadow($input-box-shadow);
    -  @include transition($input-transition);
    -
    -  &:focus {
    -    color: $input-focus-color;
    -    background-color: $input-focus-bg;
    -    border-color: $input-focus-border-color;
    -    outline: 0;
    -    @if $enable-shadows {
    -      @include box-shadow($input-box-shadow, $input-focus-box-shadow);
    -    } @else {
    -      // Avoid using mixin so we can pass custom focus shadow properly
    -      box-shadow: $input-focus-box-shadow;
    -    }
    -  }
    -
    -  &:hover:not(:disabled):not([readonly])::file-selector-button {
    -    background-color: $form-file-button-hover-bg;
    -  }
    -
    -  .DocSearch-Search-Icon {
    -    opacity: .65;
    -  }
    -}
    -
    -
    -.DocSearch-Button-Keys {
    -  min-width: 0;
    -  padding: 0 .25rem;
    -  background: rgba($black, .125);
    -  @include border-radius(.25rem);
    -}
    -
    -.DocSearch-Button-Key {
    -  top: 0;
    -  width: auto;
    -  height: 1.5rem;
    -  padding: 0 .125rem;
    -  margin-right: 0;
    -  font-size: .875rem;
    -  background: none;
    -  box-shadow: none;
    -}
    -
    -.DocSearch-Commands-Key {
    -  padding-left: 1px;
    -  font-size: .875rem;
    -  background-color: rgba($black, .1);
    -  background-image: none;
    -  box-shadow: none;
    -}
    -
    -.DocSearch-Form {
    -  @include border-radius(var(--cui-border-radius));
    -}
    -
    -.DocSearch-Hits {
    -  mark {
    -    padding: 0;
    -  }
    -}
    -
    -.DocSearch-Hit {
    -  padding-bottom: 0;
    -  @include border-radius(0);
    -
    -  a {
    -    @include border-radius(0);
    -    border: solid var(--cui-border-color);
    -    border-width: 0 1px 1px;
    -  }
    -
    -  &:first-child a {
    -    @include border-top-radius(var(--cui-border-radius));
    -    border-top-width: 1px;
    -  }
    -  &:last-child a {
    -    @include border-bottom-radius(var(--cui-border-radius));
    -  }
    -}
    -
    -.DocSearch-Hit-icon {
    -  display: flex;
    -  align-items: center;
    -}
    -
    -// Fix --docsearch-logo-color that doesn't do anything
    -.DocSearch-Logo svg .cls-1,
    -.DocSearch-Logo svg .cls-2 {
    -  fill: var(--docsearch-logo-color);
    -}
    diff --git a/packages/docs/.vuepress/src/client/styles/_sidebar.scss b/packages/docs/.vuepress/src/client/styles/_sidebar.scss
    deleted file mode 100755
    index 3e2482fa..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_sidebar.scss
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -.sidebar.docs-sidebar {
    -  --cui-sidebar-bg: var(--cui-tertiary-bg);
    -  --cui-sidebar-brand-bg: transparent;
    -  --cui-sidebar-brand-color: var(--cui-body-color);
    -
    -  .sidebar-nav {
    -    --cui-sidebar-nav-link-color: var(--cui-body-color);
    -    --cui-sidebar-nav-link-active-bg: transparent;
    -    --cui-sidebar-nav-link-active-color: var(--cui-primary);
    -    --cui-sidebar-nav-link-hover-bg: transparent;
    -    --cui-sidebar-nav-link-hover-color: var(--cui-primary);
    -    --cui-sidebar-nav-link-icon-margin: 1rem;
    -    --cui-sidebar-nav-group-bg: transparent;
    -    --cui-sidebar-nav-group-toggle-show-color: var(--cui-primary);
    -
    -    .compact .nav-link {
    -      --cui-sidebar-nav-link-padding-y: .375rem;
    -    }
    -
    -    .nav-group-items {
    -      --cui-sidebar-nav-link-color: var(--cui-body-color);
    -    }
    -  }
    -}
    -
    -@if $enable-dark-mode {
    -  @include color-mode(dark) {
    -    .docs-sidebar {
    -      --cui-sidebar-bg: var(--cui-body-bg);
    -    }
    -  }
    -}
    diff --git a/packages/docs/.vuepress/src/client/styles/_table-api.scss b/packages/docs/.vuepress/src/client/styles/_table-api.scss
    deleted file mode 100644
    index 43d33928..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_table-api.scss
    +++ /dev/null
    @@ -1,35 +0,0 @@
    -.table-api {
    -  --cui-table-striped-bg: #{rgba(#f0f4f7, .25)} !important;
    -  tr td {
    -    padding-top: 1rem;
    -    padding-bottom: 1rem;
    -  }
    -  td:first-child,
    -  th:first-child {
    -    width: 15%;
    -    padding-left: 1rem;
    -  }
    -  td:first-child {
    -    white-space: nowrap;
    -  }
    -  td:nth-child(2n) {
    -    width: 55%;
    -  }
    -  td:nth-child(3n) {
    -    width: 10%;
    -  }
    -  td:nth-child(4n) {
    -    width: 10%;
    -  }
    -  td:nth-child(5n) {
    -    width: 10%;
    -  }
    -
    -  & + h3 {
    -    margin-top: 2rem;
    -  }
    -}
    -
    -.markdown + h3 {
    -  margin-top: 3rem;
    -}
    \ No newline at end of file
    diff --git a/packages/docs/.vuepress/src/client/styles/_toc.scss b/packages/docs/.vuepress/src/client/styles/_toc.scss
    deleted file mode 100644
    index 8f6dc04d..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_toc.scss
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -// stylelint-disable selector-max-type
    -
    -.docs-toc {
    -  @include media-breakpoint-up(lg) {
    -    position: sticky;
    -    top: 5rem;
    -    right: 0;
    -    z-index: 2;
    -    height: subtract(100vh, 7rem);
    -    overflow-y: auto;
    -  }
    -
    -  nav {
    -    @include font-size(.875rem);
    -
    -    ul {
    -      padding-left: 0;
    -      list-style: none;
    -
    -      ul {
    -        padding-left: 1rem;
    -        margin-top: .25rem;
    -      }
    -    }
    -
    -    li {
    -      margin-bottom: .25rem;
    -    }
    -
    -    a {
    -      color: inherit;
    -
    -      &:not(:hover) {
    -        text-decoration: none;
    -      }
    -
    -      code {
    -        font: inherit;
    -      }
    -    }
    -  }
    -}
    -
    -.docs-toc-toggle {
    -  display: flex;
    -  align-items: center;
    -
    -  @include media-breakpoint-down(sm) {
    -    justify-content: space-between;
    -    width: 100%;
    -  }
    -
    -  @include media-breakpoint-down(md) {
    -    color: var(--cui-body-color);
    -    border: 1px solid var(--cui-border-color);
    -    @include border-radius(var(--cui-border-radius));
    -
    -    &:hover,
    -    &:focus,
    -    &:active,
    -    &[aria-expanded="true"] {
    -      color: var(--cui-primary);
    -      background-color: var(--cui-body-bg);
    -      border-color: var(--cui-primary);
    -    }
    -
    -    &:focus,
    -    &[aria-expanded="true"] {
    -      box-shadow: 0 0 0 3px rgba(var(--cui-primary-rgb), .25);
    -    }
    -  }
    -}
    -
    -.docs-toc-collapse {
    -  @include media-breakpoint-down(md) {
    -    nav {
    -      padding: 1.25rem 1.25rem 1.25rem 1rem;
    -      background-color: var(--cui-tertiary-bg);
    -      border: 1px solid var(--cui-border-color);
    -      @include border-radius(var(--cui-border-radius));
    -    }
    -  }
    -
    -  @include media-breakpoint-up(md) {
    -    display: block !important; // stylelint-disable-line declaration-no-important
    -  }
    -}
    diff --git a/packages/docs/.vuepress/src/client/styles/_variables.scss b/packages/docs/.vuepress/src/client/styles/_variables.scss
    deleted file mode 100755
    index b53b7754..00000000
    --- a/packages/docs/.vuepress/src/client/styles/_variables.scss
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -// stylelint-disable scss/dollar-variable-default
    -
    -// Local docs variables
    -$cd-purple:        #4c0bce;
    -$cd-violet:        lighten(saturate($cd-purple, 5%), 15%); // stylelint-disable-line function-disallowed-list
    -$cd-accent:       #ffe484;
    -
    -$cd-gutter-x: 3rem;
    -$cd-callout-variants: info, warning, danger !default;
    -
    -:root {
    -  --cd-purple: #{$cd-purple};
    -  --cd-violet: #{$cd-violet};
    -  --cd-accent: #{$cd-accent};
    -  --cd-violet-rgb: #{to-rgb($cd-violet)};
    -  --cd-accent-rgb: #{to-rgb($cd-accent)};
    -  --cd-pink-rgb: #{to-rgb($pink-500)};
    -  --cd-teal-rgb: #{to-rgb($teal-500)};
    -  --cd-violet-bg: var(--cd-violet);
    -  --cd-toc-color: var(--cd-violet);
    -  --cd-sidebar-link-bg: rgba(var(--cd-violet-rgb), .1);
    -  --cd-callout-link: #{to-rgb($blue-600)};
    -  --cd-callout-code-color: #{$pink-600};
    -  --cd-pre-bg: var(--cui-tertiary-bg);
    -}
    diff --git a/packages/docs/.vuepress/src/client/styles/custom-container.scss b/packages/docs/.vuepress/src/client/styles/custom-container.scss
    deleted file mode 100755
    index 1985517d..00000000
    --- a/packages/docs/.vuepress/src/client/styles/custom-container.scss
    +++ /dev/null
    @@ -1,83 +0,0 @@
    -.custom-container {
    -  .custom-container-title {
    -    font-weight: 600;
    -    margin-bottom: -0.4rem;
    -  }
    -
    -  &.tip,
    -  &.warning,
    -  &.danger {
    -    padding: 0.1rem 1.5rem;
    -    border-left-width: 0.5rem;
    -    border-left-style: solid;
    -    margin: 1rem 0;
    -  }
    -
    -  &.tip {
    -    border-color: var(--c-tip);
    -    background-color: var(--c-tip-bg);
    -    color: var(--c-tip-text);
    -
    -    .custom-container-title {
    -      color: var(--c-tip-title);
    -    }
    -
    -    a {
    -      color: var(--c-tip-text-accent);
    -    }
    -  }
    -
    -  &.warning {
    -    border-color: var(--c-warning);
    -    background-color: var(--c-warning-bg);
    -    color: var(--c-warning-text);
    -
    -    .custom-container-title {
    -      color: var(--c-warning-title);
    -    }
    -
    -    a {
    -      color: var(--c-warning-text-accent);
    -    }
    -  }
    -
    -  &.danger {
    -    border-color: var(--c-danger);
    -    background-color: var(--c-danger-bg);
    -    color: var(--c-danger-text);
    -
    -    .custom-container-title {
    -      color: var(--c-danger-title);
    -    }
    -
    -    a {
    -      color: var(--c-danger-text-accent);
    -    }
    -  }
    -
    -  &.details {
    -    display: block;
    -    position: relative;
    -    border-radius: 2px;
    -    margin: 1.6em 0;
    -    padding: 1.6em;
    -    background-color: var(--c-details-bg);
    -
    -    h4 {
    -      margin-top: 0;
    -    }
    -
    -    figure,
    -    p {
    -      &:last-child {
    -        margin-bottom: 0;
    -        padding-bottom: 0;
    -      }
    -    }
    -
    -    summary {
    -      outline: none;
    -      cursor: pointer;
    -    }
    -  }
    -}
    \ No newline at end of file
    diff --git a/packages/docs/.vuepress/src/client/styles/index.scss b/packages/docs/.vuepress/src/client/styles/index.scss
    deleted file mode 100755
    index ea3615e4..00000000
    --- a/packages/docs/.vuepress/src/client/styles/index.scss
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -@import "https://github.com/@coreui/coreui/scss/coreui.scss";
    -@import "https://github.com/@docsearch/css/dist/style.css";
    -
    -@import "https://github.com/variables";
    -
    -@import "https://github.com/ads";
    -@import "https://github.com/anchor";
    -@import "https://github.com/callouts";
    -@import "https://github.com/component-examples";
    -@import "https://github.com/footer";
    -@import "https://github.com/layout";
    -@import "https://github.com/prism";
    -@import "https://github.com/scrolling";
    -@import "https://github.com/search";
    -@import "https://github.com/sidebar";
    -@import "https://github.com/table-api";
    -@import "https://github.com/toc";
    -@import "https://github.com/custom-container";
    -
    -.back-to-top {
    ---c-brand: #3eaf7c;
    ---c-brand-light: #4abf8a;
    ---back-to-top-color: var(--c-brand);
    ---back-to-top-color-hover: var(--c-brand-light);
    -}
    \ No newline at end of file
    diff --git a/packages/docs/.vuepress/src/node/defaultTheme.ts b/packages/docs/.vuepress/src/node/defaultTheme.ts
    deleted file mode 100755
    index 0fe8ca5f..00000000
    --- a/packages/docs/.vuepress/src/node/defaultTheme.ts
    +++ /dev/null
    @@ -1,43 +0,0 @@
    -import type { Page, Theme } from '@vuepress/core'
    -
    -import { themeDataPlugin } from '@vuepress/plugin-theme-data'
    -import { fs, getDirname, path } from '@vuepress/utils'
    -import type {
    -  DefaultThemeLocaleOptions,
    -  DefaultThemePageData,
    -  DefaultThemePluginsOptions,
    -} from '../shared'
    -import { assignDefaultLocaleOptions } from './utils'
    -
    -const __dirname = getDirname(import.meta.url)
    -
    -export interface DefaultThemeOptions extends DefaultThemeLocaleOptions {
    -  /**
    -   * To avoid confusion with the root `plugins` option,
    -   * we use `themePlugins`
    -   */
    -  themePlugins?: DefaultThemePluginsOptions
    -}
    -export const defaultTheme = ({
    -  themePlugins = {},
    -  ...localeOptions
    -}: DefaultThemeOptions = {}): Theme => {
    -  assignDefaultLocaleOptions(localeOptions)
    -
    -  return {
    -    name: '@vuepress/coreui-docs-theme',
    -
    -    templateBuild: path.resolve(__dirname, '../templates/build.html'),
    -
    -    clientConfigFile: path.resolve(__dirname, '../client/config.ts'),
    -
    -    extendsPage: (page: Page>) => {
    -      // save relative file path into page data to generate edit link
    -      page.data.filePathRelative = page.filePathRelative
    -      // save title into route meta to generate navbar and sidebar
    -      page.routeMeta.title = page.title
    -    },
    -
    -    plugins: [themeDataPlugin({ themeData: localeOptions })],
    -  }
    -}
    diff --git a/packages/docs/.vuepress/src/node/index.ts b/packages/docs/.vuepress/src/node/index.ts
    deleted file mode 100755
    index 1c089073..00000000
    --- a/packages/docs/.vuepress/src/node/index.ts
    +++ /dev/null
    @@ -1,7 +0,0 @@
    -import { defaultTheme } from './defaultTheme'
    -
    -export * from '../shared'
    -export * from './defaultTheme'
    -export * from './utils'
    -
    -export default defaultTheme
    diff --git a/packages/docs/.vuepress/src/node/utils/assignDefaultLocaleOptions.ts b/packages/docs/.vuepress/src/node/utils/assignDefaultLocaleOptions.ts
    deleted file mode 100755
    index 0268e061..00000000
    --- a/packages/docs/.vuepress/src/node/utils/assignDefaultLocaleOptions.ts
    +++ /dev/null
    @@ -1,69 +0,0 @@
    -import type {
    -  DefaultThemeLocaleOptions,
    -  DefaultThemeLocaleData,
    -} from '../../shared'
    -
    -const defaultLocaleOptions: DefaultThemeLocaleOptions = {
    -  // navbar
    -  navbar: [],
    -  logo: null,
    -  darkMode: true,
    -  repo: null,
    -  selectLanguageText: 'Languages',
    -  selectLanguageAriaLabel: 'Select language',
    -
    -  // sidebar
    -  sidebar: 'auto',
    -  sidebarDepth: 2,
    -
    -  // page meta
    -  editLink: true,
    -  editLinkText: 'Edit this page',
    -  lastUpdated: true,
    -  lastUpdatedText: 'Last Updated',
    -  contributors: true,
    -  contributorsText: 'Contributors',
    -
    -  // 404 page messages
    -  notFound: [
    -    `There's nothing here.`,
    -    `How did we get here?`,
    -    `That's a Four-Oh-Four.`,
    -    `Looks like we've got some broken links.`,
    -  ],
    -  backToHome: 'Take me home',
    -
    -  // a11y
    -  openInNewWindow: 'open in new window',
    -  toggleDarkMode: 'toggle dark mode',
    -}
    -
    -const defaultLocaleData: DefaultThemeLocaleData = {
    -  // navbar
    -  selectLanguageName: 'English',
    -}
    -
    -/**
    - * Assign default options to `themeConfig`
    - */
    -export const assignDefaultLocaleOptions = (
    -  localeOptions: DefaultThemeLocaleOptions
    -): void => {
    -  if (!localeOptions.locales) {
    -    localeOptions.locales = {}
    -  }
    -
    -  if (!localeOptions.locales['/']) {
    -    localeOptions.locales['/'] = {}
    -  }
    -
    -  Object.assign(localeOptions, {
    -    ...defaultLocaleOptions,
    -    ...localeOptions,
    -  })
    -
    -  Object.assign(localeOptions.locales['/'], {
    -    ...defaultLocaleData,
    -    ...localeOptions.locales['/'],
    -  })
    -}
    diff --git a/packages/docs/.vuepress/src/node/utils/index.ts b/packages/docs/.vuepress/src/node/utils/index.ts
    deleted file mode 100755
    index 8f378cef..00000000
    --- a/packages/docs/.vuepress/src/node/utils/index.ts
    +++ /dev/null
    @@ -1 +0,0 @@
    -export * from './assignDefaultLocaleOptions'
    diff --git a/packages/docs/.vuepress/src/shared/index.ts b/packages/docs/.vuepress/src/shared/index.ts
    deleted file mode 100755
    index 4a0c5b08..00000000
    --- a/packages/docs/.vuepress/src/shared/index.ts
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -export * from './nav'
    -export * from './options'
    -export * from './page'
    diff --git a/packages/docs/.vuepress/src/shared/nav.ts b/packages/docs/.vuepress/src/shared/nav.ts
    deleted file mode 100755
    index 153eabdc..00000000
    --- a/packages/docs/.vuepress/src/shared/nav.ts
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -/**
    - * Base nav item, displayed as text
    - */
    -
    -type Badge = {
    -  color: string,
    -  text: string
    -}
    -export interface NavItem {
    -  badge?: Badge
    -  disabled?: boolean
    -  icon?: string
    -  text: string
    -  ariaLabel?: string
    -}
    -
    -/**
    - * Base nav group, has nav items children
    - */
    -export interface NavGroup extends NavItem {
    -  children: T[]
    -}
    -
    -/**
    - * Props for ``
    - */
    -export interface NavLink extends NavItem {
    -  link: string
    -  rel?: string
    -  target?: string
    -  activeMatch?: string
    -}
    -
    -/**
    - * Navbar types
    - */
    -// user config
    -export type NavbarItem = NavLink
    -export type NavbarGroup = NavGroup
    -export type NavbarConfig = (NavbarItem | NavbarGroup | string)[]
    -// resolved
    -export type ResolvedNavbarItem = NavbarItem | NavGroup
    -
    -/**
    - * Sidebar types
    - */
    -// user config
    -export type SidebarItem = NavItem &
    -  Partial &
    -  Partial, 'children'>>
    -export type SidebarConfigArray = (SidebarItem | string)[]
    -export type SidebarConfigObject = Record
    -export type SidebarConfig = SidebarConfigArray | SidebarConfigObject
    -// resolved
    -export type ResolvedSidebarItem = NavItem &
    -  Partial &
    -  Partial, 'children'>>
    diff --git a/packages/docs/.vuepress/src/shared/options.ts b/packages/docs/.vuepress/src/shared/options.ts
    deleted file mode 100755
    index c8709f91..00000000
    --- a/packages/docs/.vuepress/src/shared/options.ts
    +++ /dev/null
    @@ -1,260 +0,0 @@
    -import type { LocaleData } from '@vuepress/shared'
    -import type { ThemeData } from '@vuepress/plugin-theme-data'
    -import type { NavbarConfig, SidebarConfig } from './nav'
    -
    -export interface DefaultThemePluginsOptions {
    -  /**
    -   * Enable @vuepress/plugin-active-header-links or not
    -   */
    -  activeHeaderLinks?: boolean
    -
    -  /**
    -   * Enable @vuepress/plugin-back-to-top or not
    -   */
    -  backToTop?: boolean
    -
    -  /**
    -   * Enable @vuepress/plugin-container or not
    -   */
    -  container?: {
    -    tip?: boolean
    -    warning?: boolean
    -    danger?: boolean
    -    details?: boolean
    -    codeGroup?: boolean
    -    codeGroupItem?: boolean
    -  }
    -
    -  /**
    -   * Enable @vuepress/plugin-git or not
    -   */
    -  git?: boolean
    -
    -  /**
    -   * Enable @vuepress/plugin-medium-zoom or not
    -   */
    -  mediumZoom?: boolean
    -
    -  /**
    -   * Enable @vuepress/plugin-nprogress or not
    -   */
    -  nprogress?: boolean
    -
    -  /**
    -   * Enable @vuepress/plugin-prismjs or not
    -   */
    -  prismjs?: boolean
    -}
    -
    -export type DefaultThemeLocaleOptions = DefaultThemeData
    -
    -export type DefaultThemeData = ThemeData
    -
    -export interface DefaultThemeLocaleData extends LocaleData {
    -  /**
    -   * Home path of current locale
    -   *
    -   * Used as the link of back-to-home and navbar logo
    -   */
    -  home?: string
    -
    -  /**
    -   * Navbar config
    -   *
    -   * Set to `false` to disable navbar in current locale
    -   */
    -  navbar?: false | NavbarConfig
    -
    -  /**
    -   * Navbar logo config
    -   *
    -   * Logo to display in navbar
    -   */
    -  logo?: null | string
    -
    -  /**
    -   * Navbar dark mode button config
    -   *
    -   * Enable dark mode switching and display a button in navbar or not
    -   */
    -  darkMode?: boolean
    -
    -  /**
    -   * Navbar repository config
    -   *
    -   * Used for the repository link of navbar
    -   */
    -  repo?: null | string
    -
    -  /**
    -   * Navbar repository config
    -   *
    -   * Used for the repository text of navbar
    -   */
    -  repoLabel?: string
    -
    -  /**
    -   * Navbar language selection config
    -   *
    -   * Text of the language selection dropdown
    -   */
    -  selectLanguageText?: string
    -
    -  /**
    -   * Navbar language selection config
    -   *
    -   * Aria label of of the language selection dropdown
    -   */
    -  selectLanguageAriaLabel?: string
    -
    -  /**
    -   * Navbar language selection config
    -   *
    -   * Language name of current locale
    -   *
    -   * Displayed inside the language selection dropdown
    -   */
    -  selectLanguageName?: string
    -
    -  /**
    -   * Sidebar config
    -   *
    -   * Set to `false` to disable sidebar in current locale
    -   */
    -  sidebar?: 'auto' | false | SidebarConfig
    -
    -  /**
    -   * Sidebar depth
    -   *
    -   * - Set to `0` to disable all levels
    -   * - Set to `1` to include `

    ` - * - Set to `2` to include `

    ` and `

    ` - * - ... - * - * The max value depends on which headers you have extracted - * via `markdown.extractHeaders.level`. - * - * The default value of `markdown.extractHeaders.level` is `[2, 3]`, - * so the default max value of `sidebarDepth` is `2` - */ - sidebarDepth?: number - - /** - * Page meta - edit link config - * - * Whether to show "Edit this page" or not - */ - editLink?: boolean - - /** - * Page meta - edit link config - * - * The text to replace the default "Edit this page" - */ - editLinkText?: string - - /** - * Page meta - edit link config - * - * Pattern of edit link - * - * @example ':repo/edit/:branch/:path' - */ - editLinkPattern?: string - - /** - * Page meta - edit link config - * - * Use `repo` config by default - * - * Set this config if your docs is placed in a different repo - */ - docsRepo?: string - - /** - * Page meta - edit link config - * - * Set this config if the branch of your docs is not 'main' - */ - docsBranch?: string - - /** - * Page meta - edit link config - * - * Set this config if your docs is placed in sub dir of your `docsRepo` - */ - docsDir?: string - - /** - * Page meta - last updated config - * - * Whether to show "Last Updated" or not - */ - lastUpdated?: boolean - - /** - * Page meta - last updated config - * - * The text to replace the default "Last Updated" - */ - lastUpdatedText?: string - - /** - * Page meta - contributors config - * - * Whether to show "Contributors" or not - */ - contributors?: boolean - - /** - * Page meta - contributors config - * - * The text to replace the default "Contributors" - */ - contributorsText?: string - - /** - * Custom block config - * - * Default title of TIP custom block - */ - tip?: string - - /** - * Custom block config - * - * Default title of WARNING custom block - */ - warning?: string - - /** - * Custom block config - * - * Default title of DANGER custom block - */ - danger?: string - - /** - * 404 page config - * - * Not Found messages for 404 page - */ - notFound?: string[] - - /** - * 404 page config - * - * Text of back-to-home link in 404 page - */ - backToHome?: string - - /** - * A11y text for `` - */ - openInNewWindow?: string - - /** - * A11y text for dark mode toggle button - */ - toggleDarkMode?: string -} diff --git a/packages/docs/.vuepress/src/shared/page.ts b/packages/docs/.vuepress/src/shared/page.ts deleted file mode 100755 index 40007b84..00000000 --- a/packages/docs/.vuepress/src/shared/page.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { GitPluginPageData } from '@vuepress/plugin-git' -import type { NavLink, SidebarConfig } from './nav' - -export interface DefaultThemePageData extends GitPluginPageData { - filePathRelative: string -} - -export interface DefaultThemePageFrontmatter { - home?: boolean - navbar?: boolean - pageClass?: string - name?: string - preview_component?: boolean - pro_component?: boolean - other_frameworks?: string -} - -export interface DefaultThemeNormalPageFrontmatter extends DefaultThemePageFrontmatter { - home?: false - editLink?: boolean - lastUpdated?: boolean - contributors?: boolean - sidebar?: 'auto' | false | SidebarConfig - sidebarDepth?: number - prev?: string | NavLink - next?: string | NavLink -} diff --git a/packages/docs/.vuepress/src/templates/build.html b/packages/docs/.vuepress/src/templates/build.html deleted file mode 100644 index 8198c3ac..00000000 --- a/packages/docs/.vuepress/src/templates/build.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - -
    - - - diff --git a/packages/docs/api/CChart.api.md b/packages/docs/api/CChart.api.md deleted file mode 100644 index e997de50..00000000 --- a/packages/docs/api/CChart.api.md +++ /dev/null @@ -1,30 +0,0 @@ -### CChart - -```jsx -import { CChart } from '@coreui/vue-chartjs' -// or -import CChart from '@coreui/vue-chartjs/src/CChart' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------ | ------- | -| **custom-tooltips** | Enables custom html based tooltips instead of standard tooltips.
    `@default` true | boolean | - | true | -| **data** | The data object that is passed into the Chart.js chart (more info). | ChartData \| ((canvas: HTMLCanvasElement) => ChartData) | - | - | -| **height** | Height attribute applied to the rendered canvas.
    `@default` 150 | number | - | 150 | -| **id** | ID attribute applied to the rendered canvas. | string | - | - | -| **options** | The options object that is passed into the Chart.js chartRef.value.

    {@link https://www.chartjs.org/docs/latest/general/options.html More Info} | ChartOptions | - | - | -| **plugins** | The plugins array that is passed into the Chart.js chart (more info)

    {@link https://www.chartjs.org/docs/latest/developers/plugins.html More Info} | Plugin[] | - | - | -| **redraw** | If true, will tear down and redraw chart on all updates. | boolean | - | - | -| **type** | Chart.js chart type.
    `@type` 'line' \| 'bar' \| 'radar' \| 'doughnut' \| 'polarArea' \| 'bubble' \| 'pie' \| 'scatter' | ChartType | - | 'bar' | -| **width** | Width attribute applied to the rendered canvas.
    `@default` 300 | number | - | 300 | -| **wrapper** | Put the chart into the wrapper div element.
    `@default` true | boolean | - | true | - -#### Events - -| Event name | Description | Properties | -| ------------------------- | ------------------------------------------------------------------------------------------- | ---------- | -| **get-dataset-at-event** | Proxy for Chart.js getDatasetAtEvent. Calls with dataset and triggering event. | -| **get-element-at-event** | Proxy for Chart.js getElementAtEvent. Calls with single element array and triggering event. | -| **get-elements-at-event** | Proxy for Chart.js getElementsAtEvent. Calls with element array and triggering event. | diff --git a/packages/docs/api/accordion/CAccordion.api.md b/packages/docs/api/accordion/CAccordion.api.md deleted file mode 100644 index 4c30183a..00000000 --- a/packages/docs/api/accordion/CAccordion.api.md +++ /dev/null @@ -1,15 +0,0 @@ -### CAccordion - -```jsx -import { CAccordion } from '@coreui/vue' -// or -import CAccordion from '@coreui/vue/src/components/accordion/CAccordion' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | ------- | -| **active-item-key** | The active item key. | number\|string | - | - | -| **always-open** | Make accordion items stay open when another item is opened | boolean | - | - | -| **flush** | Removes the default background-color, some borders, and some rounded corners to render accordions edge-to-edge with their parent container. | boolean | - | - | diff --git a/packages/docs/api/accordion/CAccordionBody.api.md b/packages/docs/api/accordion/CAccordionBody.api.md deleted file mode 100644 index a7ff4651..00000000 --- a/packages/docs/api/accordion/CAccordionBody.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CAccordionBody - -```jsx -import { CAccordionBody } from '@coreui/vue' -// or -import CAccordionBody from '@coreui/vue/src/components/accordion/CAccordionBody' -``` diff --git a/packages/docs/api/accordion/CAccordionButton.api.md b/packages/docs/api/accordion/CAccordionButton.api.md deleted file mode 100644 index 873e8a2a..00000000 --- a/packages/docs/api/accordion/CAccordionButton.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CAccordionButton - -```jsx -import { CAccordionButton } from '@coreui/vue' -// or -import CAccordionButton from '@coreui/vue/src/components/accordion/CAccordionButton' -``` diff --git a/packages/docs/api/accordion/CAccordionHeader.api.md b/packages/docs/api/accordion/CAccordionHeader.api.md deleted file mode 100644 index 844ac370..00000000 --- a/packages/docs/api/accordion/CAccordionHeader.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CAccordionHeader - -```jsx -import { CAccordionHeader } from '@coreui/vue' -// or -import CAccordionHeader from '@coreui/vue/src/components/accordion/CAccordionHeader' -``` diff --git a/packages/docs/api/accordion/CAccordionItem.api.md b/packages/docs/api/accordion/CAccordionItem.api.md deleted file mode 100644 index 753acd83..00000000 --- a/packages/docs/api/accordion/CAccordionItem.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CAccordionItem - -```jsx -import { CAccordionItem } from '@coreui/vue' -// or -import CAccordionItem from '@coreui/vue/src/components/accordion/CAccordionItem' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------ | ------------- | -------------- | ------ | ------- | -| **item-key** | The item key. | number\|string | - | - | diff --git a/packages/docs/api/alert/CAlert.api.md b/packages/docs/api/alert/CAlert.api.md deleted file mode 100644 index 140f73d1..00000000 --- a/packages/docs/api/alert/CAlert.api.md +++ /dev/null @@ -1,22 +0,0 @@ -### CAlert - -```jsx -import { CAlert } from '@coreui/vue' -// or -import CAlert from '@coreui/vue/src/components/alert/CAlert' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------------- | ------------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **dismissible** | Optionally add a close button to alert and allow it to self dismisss. | boolean | - | - | -| **variant** | Set the alert variant to a solid. | string | `'solid'` | - | -| **visible** | Toggle the visibility of alert component. | boolean | - | true | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **close** | Callback fired when the component requests to be closed. | diff --git a/packages/docs/api/alert/CAlertHeading.api.md b/packages/docs/api/alert/CAlertHeading.api.md deleted file mode 100644 index da1acd2d..00000000 --- a/packages/docs/api/alert/CAlertHeading.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CAlertHeading - -```jsx -import { CAlertHeading } from '@coreui/vue' -// or -import CAlertHeading from '@coreui/vue/src/components/alert/CAlertHeading' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | -| **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h4' | diff --git a/packages/docs/api/alert/CAlertLink.api.md b/packages/docs/api/alert/CAlertLink.api.md deleted file mode 100644 index c6fcfae4..00000000 --- a/packages/docs/api/alert/CAlertLink.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CAlertLink - -```jsx -import { CAlertLink } from '@coreui/vue' -// or -import CAlertLink from '@coreui/vue/src/components/alert/CAlertLink' -``` diff --git a/packages/docs/api/avatar/CAvatar.api.md b/packages/docs/api/avatar/CAvatar.api.md deleted file mode 100644 index eb80cc30..00000000 --- a/packages/docs/api/avatar/CAvatar.api.md +++ /dev/null @@ -1,18 +0,0 @@ -### CAvatar - -```jsx -import { CAvatar } from '@coreui/vue' -// or -import CAvatar from '@coreui/vue/src/components/avatar/CAvatar' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| -------------- | -------------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **shape** | Select the shape of the component. | string | `'rounded'`, `'rounded-top'`, `'rounded-end'`, `'rounded-bottom'`, `'rounded-start'`, `'rounded-circle'`, `'rounded-pill'`, `'rounded-0'`, `'rounded-1'`, `'rounded-2'`, `'rounded-3'` | - | -| **size** | Size the component small, large, or extra large. | string | `'sm'`, `'md'`, `'lg'`, `'xl'` | - | -| **src** | The src attribute for the img element. | string | - | - | -| **status** | Sets the color context of the status indicator to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **text-color** | Sets the text color of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `'primary-emphasis'`, `'secondary-emphasis'`, `'success-emphasis'`, `'danger-emphasis'`, `'warning-emphasis'`, `'info-emphasis'`, `'light-emphasis'`, `'body'`, `'body-emphasis'`, `'body-secondary'`, `'body-tertiary'`, `'black'`, `'black-50'`, `'white'`, `'white-50'` | - | diff --git a/packages/docs/api/backdrop/CBackdrop.api.md b/packages/docs/api/backdrop/CBackdrop.api.md deleted file mode 100644 index d5e4dfaf..00000000 --- a/packages/docs/api/backdrop/CBackdrop.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CBackdrop - -```jsx -import { CBackdrop } from '@coreui/vue' -// or -import CBackdrop from '@coreui/vue/src/components/backdrop/CBackdrop' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ----------------------------------------- | ------- | ------ | ------- | -| **visible** | Toggle the visibility of modal component. | boolean | - | false | diff --git a/packages/docs/api/badge/CBadge.api.md b/packages/docs/api/badge/CBadge.api.md deleted file mode 100644 index 4d763c88..00000000 --- a/packages/docs/api/badge/CBadge.api.md +++ /dev/null @@ -1,19 +0,0 @@ -### CBadge - -```jsx -import { CBadge } from '@coreui/vue' -// or -import CBadge from '@coreui/vue/src/components/badge/CBadge' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'span' | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **position** | Position badge in one of the corners of a link or button. | string | `'top-start'`, `'top-end'`, `'bottom-end'`, `'bottom-start'` | - | -| **shape** | Select the shape of the component. | string | `'rounded'`, `'rounded-top'`, `'rounded-end'`, `'rounded-bottom'`, `'rounded-start'`, `'rounded-circle'`, `'rounded-pill'`, `'rounded-0'`, `'rounded-1'`, `'rounded-2'`, `'rounded-3'` | - | -| **size** | Size the component small. | string | `'sm'` | - | -| **text-bg-color**
    5.0.0+
    | Sets the component's color scheme to one of CoreUI's themed colors, ensuring the text color contrast adheres to the WCAG 4.5:1 contrast ratio standard for accessibility. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **text-color** | Sets the text color of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `'primary-emphasis'`, `'secondary-emphasis'`, `'success-emphasis'`, `'danger-emphasis'`, `'warning-emphasis'`, `'info-emphasis'`, `'light-emphasis'`, `'body'`, `'body-emphasis'`, `'body-secondary'`, `'body-tertiary'`, `'black'`, `'black-50'`, `'white'`, `'white-50'` | - | diff --git a/packages/docs/api/breadcrumb/CBreadcrumb.api.md b/packages/docs/api/breadcrumb/CBreadcrumb.api.md deleted file mode 100644 index 5aeae206..00000000 --- a/packages/docs/api/breadcrumb/CBreadcrumb.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CBreadcrumb - -```jsx -import { CBreadcrumb } from '@coreui/vue' -// or -import CBreadcrumb from '@coreui/vue/src/components/breadcrumb/CBreadcrumb' -``` diff --git a/packages/docs/api/breadcrumb/CBreadcrumbItem.api.md b/packages/docs/api/breadcrumb/CBreadcrumbItem.api.md deleted file mode 100644 index 792d17d6..00000000 --- a/packages/docs/api/breadcrumb/CBreadcrumbItem.api.md +++ /dev/null @@ -1,14 +0,0 @@ -### CBreadcrumbItem - -```jsx -import { CBreadcrumbItem } from '@coreui/vue' -// or -import CBreadcrumbItem from '@coreui/vue/src/components/breadcrumb/CBreadcrumbItem' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------- | -------------------------------------------------- | ------- | ------ | ------- | -| **active** | Toggle the active state for the component. | boolean | - | - | -| **href** | The `href` attribute for the inner link component. | string | - | - | diff --git a/packages/docs/api/button-group/CButtonGroup.api.md b/packages/docs/api/button-group/CButtonGroup.api.md deleted file mode 100644 index cef08210..00000000 --- a/packages/docs/api/button-group/CButtonGroup.api.md +++ /dev/null @@ -1,14 +0,0 @@ -### CButtonGroup - -```jsx -import { CButtonGroup } from '@coreui/vue' -// or -import CButtonGroup from '@coreui/vue/src/components/button-group/CButtonGroup' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------- | ------- | -------------- | ------- | -| **size** | Size the component small or large. | string | `'sm'`, `'lg'` | - | -| **vertical** | Create a set of buttons that appear vertically stacked rather than horizontally. Split button dropdowns are not supported here. | boolean | - | - | diff --git a/packages/docs/api/button-group/CButtonToolbar.api.md b/packages/docs/api/button-group/CButtonToolbar.api.md deleted file mode 100644 index f5ce68f5..00000000 --- a/packages/docs/api/button-group/CButtonToolbar.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CButtonToolbar - -```jsx -import { CButtonToolbar } from '@coreui/vue' -// or -import CButtonToolbar from '@coreui/vue/src/components/button-group/CButtonToolbar' -``` diff --git a/packages/docs/api/button/CButton.api.md b/packages/docs/api/button/CButton.api.md deleted file mode 100644 index 47adf340..00000000 --- a/packages/docs/api/button/CButton.api.md +++ /dev/null @@ -1,27 +0,0 @@ -### CButton - -```jsx -import { CButton } from '@coreui/vue' -// or -import CButton from '@coreui/vue/src/components/button/CButton' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| **active** | Toggle the active state for the component. | boolean | - | - | -| **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'button' | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **disabled** | Toggle the disabled state for the component. | boolean | - | - | -| **href** | The href attribute specifies the URL of the page the link goes to. | string | - | - | -| **shape** | Select the shape of the component. | string | `'rounded'`, `'rounded-top'`, `'rounded-end'`, `'rounded-bottom'`, `'rounded-start'`, `'rounded-circle'`, `'rounded-pill'`, `'rounded-0'`, `'rounded-1'`, `'rounded-2'`, `'rounded-3'` | - | -| **size** | Size the component small or large. | string | `'sm'`, `'lg'` | - | -| **type** | Specifies the type of button. Always specify the type attribute for the `

    ` on the top of the table. | string | `'top' \| string` | - | -| **caption-top**
    4.5.0+
    | Set the text of the table caption and the caption on the top of the table. | string | - | - | -| **columns**
    4.5.0+
    | Prop for table columns configuration. If prop is not defined, table will display columns based on the first item keys, omitting keys that begins with underscore (e.g. '\_props')

    In columns prop each array item represents one column. Item might be specified in two ways:
    String: each item define column name equal to item value.
    Object: item is object with following keys available as column configuration:
    - key (required)(String) - define column name equal to item key.
    - label (String) - define visible label of column. If not defined, label will be generated automatically based on column name, by converting kebab-case and snake_case to individual words and capitalization of each word.
    - \_props (Object) - adds classes to all cels in column, ex. \_props: { scope: 'col', className: 'custom-class' },
    - \_style (Object) - adds styles to the column header (useful for defining widths) | (Column \| string)[] | - | - | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | -| **footer**
    4.5.0+
    | Array of objects or strings, where each element represents one cell in the table footer.

    Example items:
    ['FooterCell', 'FooterCell', 'FooterCell']
    or
    [{ label: 'FooterCell', _props: { color: 'success' }, ...] | (FooterItem \| string)[] | - | - | -| **hover** | Enable a hover state on table rows within a ``. | boolean | - | - | -| **items**
    4.5.0+
    | Array of objects, where each object represents one item - row in table. Additionally, you can add style classes to each row by passing them by '\_props' key and to single cell by '\_cellProps'.

    Example item:
    { name: 'John' , age: 12, \_props: { color: 'success' }, \_cellProps: { age: { className: 'fw-bold'}}} | Item[] | - | - | -| **small** | Make table more compact by cutting all cell `padding` in half. | boolean | - | - | -| **striped** | Add zebra-striping to any table row within the ``. | boolean | - | - | -| **striped-columns**
    4.4.0+
    | Add zebra-striping to any table column. | boolean | - | - | -| **table-foot-props**
    4.5.0+
    | Properties that will be passed to the table footer component.

    Properties to [CTableFoot](#ctablefoot) component. | object | - | - | -| **table-head-props**
    4.5.0+
    | Properties that will be passed to the table head component.

    Properties to [CTableHead](#ctablehead) component. | object | - | - | diff --git a/packages/docs/api/table/CTableBody.api.md b/packages/docs/api/table/CTableBody.api.md deleted file mode 100644 index 36042398..00000000 --- a/packages/docs/api/table/CTableBody.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CTableBody - -```jsx -import { CTableBody } from '@coreui/vue' -// or -import CTableBody from '@coreui/vue/src/components/table/CTableBody' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | ------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | diff --git a/packages/docs/api/table/CTableCaption.api.md b/packages/docs/api/table/CTableCaption.api.md deleted file mode 100644 index dea077aa..00000000 --- a/packages/docs/api/table/CTableCaption.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CTableCaption - -```jsx -import { CTableCaption } from '@coreui/vue' -// or -import CTableCaption from '@coreui/vue/src/components/table/CTableCaption' -``` diff --git a/packages/docs/api/table/CTableDataCell.api.md b/packages/docs/api/table/CTableDataCell.api.md deleted file mode 100644 index b1409a32..00000000 --- a/packages/docs/api/table/CTableDataCell.api.md +++ /dev/null @@ -1,15 +0,0 @@ -### CTableDataCell - -```jsx -import { CTableDataCell } from '@coreui/vue' -// or -import CTableDataCell from '@coreui/vue/src/components/table/CTableDataCell' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------- | ------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | ------- | -| **active** | Highlight a table row or cell. | boolean | - | - | -| **align** | Set the vertical aligment. | string | `'bottom'`, `'middle'`, `'top'` | - | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | diff --git a/packages/docs/api/table/CTableFoot.api.md b/packages/docs/api/table/CTableFoot.api.md deleted file mode 100644 index b961f96c..00000000 --- a/packages/docs/api/table/CTableFoot.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CTableFoot - -```jsx -import { CTableFoot } from '@coreui/vue' -// or -import CTableFoot from '@coreui/vue/src/components/table/CTableFoot' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | ------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | diff --git a/packages/docs/api/table/CTableHead.api.md b/packages/docs/api/table/CTableHead.api.md deleted file mode 100644 index 5f7facc3..00000000 --- a/packages/docs/api/table/CTableHead.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CTableHead - -```jsx -import { CTableHead } from '@coreui/vue' -// or -import CTableHead from '@coreui/vue/src/components/table/CTableHead' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | ------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | diff --git a/packages/docs/api/table/CTableHeaderCell.api.md b/packages/docs/api/table/CTableHeaderCell.api.md deleted file mode 100644 index c1217162..00000000 --- a/packages/docs/api/table/CTableHeaderCell.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CTableHeaderCell - -```jsx -import { CTableHeaderCell } from '@coreui/vue' -// or -import CTableHeaderCell from '@coreui/vue/src/components/table/CTableHeaderCell' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | ------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | diff --git a/packages/docs/api/table/CTableRow.api.md b/packages/docs/api/table/CTableRow.api.md deleted file mode 100644 index 19670a06..00000000 --- a/packages/docs/api/table/CTableRow.api.md +++ /dev/null @@ -1,15 +0,0 @@ -### CTableRow - -```jsx -import { CTableRow } from '@coreui/vue' -// or -import CTableRow from '@coreui/vue/src/components/table/CTableRow' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------- | ------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | ------- | -| **active** | Highlight a table row or cell.. | boolean | - | - | -| **align** | Set the vertical aligment. | string | `'bottom'`, `'middle'`, `'top'` | - | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | diff --git a/packages/docs/api/tabs/CTab.api.md b/packages/docs/api/tabs/CTab.api.md deleted file mode 100644 index 7cdff394..00000000 --- a/packages/docs/api/tabs/CTab.api.md +++ /dev/null @@ -1,14 +0,0 @@ -### CTab - -```jsx -import { CTab } from '@coreui/vue' -// or -import CTab from '@coreui/vue/src/components/tabs/CTab' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------------------------------------------------------- | -------------------------------------------- | -------------- | ------ | ------- | -| **disabled**
    5.4.0+
    | Toggle the disabled state for the component. | boolean | - | - | -| **item-key** | Item key. | number\|string | - | - | diff --git a/packages/docs/api/tabs/CTabContent.api.md b/packages/docs/api/tabs/CTabContent.api.md deleted file mode 100644 index 788d2118..00000000 --- a/packages/docs/api/tabs/CTabContent.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CTabContent - -```jsx -import { CTabContent } from '@coreui/vue' -// or -import CTabContent from '@coreui/vue/src/components/tabs/CTabContent' -``` diff --git a/packages/docs/api/tabs/CTabList.api.md b/packages/docs/api/tabs/CTabList.api.md deleted file mode 100644 index 68b9ca46..00000000 --- a/packages/docs/api/tabs/CTabList.api.md +++ /dev/null @@ -1,14 +0,0 @@ -### CTabList - -```jsx -import { CTabList } from '@coreui/vue' -// or -import CTabList from '@coreui/vue/src/components/tabs/CTabList' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ------------------------------------- | ------ | -------------------------------------------------------- | ------- | -| **layout** | Specify a layout type for component. | string | `'fill'`, `'justified'` | - | -| **variant** | Set the nav variant to tabs or pills. | string | `'pills'`, `'tabs'`, `'underline'`, `'underline-border'` | - | diff --git a/packages/docs/api/tabs/CTabPane.api.md b/packages/docs/api/tabs/CTabPane.api.md deleted file mode 100644 index 17eb0a59..00000000 --- a/packages/docs/api/tabs/CTabPane.api.md +++ /dev/null @@ -1,21 +0,0 @@ -### CTabPane - -```jsx -import { CTabPane } from '@coreui/vue' -// or -import CTabPane from '@coreui/vue/src/components/tabs/CTabPane' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------------------------------------------------------- | --------------------------------------- | ------- | ------ | ------- | -| **transition**
    5.1.0+
    | Enable fade in and fade out transition. | boolean | - | true | -| **visible** | Toggle the visibility of component. | boolean | - | false | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/packages/docs/api/tabs/CTabPanel.api.md b/packages/docs/api/tabs/CTabPanel.api.md deleted file mode 100644 index bf254378..00000000 --- a/packages/docs/api/tabs/CTabPanel.api.md +++ /dev/null @@ -1,22 +0,0 @@ -### CTabPanel - -```jsx -import { CTabPanel } from '@coreui/vue' -// or -import CTabPanel from '@coreui/vue/src/components/tabs/CTabPanel' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| -------------- | --------------------------------------- | -------------- | ------ | ------- | -| **item-key** | Item key. | number\|string | - | - | -| **transition** | Enable fade in and fade out transition. | boolean | - | true | -| **visible** | Toggle the visibility of component. | boolean | - | false | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/packages/docs/api/tabs/CTabs.api.md b/packages/docs/api/tabs/CTabs.api.md deleted file mode 100644 index 4fea4982..00000000 --- a/packages/docs/api/tabs/CTabs.api.md +++ /dev/null @@ -1,19 +0,0 @@ -### CTabs - -```jsx -import { CTabs } from '@coreui/vue' -// or -import CTabs from '@coreui/vue/src/components/tabs/CTabs' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------------- | -------------------- | -------------- | ------ | ------- | -| **active-item-key** | The active item key. | number\|string | - | - | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------- | ---------- | -| **change** | The callback is fired when the active tab changes. | diff --git a/packages/docs/api/toast/CToast.api.md b/packages/docs/api/toast/CToast.api.md deleted file mode 100644 index 6079903e..00000000 --- a/packages/docs/api/toast/CToast.api.md +++ /dev/null @@ -1,26 +0,0 @@ -### CToast - -```jsx -import { CToast } from '@coreui/vue' -// or -import CToast from '@coreui/vue/src/components/toast/CToast' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------------- | ------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | ------- | -| **autohide** | Auto hide the toast. | boolean | - | true | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | - | -| **delay** | Delay hiding the toast (ms). | number | - | 5000 | -| **dismissible** | Optionally add a close button to component and allow it to self dismiss. | boolean | - | true | -| **index** | index of the component. | number | - | - | -| **title** | Title node for your component. | string | - | - | -| **visible** | Toggle the visibility of component. | boolean | - | - | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **close** | Callback fired when the component requests to be closed. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/packages/docs/api/toast/CToastBody.api.md b/packages/docs/api/toast/CToastBody.api.md deleted file mode 100644 index b858d476..00000000 --- a/packages/docs/api/toast/CToastBody.api.md +++ /dev/null @@ -1,7 +0,0 @@ -### CToastBody - -```jsx -import { CToastBody } from '@coreui/vue' -// or -import CToastBody from '@coreui/vue/src/components/toast/CToastBody' -``` diff --git a/packages/docs/api/toast/CToastClose.api.md b/packages/docs/api/toast/CToastClose.api.md deleted file mode 100644 index c1b0f388..00000000 --- a/packages/docs/api/toast/CToastClose.api.md +++ /dev/null @@ -1,19 +0,0 @@ -### CToastClose - -```jsx -import { CToastClose } from '@coreui/vue' -// or -import CToastClose from '@coreui/vue/src/components/toast/CToastClose' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | -| **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | - | - -#### Events - -| Event name | Description | Properties | -| ---------- | ------------------------------------------------------- | ---------- | -| **close** | Event called before the dissmiss animation has started. | diff --git a/packages/docs/api/toast/CToastHeader.api.md b/packages/docs/api/toast/CToastHeader.api.md deleted file mode 100644 index a8ff8638..00000000 --- a/packages/docs/api/toast/CToastHeader.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CToastHeader - -```jsx -import { CToastHeader } from '@coreui/vue' -// or -import CToastHeader from '@coreui/vue/src/components/toast/CToastHeader' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------------- | ----------------------------------------------- | ------- | ------ | ------- | -| **close-button** | Automatically add a close button to the header. | boolean | - | - | diff --git a/packages/docs/api/toast/CToaster.api.md b/packages/docs/api/toast/CToaster.api.md deleted file mode 100644 index f21a2180..00000000 --- a/packages/docs/api/toast/CToaster.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CToaster - -```jsx -import { CToaster } from '@coreui/vue' -// or -import CToaster from '@coreui/vue/src/components/toast/CToaster' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | ------- | -| **placement** | Describes the placement of component. | string | `'top-start'`, `'top'`, `'top-end'`, `'middle-start'`, `'middle'`, `'middle-end'`, `'bottom-start'`, `'bottom'`, `'bottom-end'` | - | diff --git a/packages/docs/api/tooltip/CTooltip.api.md b/packages/docs/api/tooltip/CTooltip.api.md deleted file mode 100644 index 3b0cac97..00000000 --- a/packages/docs/api/tooltip/CTooltip.api.md +++ /dev/null @@ -1,28 +0,0 @@ -### CTooltip - -```jsx -import { CTooltip } from '@coreui/vue' -// or -import CTooltip from '@coreui/vue/src/components/tooltip/CTooltip' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------- | ---------------------------------------- | -| **animation**
    4.9.0+
    | Apply a CSS fade transition to the tooltip. | boolean | - | true | -| **container**
    5.0.0+
    | Appends the vue tooltip to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`. | HTMLElement \| (() => HTMLElement) \| string | - | 'body' | -| **content** | Content for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **delay**
    4.9.0+
    | The delay for displaying and hiding the popover (in milliseconds). When a numerical value is provided, the delay applies to both the hide and show actions. The object structure for specifying the delay is as follows: delay: `{ 'show': 500, 'hide': 100 }`. | number \| { show: number; hide: number } | - | 0 | -| **fallback-placements**
    4.9.0+
    | Specify the desired order of fallback placements by providing a list of placements as an array. The placements should be prioritized based on preference. | Placements \| Placements[] | - | () => ['top', 'right', 'bottom', 'left'] | -| **offset** | Offset of the tooltip relative to its target. | array | - | [0, 6] | -| **placement** | Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. | Placement | - | 'top' | -| **trigger** | Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. | Triggers \| Triggers[] | `'click'`, `'focus'`, `'hover'` | () => ['hover', 'focus'] | -| **visible** | Toggle the visibility of tooltip component. | boolean | - | - | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/packages/docs/api/widgets/CWidgetStatsA.api.md b/packages/docs/api/widgets/CWidgetStatsA.api.md deleted file mode 100644 index 5bab31a0..00000000 --- a/packages/docs/api/widgets/CWidgetStatsA.api.md +++ /dev/null @@ -1,21 +0,0 @@ -### CWidgetStatsA - -```jsx -import { CWidgetStatsA } from '@coreui/vue' -// or -import CWidgetStatsA from '@coreui/vue/src/components/widgets/CWidgetStatsA' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | ------- | -| **title** | Title for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **value** | Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` | number\|string | - | 0 | - -#### Slots - -| Name | Description | Bindings | -| ------ | ------------------------------------------------- | -------- | -| chart | Location for chart component. | | -| action | Location for action component, ex. ``. | | diff --git a/packages/docs/api/widgets/CWidgetStatsB.api.md b/packages/docs/api/widgets/CWidgetStatsB.api.md deleted file mode 100644 index 53c4aaf6..00000000 --- a/packages/docs/api/widgets/CWidgetStatsB.api.md +++ /dev/null @@ -1,17 +0,0 @@ -### CWidgetStatsB - -```jsx -import { CWidgetStatsB } from '@coreui/vue' -// or -import CWidgetStatsB from '@coreui/vue/src/components/widgets/CWidgetStatsB' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **inverse** | Colors have been inverted from their default dark shade. | boolean | - | - | -| **text** | Helper text for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **title** | Title for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **value** | Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` | number\|string | - | 0 | diff --git a/packages/docs/api/widgets/CWidgetStatsC.api.md b/packages/docs/api/widgets/CWidgetStatsC.api.md deleted file mode 100644 index 485f5f4f..00000000 --- a/packages/docs/api/widgets/CWidgetStatsC.api.md +++ /dev/null @@ -1,22 +0,0 @@ -### CWidgetStatsC - -```jsx -import { CWidgetStatsC } from '@coreui/vue' -// or -import CWidgetStatsC from '@coreui/vue/src/components/widgets/CWidgetStatsC' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **inverse** | Colors have been inverted from their default dark shade. | boolean | - | - | -| **title** | Title for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **value** | Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` | number\|string | - | 0 | - -#### Slots - -| Name | Description | Bindings | -| ---- | ---------------------------- | -------- | -| icon | Location for icon component. | | diff --git a/packages/docs/api/widgets/CWidgetStatsD.api.md b/packages/docs/api/widgets/CWidgetStatsD.api.md deleted file mode 100644 index 6e6835c5..00000000 --- a/packages/docs/api/widgets/CWidgetStatsD.api.md +++ /dev/null @@ -1,21 +0,0 @@ -### CWidgetStatsD - -```jsx -import { CWidgetStatsD } from '@coreui/vue' -// or -import CWidgetStatsD from '@coreui/vue/src/components/widgets/CWidgetStatsD' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ---------- | ------------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------- | -------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **values** | Values and titles for your component. | Value[] | - | () => [] | - -#### Slots - -| Name | Description | Bindings | -| ----- | ----------------------------------------------- | -------- | -| chart | Location for chart component. | | -| icon | Location for icon component, ex. ``. | | diff --git a/packages/docs/api/widgets/CWidgetStatsE.api.md b/packages/docs/api/widgets/CWidgetStatsE.api.md deleted file mode 100644 index 436ec923..00000000 --- a/packages/docs/api/widgets/CWidgetStatsE.api.md +++ /dev/null @@ -1,20 +0,0 @@ -### CWidgetStatsE - -```jsx -import { CWidgetStatsE } from '@coreui/vue' -// or -import CWidgetStatsE from '@coreui/vue/src/components/widgets/CWidgetStatsE' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | ------- | -| **title** | Title for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **value** | Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` | number\|string | - | 0 | - -#### Slots - -| Name | Description | Bindings | -| ----- | ----------------------------- | -------- | -| chart | Location for chart component. | | diff --git a/packages/docs/api/widgets/CWidgetStatsF.api.md b/packages/docs/api/widgets/CWidgetStatsF.api.md deleted file mode 100644 index 49dd0bdb..00000000 --- a/packages/docs/api/widgets/CWidgetStatsF.api.md +++ /dev/null @@ -1,23 +0,0 @@ -### CWidgetStatsF - -```jsx -import { CWidgetStatsF } from '@coreui/vue' -// or -import CWidgetStatsF from '@coreui/vue/src/components/widgets/CWidgetStatsF' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **padding** | Set padding of your component. | boolean | - | true | -| **title** | Title for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **text** | Helper text for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **value** | Value for your component. If you want to pass non-string or non-number value please use dedicated slot `` | number\|string | - | 0 | - -#### Slots - -| Name | Description | Bindings | -| ---- | ---------------------------- | -------- | -| icon | Location for icon component. | | diff --git a/packages/docs/build/docgen.config.js b/packages/docs/build/docgen.config.js deleted file mode 100644 index 7d654712..00000000 --- a/packages/docs/build/docgen.config.js +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -'use strict' - -const path = require('path') - -module.exports = { - componentsRoot: './../../packages', // the folder where CLI will start searching for components. - components: [ - '**/[A-Z]*.ts', - '!**/[A-Z]*.d.ts', - '!**/[A-Z]*.spec.ts', - '!**/ComponentProps.ts', - ], - outDir: 'api', // folder to save components docs in (relative to the current working directry) - getDocFileName: (componentPath) => - componentPath.replace(/\.ts$/, '.md'), // specify the name of the input md file - getDestFile: (file, config) => { - return path.join( - config.outDir, - file.replace('coreui-vue/src/components', '') - .replace('coreui-vue-chartjs/src/', '')).replace(/\.ts$/, '.api.md') // specify the name of the output md file - }, - // templates, - templates: { - // global component template wrapping all others see #templates - component: require('./templates/component'), - events: require('./templates/events'), - props: require('./templates/props'), - slots: require('./templates/slots'), - }, - docsRepo: '@coreui/vue', - docsBranch: 'main', - docsFolder: '', - editLinkLabel: 'Edit on github', -} \ No newline at end of file diff --git a/packages/docs/build/templates/component.js b/packages/docs/build/templates/component.js deleted file mode 100644 index d5f403cf..00000000 --- a/packages/docs/build/templates/component.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict' - -module.exports = (renderedUsage, doc, config, fileName, requiresMd, { isSubComponent, hasSubComponents }) => { - const { displayName, description, tags, functional } = doc; - const { deprecated, author, since, version, see, link } = tags || {}; - const frontMatter = []; - if (!config.outFile && deprecated) { - // to avoid having the squiggles in the left menu for deprecated items - // use the frontmatter feature of vuepress - frontMatter.push(`title: ${displayName}`); - } - if (hasSubComponents) { - // show more than one level on subcomponents - frontMatter.push('sidebarDepth: 2'); - } - - return `${frontMatter.length && !isSubComponent - ? ` ---- -${frontMatter.join('\n')} ---- -` - : ''} -${isSubComponent || hasSubComponents ? '#' : ''}### ${deprecated ? `~~${displayName}~~` : displayName} - -${deprecated ? `> **Deprecated** ${deprecated[0].description}\n` : ''} -${description ? '> ' + description : ''} - - -\`\`\`jsx -import { ${displayName} } from '@coreui/${fileName.replace('coreui-', '').split('/')[0]}' -// or -import ${displayName} from '@coreui/${fileName.replace('coreui-', '').replace('.ts', '')}' -\`\`\`\n - -${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`) : ''} - -${renderedUsage.props} -${renderedUsage.methods} -${renderedUsage.events} -${renderedUsage.slots} - -${requiresMd.length - ? '---\n' + requiresMd.map(component => component.content).join('\n---\n') - : ''} -`; -}; \ No newline at end of file diff --git a/packages/docs/build/templates/events.js b/packages/docs/build/templates/events.js deleted file mode 100644 index 56550438..00000000 --- a/packages/docs/build/templates/events.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict' - -function mdclean(input) { - return input.replace(/\r?\n/g, '
    ').replace(/\|/g, '\\|') -} - -function formatProperties(properties) { - if (!properties) { - return '' - } - return properties - .map(property => { - const { name, description, type } = property - if (!type) { - return '' - } - return `**${name}** \`${type.names.length ? type.names.join(', ') : ''}\` - ${description}` - }) - .join('\n') -} - -const tmpl = (events) => { - let ret = '' - events.forEach(evt => { - const { description = '', ...e } = evt - const readableProperties = e.properties ? `${formatProperties(e.properties)}` : '' - ret += `| **${e.name.includes('update:') ? mdclean(e.name) : mdclean(e.name.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) - .map(x => x.toLowerCase()) - .join('-'))}** | ${mdclean(description)}| ${mdclean(readableProperties)}\n` - }) - return ret -} - -module.exports = (events, opt = {}) => { - return ` -${opt.isSubComponent || opt.hasSubComponents ? '#' : ''}#### Events - - | Event name | Description | Properties | - | -------------- |--------------- | -------------| - ${tmpl(events)} - ` -} \ No newline at end of file diff --git a/packages/docs/build/templates/props.js b/packages/docs/build/templates/props.js deleted file mode 100644 index 44997ddf..00000000 --- a/packages/docs/build/templates/props.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict' -function mdclean(input) { - return input.replace(/\r?\n/g, '
    ').replace(/\|/g, '\\|') -} -function isTag(v) { - return !!v.content; -} -const renderTags = (tags) => { - if (!tags) { - return ''; - } - return Object.entries(tags) - .map(([tag, values]) => { - return tag !== 'since' ? values.map(v => `
    \`@${tag}\` ${isTag(v) ? v.content : v.description}`).join(''): ''; - }) - .join(''); -}; -const tmpl = (props) => { - let ret = ''; - const replaceToString = /Color|TextColor|Shape/i; - props.forEach(prop => { - const name = prop.name - let t = prop.description ?? '' - t += renderTags(prop.tags) - const n = prop.type?.name ?? '' - const v = prop.values?.map(pv => `\`${pv}\``).join(', ') ?? '-' - const d = prop.defaultValue?.value ?? '-' - const since = prop.tags && prop.tags.since ? `
    ${prop.tags.since[0].description}+
    ` : '' - - if (prop.description && !prop.description.includes('@ignore')) { - ret += `| **${mdclean(name.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) - .map(x => x.toLowerCase()) - .join('-'))}** ${mdclean(since)} | ${mdclean(t)} | ${mdclean(n.replace(replaceToString, 'string'))} | ${mdclean(v)} | ${mdclean(d.replace('undefined', '-'))} |\n`; - } - }); - return ret; -}; -module.exports = (props, opt = {}) => { - return ` -${opt.isSubComponent || opt.hasSubComponents ? '#' : ''}#### Props - | Prop name | Description | Type | Values | Default | - | ------------- | ----------- | --------- | ----------- | ----------- | - ${tmpl(props)} - `; -}; diff --git a/packages/docs/build/templates/slots.js b/packages/docs/build/templates/slots.js deleted file mode 100644 index 39155874..00000000 --- a/packages/docs/build/templates/slots.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict' - -function mdclean(input) { - return input.replace(/\r?\n/g, '
    ').replace(/\|/g, '\\|') -} - -const formatBindings = bindings => { - if (!bindings) { - return ''; - } - return bindings - .map(binding => { - const { name, description, type } = binding; - if (!type) { - return ''; - } - return `**${name}** \`${type.name === 'union' && type.elements - ? type.elements.map(({ name: insideName }) => insideName).join(', ') - : type.name}\` - ${description}`; - }) - .join('\n'); -}; - -module.exports = (slots, opt = {}) => { - return ` -${opt.isSubComponent || opt.hasSubComponents ? '#' : ''}#### Slots - - | Name | Description | Bindings | - | ------------- | ------------ | -------- | - ${slots - .map(slot => { - const { description, bindings, name } = slot; - const readableBindings = bindings ? `${formatBindings(bindings)}` : ''; - return `| ${mdclean(name)} | ${mdclean(description || '')} | ${mdclean(readableBindings)} |`; // replace returns by
    to allow them in a table cell - }) - .join('\n')} -`; -}; \ No newline at end of file diff --git a/packages/docs/components/accordion.md b/packages/docs/components/accordion.md deleted file mode 100644 index def460c1..00000000 --- a/packages/docs/components/accordion.md +++ /dev/null @@ -1,309 +0,0 @@ ---- -title: Vue Accordion Component -name: Accordion -description: Build vertically collapsing accordions in combination with our Vue Collapse component. -other_frameworks: accordion ---- - -## Examples - -Click the accordions below to expand/collapse the accordion content. - -::: demo - - - - Accordion Item #1 - - - This is the first item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #2 - - - This is the second item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #3 - - - This is the third item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - -::: -```markup - - - - Accordion Item #1 - - - This is the first item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #2 - - - This is the second item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #3 - - - This is the third item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - -``` - -### Flush - -Add `flush` to remove the default `background-color`, some borders, and some rounded corners to render accordions edge-to-edge with their parent container. - -:::demo - - - - Accordion Item #1 - - - This is the first item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #2 - - - This is the second item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #3 - - - This is the third item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - -::: -```markup - - - - Accordion Item #1 - - - This is the first item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #2 - - - This is the second item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #3 - - - This is the third item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - -``` - -### Always open - -Add `always-open` property to make accordion items stay open when another item is opened. - -:::demo - - - - Accordion Item #1 - - - This is the first item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #2 - - - This is the second item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #3 - - - This is the third item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - -::: -```markup - - - - Accordion Item #1 - - - This is the first item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #2 - - - This is the second item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - - - Accordion Item #3 - - - This is the third item's accordion body. It is hidden by default, - until the collapse plugin adds the appropriate classes that we use to style each - element. These classes control the overall appearance, as well as the showing and - hiding via CSS transitions. You can modify any of this with custom CSS or overriding - our default variables. It's also worth noting that just about any HTML can go within - the .accordion-body, though the transition does limit overflow. - - - -``` - -## Customizing - -### CSS variables - -Vue accordions use local CSS variables on `.accordion` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -#### How to use CSS variables - -```js -const vars = { - '--my-css-var': 10, - '--my-another-css-var': "red" -} -return ... -``` - -### SASS variables - - - -## API - -!!!include(./api/accordion/CAccordion.api.md)!!! - -!!!include(./api/accordion/CAccordionHeader.api.md)!!! - -!!!include(./api/accordion/CAccordionBody.api.md)!!! \ No newline at end of file diff --git a/packages/docs/components/alert.md b/packages/docs/components/alert.md deleted file mode 100644 index 96091ca9..00000000 --- a/packages/docs/components/alert.md +++ /dev/null @@ -1,299 +0,0 @@ ---- -title: Vue Alert Component -name: Alert -description: Vue alert component gives contextual feedback information for common user operations. The alert component is delivered with a bunch of usable and adjustable alert messages. -other_frameworks: alert ---- - -## Examples - -Vue Alert is prepared for any length of text, as well as an optional close button. For a styling, use one of the **required** contextual `color` props (e.g., `primary`). For inline dismissal, use the [dismissing prop](#dismissing). - -::: demo -A simple primary alert—check it out! -A simple secondary alert—check it out! -A simple success alert—check it out! -A simple danger alert—check it out! -A simple warning alert—check it out! -A simple info alert—check it out! -A simple light alert—check it out! -A simple dark alert—check it out! -::: - -```vue -A simple primary alert—check it out! -A simple secondary alert—check it out! -A simple success alert—check it out! -A simple danger alert—check it out! -A simple warning alert—check it out! -A simple info alert—check it out! -A simple light alert—check it out! -A simple dark alert—check it out! -``` - -### Live example - -Click the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button. - -::: demo -A simple primary alert—check it out! -Show live alert -::: - -```vue - - -``` - -### Link color - -Use the `` component to immediately give matching colored links inside any alert. -::: demo - -A simple primary alert with an example link. Give it a click if you like. - - -A simple secondary alert with an example link. Give it a click if you like. - - -A simple success alert with an example link. Give it a click if you like. - - -A simple danger alert with an example link. Give it a click if you like. - - -A simple warning alert with an example link. Give it a click if you like. - - -A simple info alert with an example link. Give it a click if you like. - - -A simple light alert with an example link. Give it a click if you like. - - -A simple dark alert with an example link. Give it a click if you like. - -::: - -```vue - - A simple primary alert with an example link. Give it a click if you like. - - - A simple secondary alert with an example link. Give it a click if you like. - - - A simple success alert with an example link. Give it a click if you like. - - - A simple danger alert with an example link. Give it a click if you like. - - - A simple warning alert with an example link. Give it a click if you like. - - - A simple info alert with an example link. Give it a click if you like. - - - A simple light alert with an example link. Give it a click if you like. - - - A simple dark alert with an example link. Give it a click if you like. - -``` - -### Additional content - -Alert can also incorporate supplementary HTML elements like heading, paragraph, and divider. - -::: demo - -Well done! - -

    Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

    -
    -

    Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

    -
    -::: - -```vue - - Well done! -

    Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

    -
    -

    Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

    -
    -``` - -### Icons - -Similarly, you can use [flexbox utilities](https//coreui.io/docs/4.0/utilities/flex") and [CoreUI Icons](https://icons.coreui.io) to create alerts with icons. Depending on your icons and content, you may want to add more utilities or custom styles. - -::: demo - - - - - -
    - An example alert with an icon -
    -
    -::: -```vue - - - - -
    - An example alert with an icon -
    -
    -``` - -Need more than one icon for your alerts? Consider using [CoreUI Icons](https://icons.coreui.io). - -::: demo - - - -
    - An example alert with an icon -
    -
    - - -
    - An example success alert with an icon -
    -
    - - -
    - An example warning alert with an icon -
    -
    - - -
    - An example danger alert with an icon -
    -
    -::: -```vue - - -
    - An example alert with an icon -
    -
    - - -
    - An example success alert with an icon -
    -
    - - -
    - An example warning alert with an icon -
    -
    - - -
    - An example danger alert with an icon -
    -
    -``` - -### Solid - -Use `variant="solid"` to change contextual colors to solid. - -::: demo -A simple solid primary alert—check it out! -A simple solid secondary alert—check it out! -A simple solid success alert—check it out! -A simple solid danger alert—check it out! -A simple solid warning alert—check it out! -A simple solid info alert—check it out! -A simple solid light alert—check it out! -A simple solid dark alert—check it out! -::: - -```vue -A simple solid primary alert—check it out! -A simple solid secondary alert—check it out! -A simple solid success alert—check it out! -A simple solid danger alert—check it out! -A simple solid warning alert—check it out! -A simple solid info alert—check it out! -A simple solid light alert—check it out! -A simple solid dark alert—check it out! -``` - -### Dismissing - -Alerts can also be easily dismissed. Just add the `dismissible` prop. - -::: demo - - Go right ahead and click that dimiss over there on the right. - -::: - -```vue - - -``` - -## Customizing - -### CSS variables - -Vue alerts use local CSS variables on `.alert` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -#### How to use CSS variables - -```js -const vars = { - '--my-css-var': 10, - '--my-another-css-var': "red" -} -return ... -``` - -### SASS variables - - - -## API - -!!!include(./api/alert/CAlert.api.md)!!! - -!!!include(./api/alert/CAlertHeading.api.md)!!! - - diff --git a/packages/docs/components/avatar.md b/packages/docs/components/avatar.md deleted file mode 100644 index 02fb3b37..00000000 --- a/packages/docs/components/avatar.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: Vue Avatar Component -name: Avatar -description: The Vue Avatar component is used to display circular user profile pictures. Vue avatars can portray people or objects and support images, icons, or letters. -other_frameworks: avatar ---- - -## Image avatars - -Showcase Vue avatars using images. These avatars are typically circular and can display user profile pictures. - -::: demo - - - -::: -```vue - - - -``` - -## Letter avatars - -Use letters inside avatars to represent users or objects when images are not available. This can be useful for displaying initials. - -::: demo -CUI -CUI -CUI -::: -```vue -CUI -CUI -CUI -``` - -## Icons avatars - -Incorporate icons within Vue avatars, allowing for a visual representation using scalable vector graphics (SVG). - -::: demo - - - - - - - - - - - - - - - -::: -```vue - - - - - - - - - - - - - - - -``` - -## Rounded avatars - -Use the `shape="rounded"` prop to make avatars squared with rounded corners. - -::: demo -CUI -CUI -CUI -::: -```vue -CUI -CUI -CUI -``` -## Square avatars - -Use the `shape="rounded-0"` prop to make avatars squared. - -::: demo -CUI -CUI -CUI -::: -```vue -CUI -CUI -CUI -``` - -## Sizes - -Fancy larger or smaller avatar? Add `size="xl"`, `size="lg"` or `size="sm"` for additional sizes. - -::: demo -CUI -CUI -CUI -CUI -CUI -::: -```vue -CUI -CUI -CUI -CUI -CUI -``` - -## Avatars with status - -Add a status indicator to avatars using the `status` property to show online or offline status. - -::: demo - -CUI -::: -```vue - -CUI -``` - -## Customizing - -### CSS variables - -Vue avatars use local CSS variables on `.avatar` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -#### How to use CSS variables - -```jsx -const vars = { - '--my-css-var': 10, - '--my-another-css-var': 'red', -} -return ... -``` - -### SASS variables - - - -## API - -!!!include(./api/avatar/CAvatar.api.md)!!! \ No newline at end of file diff --git a/packages/docs/components/badge.md b/packages/docs/components/badge.md deleted file mode 100644 index 6d46e501..00000000 --- a/packages/docs/components/badge.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Vue Badge Component -name: Badge -description: Vue badge component is small count and labeling component. -other_frameworks: badge ---- - -## Example - -Badge component scales to suit the size of the parent element by using relative font sizing and `em` units. - -### Basic usage - -::: demo -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -
    Example heading New
    -
    Example heading New
    -::: -```vue -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -
    Example heading New
    -
    Example heading New
    -``` - -Badges can be used as part of links or buttons to provide a counter. - -::: demo - - Notifications 4 - -::: -```vue - - Notifications 4 - -``` - -Remark that depending on how you use them, badges may be complicated for users of screen readers and related assistive technologies. - -Unless the context is clear, consider including additional context with a visually hidden piece of additional text. - -::: demo - - Profile 9 - unread messages - -::: -```vue - - Profile 9 - unread messages - -``` - -### Positioned - -Use `position` prop to modify a component and position it in the corner of a link or button. - -::: demo - - Profile - - 99+ unread messages - - - - Profile - - 99+ unread messages - - -
    - - Profile - - 99+ unread messages - - - - Profile - - 99+ unread messages - - -::: -```vue - - Profile - - 99+ unread messages - - - - Profile - - 99+ unread messages - - - - Profile - - 99+ unread messages - - - - Profile - - 99+ unread messages - - -``` - -You can also create more generic indicators without a counter using a few more utilities. - -::: demo - - Profile - - New alerts - - -::: -```vue - - Profile - - New alerts - - -``` - -## Contextual variations - -Add any of the below-mentioned `color` props to modify the presentation of a badge. - -::: demo -primary -success -danger -warning -info -light -dark -::: -```vue -primary -success -danger -warning -info -light -dark -``` - -You can also apply contextual variations with the `textBgColor` property, which automatically sets the text color to ensure compliance with the WCAG 4.5:1 contrast ratio standard for enhanced accessibility. - -::: demo -primary -success -danger -warning -info -light -dark -::: -```vue -primary -success -danger -warning -info -light -dark -``` - - -## Pill badges - -Apply the `shape="rounded-pill"` prop to make badges rounded. - -::: demo -primary -success -danger -warning -info -light -dark -::: -```vue -primary -success -danger -warning -info -light -dark -``` - -## Customizing - -### CSS variables - -Vue badges use local CSS variables on `.badges` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -#### How to use CSS variables - -```js -const vars = { - '--my-css-var': 10, - '--my-another-css-var': "red" -} -return ... -``` - -### SASS variables - - - -## API - -!!!include(./api/badge/CBadge.api.md)!!! \ No newline at end of file diff --git a/packages/docs/components/breadcrumb.md b/packages/docs/components/breadcrumb.md deleted file mode 100644 index 02f50c53..00000000 --- a/packages/docs/components/breadcrumb.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Vue Breadcrumb Component -name: Breadcrumb -description: Vue breadcrumb navigation component which indicates the current location within a navigational hierarchy that automatically adds separators. -other_frameworks: breadcrumb ---- - - -## Example - -The breadcrumb navigation provides links back to each previous page the user navigated through and shows the current location in a website or an application. You don’t have to add separators, because they automatically added in CSS through ::before and content. - -::: demo - - Home - - - Home - Library - - - Home - Library - Data - -::: -```vue - - Home - - - Home - Library - - - Home - Library - Data - -``` - -## Dividers - -Dividers are automatically added in CSS through [`::before`](https://developer.mozilla.org/en-US/docs/Web/CSS/::before) and [`content`](https://developer.mozilla.org/en-US/docs/Web/CSS/content). They can be changed by modifying a local CSS custom property `--coreui-breadcrumb-divider`, or through the `$breadcrumb-divider` Sass variable — and `$breadcrumb-divider-flipped` for its RTL counterpart, if needed. We default to our Sass variable, which is set as a fallback to the custom property. This way, you get a global divider that you can override without recompiling CSS at any time. - -::: demo - - Home - Library - -::: -```vue - - Home - Library - -``` - -When modifying via Sass, the [quote](https://sass-lang.com/documentation/modules/string#quote) function is required to generate the quotes around a string. For example, using `>` as the divider, you can use this: - -```scss -$breadcrumb-divider: quote(">"); -``` - -It's also possible to use an **embedded SVG icon**. Apply it via our CSS custom property, or use the Sass variable. - -::: demo - - Home - Library - -::: -```vue - - Home - Library - -``` - -```scss -$breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' -width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"); -``` - -You can also remove the divider setting `--cui-breadcrumb-divider: '';` (empty strings in CSS custom properties counts as a value), or setting the Sass variable to `$breadcrumb-divider: none;`. - -::: demo - - Home - Library - -::: -```vue - - Home - Library - -``` - -```scss -$breadcrumb-divider: none; -``` - -## Accessibility - -Since breadcrumbs provide navigation, it's useful to add a significant label such as `aria-label="breadcrumb"` to explain the type of navigation implemented in the `