From e5d43fc98bc2b4e4a3a9c7dc98ccc31626d4d90c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Thu, 12 Dec 2024 00:44:25 +0100 Subject: [PATCH] Drop Enzyme's support (#3292) * Drop Enzyme's support * update lockfile * update snapshots * rename to setup-env * update snapshots agains --- .changeset/polite-items-cheat.md | 5 + docs/testing.mdx | 19 +- package.json | 3 - packages/cache/__tests__/index.js | 2 +- .../__snapshots__/selectivity.test.js.snap | 22 +- packages/css/test/component-selector.test.js | 2 +- packages/css/test/css.test.js | 2 +- packages/css/test/cx.test.js | 2 +- packages/css/test/inject-global.test.js | 2 +- packages/css/test/instance/css.test.js | 2 +- packages/css/test/keyframes.test.js | 10 +- packages/css/test/label-pattern.test.js | 2 +- packages/css/test/no-babel/index.test.js | 2 +- packages/css/test/no-babel/warnings.test.js | 2 +- packages/css/test/selectivity.test.js | 2 +- .../__snapshots__/source-map.test.js.snap | 28 +- .../css/test/source-map/source-map.test.js | 2 +- packages/css/test/warnings.test.js | 2 +- packages/jest/README.md | 12 +- packages/jest/enzyme-serializer/package.json | 5 - packages/jest/enzyme/package.json | 4 - packages/jest/package.json | 22 +- packages/jest/src/create-enzyme-serializer.js | 107 --- packages/jest/src/create-serializer.js | 40 - packages/jest/src/enzyme-serializer.d.ts | 1 - packages/jest/src/enzyme-serializer.js | 2 - packages/jest/src/enzyme-tickler.js | 24 - packages/jest/src/enzyme.d.ts | 1 - packages/jest/src/enzyme.js | 2 - packages/jest/src/utils.js | 24 +- .../__snapshots__/react-enzyme.test.js.snap | 814 ------------------ packages/jest/test/matchers.test.js | 71 +- packages/jest/test/printer.test.js | 2 +- packages/jest/test/prod.test.js | 2 +- packages/jest/test/react-enzyme.test.js | 413 --------- packages/jest/types/enzyme-serializer.d.ts | 9 - packages/jest/types/enzyme.d.ts | 21 - packages/primitives/package.json | 2 - packages/react/__tests__/babel/css.js | 2 +- packages/react/__tests__/class-names.js | 2 +- packages/react/__tests__/css-cache-hash.js | 2 +- packages/react/__tests__/css.js | 2 +- packages/react/__tests__/custom-cache.js | 2 +- packages/react/__tests__/keyframes.js | 2 +- packages/react/__tests__/legacy-class-name.js | 2 +- .../react/__tests__/theme-provider.dom.js | 2 +- packages/react/__tests__/theme-provider.js | 2 +- packages/react/__tests__/use-theme.js | 2 +- packages/react/__tests__/warnings.js | 2 +- packages/styled/__tests__/as-prop.js | 2 +- packages/styled/__tests__/edge-cases.js | 2 +- packages/styled/__tests__/styled.js | 2 +- packages/styled/__tests__/warnings.js | 2 +- packages/styled/test/babel-plugin.test.js | 2 +- .../styled/test/component-selector.test.js | 2 +- packages/styled/test/composition.test.js | 2 +- packages/styled/test/index.test.js | 2 +- packages/styled/test/prop-filtering.test.js | 2 +- packages/styled/test/theming.dom.test.js | 2 +- packages/styled/test/theming.test.js | 2 +- scripts/test-utils/enzyme-env.js | 4 - scripts/test-utils/legacy-env.js | 5 - .../test-utils/{next-env.js => setup-env.js} | 0 yarn.lock | 355 +------- 64 files changed, 87 insertions(+), 2010 deletions(-) create mode 100644 .changeset/polite-items-cheat.md delete mode 100644 packages/jest/enzyme-serializer/package.json delete mode 100644 packages/jest/enzyme/package.json delete mode 100644 packages/jest/src/create-enzyme-serializer.js delete mode 100644 packages/jest/src/enzyme-serializer.d.ts delete mode 100644 packages/jest/src/enzyme-serializer.js delete mode 100644 packages/jest/src/enzyme-tickler.js delete mode 100644 packages/jest/src/enzyme.d.ts delete mode 100644 packages/jest/src/enzyme.js delete mode 100644 packages/jest/test/__snapshots__/react-enzyme.test.js.snap delete mode 100644 packages/jest/test/react-enzyme.test.js delete mode 100644 packages/jest/types/enzyme-serializer.d.ts delete mode 100644 packages/jest/types/enzyme.d.ts delete mode 100644 scripts/test-utils/enzyme-env.js delete mode 100644 scripts/test-utils/legacy-env.js rename scripts/test-utils/{next-env.js => setup-env.js} (100%) diff --git a/.changeset/polite-items-cheat.md b/.changeset/polite-items-cheat.md new file mode 100644 index 0000000000..71c4dd8b07 --- /dev/null +++ b/.changeset/polite-items-cheat.md @@ -0,0 +1,5 @@ +--- +'@emotion/jest': major +--- + +Drop support for Enzyme diff --git a/docs/testing.mdx b/docs/testing.mdx index c55211b5a9..cd4b92ad1a 100644 --- a/docs/testing.mdx +++ b/docs/testing.mdx @@ -32,26 +32,9 @@ import { createSerializer } from '@emotion/jest' expect.addSnapshotSerializer(createSerializer()) ``` -When using Enzyme, you can add `"@emotion/jest/enzyme-serializer"` instead. - -```json -{ - "snapshotSerializers": ["@emotion/jest/enzyme-serializer"] -} -``` - -Or use `expect.addSnapshotSerializer` to add it like this: - -```javascript -// also adds the enzyme-to-json serializer -import { createEnzymeSerializer } from '@emotion/jest/enzyme-serializer' - -expect.addSnapshotSerializer(createEnzymeSerializer()) -``` - ### Writing a test -Writing a test with `@emotion/jest` involves creating a snapshot from the `react-test-renderer` or `enzyme-to-json`'s resulting JSON. +Writing a test with `@emotion/jest` involves creating a snapshot from the `react-test-renderer`'s resulting JSON. ```jsx import React from 'react' diff --git a/package.json b/package.json index ac464ba243..fba49a4d31 100644 --- a/package.json +++ b/package.json @@ -201,9 +201,6 @@ "bundlesize": "^0.13.2", "codecov": "^2.3.1", "cssjanus": "^1.2.0", - "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.5", - "enzyme-to-json": "^3.6.1", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-config-react": "^1.1.7", diff --git a/packages/cache/__tests__/index.js b/packages/cache/__tests__/index.js index 931c506877..8987be5f1f 100644 --- a/packages/cache/__tests__/index.js +++ b/packages/cache/__tests__/index.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { safeQuerySelector } from 'test-utils' import createCache from '@emotion/cache' import { jsx, CacheProvider } from '@emotion/react' diff --git a/packages/css/test/__snapshots__/selectivity.test.js.snap b/packages/css/test/__snapshots__/selectivity.test.js.snap index 5829b6e2d3..f80acc0ada 100644 --- a/packages/css/test/__snapshots__/selectivity.test.js.snap +++ b/packages/css/test/__snapshots__/selectivity.test.js.snap @@ -15,62 +15,62 @@ exports[`css complex nested media queries 1`] = ` `; exports[`css complex nested styles 1`] = ` -".css-52fshx { +".css-1fh6au3 { color: blue; } -.css-52fshx:hover { +.css-1fh6au3:hover { color: green; } -.css-52fshx:hover .name { +.css-1fh6au3:hover .name { color: amethyst; } -.css-52fshx:hover .name:focus { +.css-1fh6au3:hover .name:focus { color: burlywood; } @media (min-width: 420px) { - .css-52fshx:hover .name:focus { + .css-1fh6au3:hover .name:focus { color: rebeccapurple; } }" `; exports[`css handles media query merges 1`] = ` -".css-19kb3dc { +".css-uzr6q5 { color: darkslateblue; color: red; color: purple; } @media (min-width: 420px) { - .css-19kb3dc { + .css-uzr6q5 { color: amethyst; } } @media (min-width: 640px) { - .css-19kb3dc { + .css-uzr6q5 { color: rebeccapurple; } } @media (min-width: 960px) { - .css-19kb3dc { + .css-uzr6q5 { color: burlywood; } } @media (min-width: 640px) { - .css-19kb3dc { + .css-uzr6q5 { color: blue; } } @media (min-width: 640px) { - .css-19kb3dc { + .css-uzr6q5 { color: aquamarine; } }" diff --git a/packages/css/test/component-selector.test.js b/packages/css/test/component-selector.test.js index ce5bbbada2..a7eab145e1 100644 --- a/packages/css/test/component-selector.test.js +++ b/packages/css/test/component-selector.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import styled from '@emotion/styled' import renderer from 'react-test-renderer' diff --git a/packages/css/test/css.test.js b/packages/css/test/css.test.js index 7b44dab7a8..df86dd5722 100644 --- a/packages/css/test/css.test.js +++ b/packages/css/test/css.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import renderer from 'react-test-renderer' import { css, flush, sheet } from '@emotion/css' diff --git a/packages/css/test/cx.test.js b/packages/css/test/cx.test.js index 30370209ed..a05b72002f 100644 --- a/packages/css/test/cx.test.js +++ b/packages/css/test/cx.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import renderer from 'react-test-renderer' import { css, cx } from '@emotion/css' diff --git a/packages/css/test/inject-global.test.js b/packages/css/test/inject-global.test.js index 44050042ee..e4139a0441 100644 --- a/packages/css/test/inject-global.test.js +++ b/packages/css/test/inject-global.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import { injectGlobal, sheet, flush, css } from '@emotion/css' describe('injectGlobal', () => { diff --git a/packages/css/test/instance/css.test.js b/packages/css/test/instance/css.test.js index 67a2a02ea4..cce9704274 100644 --- a/packages/css/test/instance/css.test.js +++ b/packages/css/test/instance/css.test.js @@ -1,4 +1,4 @@ -import 'test-utils/next-env' +import 'test-utils/setup-env' import React from 'react' import renderer from 'react-test-renderer' import { css as differentCss, flush, sheet } from './emotion-instance' diff --git a/packages/css/test/keyframes.test.js b/packages/css/test/keyframes.test.js index 961568ca82..863a6ab4ad 100644 --- a/packages/css/test/keyframes.test.js +++ b/packages/css/test/keyframes.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import renderer from 'react-test-renderer' import { keyframes, flush, css } from '@emotion/css' @@ -13,17 +13,17 @@ describe('keyframes', () => { animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transform: translate3d(0,0,0); } - + 40%, 43% { animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transform: translate3d(0, -30px, 0); } - + 70% { animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transform: translate3d(0, -15px, 0); } - + 90% { transform: translate3d(0,-4px,0); } @@ -54,7 +54,7 @@ describe('keyframes', () => { from { transform: rotate(0deg); } - + to { transform: rotate(${endingRotation}); } diff --git a/packages/css/test/label-pattern.test.js b/packages/css/test/label-pattern.test.js index 92bf2203ef..94e54bc440 100644 --- a/packages/css/test/label-pattern.test.js +++ b/packages/css/test/label-pattern.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import styled from '@emotion/styled' import renderer from 'react-test-renderer' diff --git a/packages/css/test/no-babel/index.test.js b/packages/css/test/no-babel/index.test.js index 0695aa3db0..da31f40cf4 100644 --- a/packages/css/test/no-babel/index.test.js +++ b/packages/css/test/no-babel/index.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import renderer from 'react-test-renderer' import { css } from '@emotion/css' diff --git a/packages/css/test/no-babel/warnings.test.js b/packages/css/test/no-babel/warnings.test.js index 533e08a4ee..04228426d0 100644 --- a/packages/css/test/no-babel/warnings.test.js +++ b/packages/css/test/no-babel/warnings.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import { css } from '@emotion/css' console.error = jest.fn() diff --git a/packages/css/test/selectivity.test.js b/packages/css/test/selectivity.test.js index c6782b88d2..54e245e51a 100644 --- a/packages/css/test/selectivity.test.js +++ b/packages/css/test/selectivity.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import { css, sheet, flush } from '@emotion/css' describe('css', () => { diff --git a/packages/css/test/source-map/__snapshots__/source-map.test.js.snap b/packages/css/test/source-map/__snapshots__/source-map.test.js.snap index 44163b7fba..8d9faa3c9c 100644 --- a/packages/css/test/source-map/__snapshots__/source-map.test.js.snap +++ b/packages/css/test/source-map/__snapshots__/source-map.test.js.snap @@ -2,30 +2,30 @@ exports[`css css without newline or semicolon 1`] = ` ".css-6kh100-cls{color:hotpink;} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RG1CIiwiZmlsZSI6InNvdXJjZS1tYXAudGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndGVzdC11dGlscy9sZWdhY3ktZW52J1xuaW1wb3J0IHsgY3NzLCBzaGVldCwgZmx1c2ggfSBmcm9tICdAZW1vdGlvbi9jc3MnXG5cbmNvbnN0IGNvbW1lbnRQYXR0ZXJuID0gL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vZ1xuY29uc3QgZ2V0U3R5bGVzID0gc2hlZXQgPT5cbiAgc2hlZXQudGFnc1xuICAgIC5tYXAodGFnID0+IHRhZy50ZXh0Q29udGVudCB8fCAnJylcbiAgICAuam9pbignJylcbiAgICAucmVwbGFjZShjb21tZW50UGF0dGVybiwgJ1xcbiQmXFxuJylcblxuZGVzY3JpYmUoJ2NzcycsICgpID0+IHtcbiAgYWZ0ZXJFYWNoKCgpID0+IGZsdXNoKCkpXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIHN0eWxlcycsICgpID0+IHtcbiAgICBjb25zdCBtcSA9IFtcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA0MjBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDY0MHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogOTYwcHgpJ1xuICAgIF1cblxuICAgIGNzcyh7XG4gICAgICBjb2xvcjogJ2JsdWUnLFxuICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICcmIC5uYW1lJzoge1xuICAgICAgICAgIGNvbG9yOiAnYW1ldGh5c3QnLFxuICAgICAgICAgICcmOmZvY3VzJzoge1xuICAgICAgICAgICAgY29sb3I6ICdidXJseXdvb2QnLFxuICAgICAgICAgICAgW21xWzBdXToge1xuICAgICAgICAgICAgICBjb2xvcjogJ3JlYmVjY2FwdXJwbGUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb2xvcjogJ2dyZWVuJ1xuICAgICAgfVxuICAgIH0pXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG5cbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgbWVkaWEgcXVlcmllcycsICgpID0+IHtcbiAgICBjc3NgXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0MDBweCksIChtYXgtaGVpZ2h0OiA0MjBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgXG5cbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbiAgdGVzdCgnY3NzIHdpdGhvdXQgbmV3bGluZSBvciBzZW1pY29sb24nLCAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc3QgY2xzID0gY3NzYFxuICAgICAgY29sb3I6IGhvdHBpbms7XG4gICAgYFxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxufSlcbiJdfQ== */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RG1CIiwiZmlsZSI6InNvdXJjZS1tYXAudGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndGVzdC11dGlscy9zZXR1cC1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ " `; exports[`css source-map nested media queries 1`] = ` ".css-1vjvce5{} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ08iLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ08iLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ @media (max-width: 600px){.css-1vjvce5 h1{font-size:1.4rem;}} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ08iLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ08iLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ @media (max-width: 400px),(max-height: 420px){.css-1vjvce5 h1{font-size:1.1rem;}} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ08iLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ08iLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ " `; exports[`css source-map nested styles 1`] = ` -".css-3v0nwm{color:blue;} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ -.css-3v0nwm:hover{color:green;} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ -.css-3v0nwm:hover .name{color:amethyst;} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ -.css-3v0nwm:hover .name:focus{color:burlywood;} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ -@media(min-width: 420px){.css-3v0nwm:hover .name:focus{color:rebeccapurple;}} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL2xlZ2FjeS1lbnYnXG5pbXBvcnQgeyBjc3MsIHNoZWV0LCBmbHVzaCB9IGZyb20gJ0BlbW90aW9uL2NzcydcblxuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nXG5jb25zdCBnZXRTdHlsZXMgPSBzaGVldCA9PlxuICBzaGVldC50YWdzXG4gICAgLm1hcCh0YWcgPT4gdGFnLnRleHRDb250ZW50IHx8ICcnKVxuICAgIC5qb2luKCcnKVxuICAgIC5yZXBsYWNlKGNvbW1lbnRQYXR0ZXJuLCAnXFxuJCZcXG4nKVxuXG5kZXNjcmliZSgnY3NzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4gZmx1c2goKSlcbiAgdGVzdCgnc291cmNlLW1hcCBuZXN0ZWQgc3R5bGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1xID0gW1xuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDQyMHB4KScsXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNjQwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA5NjBweCknXG4gICAgXVxuXG4gICAgY3NzKHtcbiAgICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgJyYgLm5hbWUnOiB7XG4gICAgICAgICAgY29sb3I6ICdhbWV0aHlzdCcsXG4gICAgICAgICAgJyY6Zm9jdXMnOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2J1cmx5d29vZCcsXG4gICAgICAgICAgICBbbXFbMF1dOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmViZWNjYXB1cnBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiAnZ3JlZW4nXG4gICAgICB9XG4gICAgfSlcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBtZWRpYSBxdWVyaWVzJywgKCkgPT4ge1xuICAgIGNzc2BcbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSwgKG1heC1oZWlnaHQ6IDQyMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGBcblxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuICB0ZXN0KCdjc3Mgd2l0aG91dCBuZXdsaW5lIG9yIHNlbWljb2xvbicsICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBjbHMgPSBjc3NgXG4gICAgICBjb2xvcjogaG90cGluaztcbiAgICBgXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG59KVxuIl19 */ +".css-7lm4iz{color:blue;} +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ +.css-7lm4iz:hover{color:green;} +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ +.css-7lm4iz:hover .name{color:amethyst;} +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ +.css-7lm4iz:hover .name:focus{color:burlywood;} +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ +@media(min-width: 420px){.css-7lm4iz:hover .name:focus{color:rebeccapurple;}} +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkkiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd0ZXN0LXV0aWxzL3NldHVwLWVudidcbmltcG9ydCB7IGNzcywgc2hlZXQsIGZsdXNoIH0gZnJvbSAnQGVtb3Rpb24vY3NzJ1xuXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2dcbmNvbnN0IGdldFN0eWxlcyA9IHNoZWV0ID0+XG4gIHNoZWV0LnRhZ3NcbiAgICAubWFwKHRhZyA9PiB0YWcudGV4dENvbnRlbnQgfHwgJycpXG4gICAgLmpvaW4oJycpXG4gICAgLnJlcGxhY2UoY29tbWVudFBhdHRlcm4sICdcXG4kJlxcbicpXG5cbmRlc2NyaWJlKCdjc3MnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiBmbHVzaCgpKVxuICB0ZXN0KCdzb3VyY2UtbWFwIG5lc3RlZCBzdHlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbXEgPSBbXG4gICAgICAnQG1lZGlhKG1pbi13aWR0aDogNDIwcHgpJyxcbiAgICAgICdAbWVkaWEobWluLXdpZHRoOiA2NDBweCknLFxuICAgICAgJ0BtZWRpYShtaW4td2lkdGg6IDk2MHB4KSdcbiAgICBdXG5cbiAgICBjc3Moe1xuICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAnJiAubmFtZSc6IHtcbiAgICAgICAgICBjb2xvcjogJ2FtZXRoeXN0JyxcbiAgICAgICAgICAnJjpmb2N1cyc6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnYnVybHl3b29kJyxcbiAgICAgICAgICAgIFttcVswXV06IHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZWJlY2NhcHVycGxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6ICdncmVlbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGV4cGVjdChnZXRTdHlsZXMoc2hlZXQpKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIHRlc3QoJ3NvdXJjZS1tYXAgbmVzdGVkIG1lZGlhIHF1ZXJpZXMnLCAoKSA9PiB7XG4gICAgY3NzYFxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNDAwcHgpLCAobWF4LWhlaWdodDogNDIwcHgpIHtcbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYFxuXG4gICAgZXhwZWN0KGdldFN0eWxlcyhzaGVldCkpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG4gIHRlc3QoJ2NzcyB3aXRob3V0IG5ld2xpbmUgb3Igc2VtaWNvbG9uJywgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGNscyA9IGNzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGBcbiAgICBleHBlY3QoZ2V0U3R5bGVzKHNoZWV0KSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0= */ " `; diff --git a/packages/css/test/source-map/source-map.test.js b/packages/css/test/source-map/source-map.test.js index 62dce7ab1c..b40f988476 100644 --- a/packages/css/test/source-map/source-map.test.js +++ b/packages/css/test/source-map/source-map.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import { css, sheet, flush } from '@emotion/css' const commentPattern = /\/\*[\s\S]*?\*\//g diff --git a/packages/css/test/warnings.test.js b/packages/css/test/warnings.test.js index a692085a7b..5769bdd238 100644 --- a/packages/css/test/warnings.test.js +++ b/packages/css/test/warnings.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import { css } from '@emotion/css' import createCss from '@emotion/css/create-instance' import * as React from 'react' diff --git a/packages/jest/README.md b/packages/jest/README.md index 7f90e5d220..b7c28917e8 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -22,17 +22,7 @@ module.exports = { } ``` -To assist with shallow rendering, there's a custom enzyme snapshot serializer, that includes the `enzyme-to-json` serializer, which is available by importing `@emotion/jest/enzyme-serializer`. If you already have the `enzyme-to-json` serializer added to `snapshotSerializers`, it will need to be removed to allow this to work. - -```js -// jest.config.js -module.exports = { - // ... other config - snapshotSerializers: ['@emotion/jest/enzyme-serializer'] -} -``` - -Or you can add the serializer via the `expect.addSnapshotSerializer` method like so: (the example below is with react-test-renderer but @emotion/jest also works with enzyme and react-testing-library) +Or you can add the serializer via the `expect.addSnapshotSerializer` method like so: ```jsx import React from 'react' diff --git a/packages/jest/enzyme-serializer/package.json b/packages/jest/enzyme-serializer/package.json deleted file mode 100644 index 5afdff682d..0000000000 --- a/packages/jest/enzyme-serializer/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "dist/emotion-jest-enzyme-serializer.cjs.js", - "module": "dist/emotion-jest-enzyme-serializer.esm.js", - "types": "../types/enzyme-serializer" -} diff --git a/packages/jest/enzyme/package.json b/packages/jest/enzyme/package.json deleted file mode 100644 index b5e67c5a8f..0000000000 --- a/packages/jest/enzyme/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main": "dist/emotion-jest-enzyme.cjs.js", - "module": "dist/emotion-jest-enzyme.esm.js" -} diff --git a/packages/jest/package.json b/packages/jest/package.json index f1d7b4b345..f017a682c8 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -14,15 +14,6 @@ "import": "./dist/emotion-jest.cjs.mjs", "default": "./dist/emotion-jest.cjs.js" }, - "./enzyme": { - "types": { - "import": "./enzyme/dist/emotion-jest-enzyme.cjs.mjs", - "default": "./enzyme/dist/emotion-jest-enzyme.cjs.js" - }, - "module": "./enzyme/dist/emotion-jest-enzyme.esm.js", - "import": "./enzyme/dist/emotion-jest-enzyme.cjs.mjs", - "default": "./enzyme/dist/emotion-jest-enzyme.cjs.js" - }, "./serializer": { "types": { "import": "./serializer/dist/emotion-jest-serializer.cjs.mjs", @@ -32,15 +23,6 @@ "import": "./serializer/dist/emotion-jest-serializer.cjs.mjs", "default": "./serializer/dist/emotion-jest-serializer.cjs.js" }, - "./enzyme-serializer": { - "types": { - "import": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.cjs.mjs", - "default": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.cjs.js" - }, - "module": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.esm.js", - "import": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.cjs.mjs", - "default": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.cjs.js" - }, "./package.json": "./package.json" }, "types": "types/index.d.ts", @@ -104,9 +86,7 @@ "preconstruct": { "entrypoints": [ "./index.js", - "./serializer.js", - "./enzyme.js", - "./enzyme-serializer.js" + "./serializer.js" ] } } diff --git a/packages/jest/src/create-enzyme-serializer.js b/packages/jest/src/create-enzyme-serializer.js deleted file mode 100644 index 2178056037..0000000000 --- a/packages/jest/src/create-enzyme-serializer.js +++ /dev/null @@ -1,107 +0,0 @@ -/* import type { Options } from './create-serializer' */ -import { createSerializer as createEmotionSerializer } from './create-serializer' -import * as enzymeTickler from './enzyme-tickler' -import { createSerializer as createEnzymeToJsonSerializer } from 'enzyme-to-json' -import { - isEmotionCssPropElementType, - isStyledElementType, - unwrapFromPotentialFragment -} from './utils' - -const enzymeToJsonSerializer = createEnzymeToJsonSerializer({ - map: json => { - if (typeof json.node.type === 'string') { - return json - } - const isRealStyled = json.node.type.__emotion_real === json.node.type - if (isRealStyled) { - return { - ...json, - children: json.children.slice(-1) - } - } - return json - } -}) - -// this is a hack, leveraging the internal/implementation knowledge about the enzyme's ShallowWrapper -// there is no sane way to get this information otherwise though -const getUnrenderedElement = shallowWrapper => { - const symbols = Object.getOwnPropertySymbols(shallowWrapper) - const elementValues = symbols.filter(sym => { - const val = shallowWrapper[sym] - return !!val && val.$$typeof === Symbol.for('react.element') - }) - if (elementValues.length !== 1) { - throw new Error( - "Could not get unrendered element reliably from the Enzyme's ShallowWrapper. This is a bug in Emotion - please open an issue with repro steps included:\n" + - 'https://github.com/emotion-js/emotion/issues/new?assignees=&labels=bug%2C+needs+triage&template=--bug-report.md&title=' - ) - } - return shallowWrapper[elementValues[0]] -} - -const wrappedEnzymeSerializer = { - test: enzymeToJsonSerializer.test, - print: (enzymeWrapper, printer) => { - const isShallow = !!enzymeWrapper.dive - - if (isShallow && enzymeWrapper.root() === enzymeWrapper) { - const unrendered = getUnrenderedElement(enzymeWrapper) - if ( - isEmotionCssPropElementType(unrendered) || - isStyledElementType(unrendered) - ) { - return enzymeToJsonSerializer.print( - unwrapFromPotentialFragment(enzymeWrapper), - printer - ) - } - } - - return enzymeToJsonSerializer.print(enzymeWrapper, printer) - } -} - -export function createEnzymeSerializer({ - classNameReplacer, - DOMElements = true, - includeStyles = true -} /* : Options */ = {}) { - const emotionSerializer = createEmotionSerializer({ - classNameReplacer, - DOMElements, - includeStyles - }) - return { - test(node) { - return wrappedEnzymeSerializer.test(node) || emotionSerializer.test(node) - }, - serialize( - node, - config, - indentation /*: string */, - depth /*: number */, - refs, - printer /*: Function */ - ) { - if (wrappedEnzymeSerializer.test(node)) { - const tickled = enzymeTickler.tickle(node) - return wrappedEnzymeSerializer.print( - tickled, - // https://github.com/facebook/jest/blob/470ef2d29c576d6a10de344ec25d5a855f02d519/packages/pretty-format/src/index.ts#L281 - valChild => printer(valChild, config, indentation, depth, refs) - ) - } - // we know here it had to match against emotionSerializer - return emotionSerializer.serialize( - node, - config, - indentation, - depth, - refs, - printer - ) - } - } -} diff --git a/packages/jest/src/create-serializer.js b/packages/jest/src/create-serializer.js index 533b7ecf0c..d5b67ea2c4 100644 --- a/packages/jest/src/create-serializer.js +++ b/packages/jest/src/create-serializer.js @@ -1,11 +1,9 @@ import prettify from '@emotion/css-prettifier' import { replaceClassNames } from './replace-class-names' -import * as enzymeTickler from './enzyme-tickler' import { getClassNamesFromNodes, isReactElement, isEmotionCssPropElementType, - isEmotionCssPropEnzymeElement, isDOMElement, getStylesFromClassNames, getStyleElements, @@ -102,49 +100,11 @@ function getLabelsFromClassName(keys, className) { }).filter(Boolean) } -function isShallowEnzymeElement( - element /*: any */, - keys /*: string[] */, - labels /*: string[] */ -) { - const childClassNames = (element.children || []) - .map(({ props = {} }) => props.className || '') - .filter(Boolean) - - return !childClassNames.some(className => { - const childLabels = getLabelsFromClassName(keys, className) - return childLabels.every(childLabel => labels.includes(childLabel)) - }) -} - const createConvertEmotionElements = (keys /*: string[]*/) => (node /*: any*/) => { if (isPrimitive(node)) { return node } - if (isEmotionCssPropEnzymeElement(node)) { - const className = enzymeTickler.getTickledClassName(node.props.css) - const labels = getLabelsFromClassName(keys, className || '') - - if (isShallowEnzymeElement(node, keys, labels)) { - const emotionType = node.props.__EMOTION_TYPE_PLEASE_DO_NOT_USE__ - // emotionType will be a string for DOM elements - const type = - typeof emotionType === 'string' - ? emotionType - : emotionType.displayName || emotionType.name || 'Component' - return { - ...node, - props: filterEmotionProps({ - ...node.props, - className - }), - type - } - } else { - return node.children[node.children.length - 1] - } - } if (isEmotionCssPropElementType(node)) { return { ...node, diff --git a/packages/jest/src/enzyme-serializer.d.ts b/packages/jest/src/enzyme-serializer.d.ts deleted file mode 100644 index 7e9e849dfa..0000000000 --- a/packages/jest/src/enzyme-serializer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '../types/enzyme-serializer' diff --git a/packages/jest/src/enzyme-serializer.js b/packages/jest/src/enzyme-serializer.js deleted file mode 100644 index 2b73962978..0000000000 --- a/packages/jest/src/enzyme-serializer.js +++ /dev/null @@ -1,2 +0,0 @@ -import { createEnzymeSerializer } from './create-enzyme-serializer' -export const { test, serialize } = createEnzymeSerializer() diff --git a/packages/jest/src/enzyme-tickler.js b/packages/jest/src/enzyme-tickler.js deleted file mode 100644 index 45b52f72cd..0000000000 --- a/packages/jest/src/enzyme-tickler.js +++ /dev/null @@ -1,24 +0,0 @@ -import { unwrapFromPotentialFragment } from './utils' - -const tickledCssProps = new WeakMap() - -export const getTickledClassName = cssProp => tickledCssProps.get(cssProp) - -export const tickle = wrapper => { - const isShallow = typeof wrapper.dive === 'function' - - wrapper.find('EmotionCssPropInternal').forEach(el => { - const cssProp = el.props().css - - if (!cssProp) { - return - } - - const rendered = (isShallow ? el.dive() : el.children()).last() - tickledCssProps.set( - cssProp, - unwrapFromPotentialFragment(rendered).props().className - ) - }) - return wrapper -} diff --git a/packages/jest/src/enzyme.d.ts b/packages/jest/src/enzyme.d.ts deleted file mode 100644 index fdcaa2b47c..0000000000 --- a/packages/jest/src/enzyme.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '../types/enzyme' diff --git a/packages/jest/src/enzyme.js b/packages/jest/src/enzyme.js deleted file mode 100644 index 72fdee8bd1..0000000000 --- a/packages/jest/src/enzyme.js +++ /dev/null @@ -1,2 +0,0 @@ -export { createEnzymeSerializer } from './create-enzyme-serializer' -export { matchers } from './matchers' diff --git a/packages/jest/src/utils.js b/packages/jest/src/utils.js index acf2f871de..6f07d60756 100644 --- a/packages/jest/src/utils.js +++ b/packages/jest/src/utils.js @@ -94,16 +94,6 @@ export function unwrapFromPotentialFragment(node) { return node } -function getClassNamesFromEnzyme(selectors, nodeWithPotentialFragment) { - const node = unwrapFromPotentialFragment(nodeWithPotentialFragment) - // We need to dive in to get the className if we have a styled element from a shallow render - const isShallow = shouldDive(node) - const nodeWithClassName = findNodeWithClassName( - isShallow ? node.dive() : node - ) - return getClassNames(selectors, getClassNameProp(nodeWithClassName)) -} - function getClassNamesFromCheerio(selectors, node) { const classes = node.attr('class') return getClassNames(selectors, classes) @@ -135,12 +125,6 @@ export function isStyledElementType(val /* : any */) /* : boolean */ { return type.__emotion_real === type } -export function isEmotionCssPropEnzymeElement(val /* : any */) /*: boolean */ { - return ( - val.$$typeof === Symbol.for('react.test.json') && - val.type === 'EmotionCssPropInternal' - ) -} const domElementPattern = /^((HTML|SVG)\w*)?Element$/ export function isDOMElement(val) /*: boolean */ { @@ -152,19 +136,13 @@ export function isDOMElement(val) /*: boolean */ { ) } -function isEnzymeElement(val) /*: boolean */ { - return typeof val.findWhere === 'function' -} - function isCheerioElement(val) /*: boolean */ { return val.cheerio === '[cheerio object]' } export function getClassNamesFromNodes(nodes /*: Array */) { return nodes.reduce((selectors, node) => { - if (isEnzymeElement(node)) { - return getClassNamesFromEnzyme(selectors, node) - } else if (isCheerioElement(node)) { + if (isCheerioElement(node)) { return getClassNamesFromCheerio(selectors, node) } else if (isReactElement(node)) { return getClassNamesFromTestRenderer(selectors, node) diff --git a/packages/jest/test/__snapshots__/react-enzyme.test.js.snap b/packages/jest/test/__snapshots__/react-enzyme.test.js.snap deleted file mode 100644 index 12f2a6d524..0000000000 --- a/packages/jest/test/__snapshots__/react-enzyme.test.js.snap +++ /dev/null @@ -1,814 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`enzyme mount basic 1`] = ` -.emotion-0 { - background-color: red; -} - - -
- hello -
-
-`; - -exports[`enzyme mount conditional styles 1`] = ` -.emotion-0 { - background-color: black; -} - -
- - Test content - -
-`; - -exports[`enzyme mount displayName 1`] = ` -.emotion-0 { - color: hotpink; -} - - -
- Hello -
-
-`; - -exports[`enzyme mount empty styled 1`] = ` - -
- Hello -
-
-`; - -exports[`enzyme mount fragment with multiple css prop elements 1`] = ` -.emotion-0 { - background-color: hotpink; -} - -.emotion-1 { - background-color: green; -} - -.emotion-2 { - background-color: blue; -} - - -
-
-
- -`; - -exports[`enzyme mount multiple selected components 1`] = ` -[ - .emotion-0 { - background-color: hotpink; -} - -
  • - hello -
  • , - .emotion-0 { - background-color: blue; -} - -
  • - beautiful -
  • , - .emotion-0 { - background-color: green; -} - -
  • - world -
  • , -] -`; - -exports[`enzyme mount nested 1`] = ` -.emotion-0 { - background-color: red; -} - -
    - -
    - hello -
    -
    -
    -`; - -exports[`enzyme mount nested displayName 1`] = ` -.emotion-0 { - color: hotpink; -} - -
    - -
    - Hello -
    -
    -
    -`; - -exports[`enzyme mount nested styled 1`] = ` -.emotion-0 { - background-color: red; -} - -
    - -
    - Hello -
    -
    -
    -`; - -exports[`enzyme mount nested styled with css prop 1`] = ` -.emotion-0 { - background-color: black; -} - -.emotion-1 { - color: red; - background-color: black; -} - -
    - - -
    -`; - -exports[`enzyme mount parent and child using css property 1`] = ` -.emotion-0 { - background-color: black; -} - -.emotion-1 { - color: white; -} - -
    - Test content -
    -
    -`; - -exports[`enzyme mount styled 1`] = ` -.emotion-0 { - background-color: red; -} - - -
    - Hello -
    -
    -`; - -exports[`enzyme mount styled with css prop 1`] = ` -.emotion-0 { - background-color: black; -} - -.emotion-1 { - color: red; - background-color: black; -} - - - -`; - -exports[`enzyme mount theming 1`] = ` -.emotion-0 { - color: red; - border: 2px solid red; -} - -.emotion-2 { - color: blue; - border: 2px solid blue; -} - -
    - - - - - - -
    -`; - -exports[`enzyme mount unmatched selector 1`] = `null`; - -exports[`enzyme mount with array of styles as css prop 1`] = ` -.emotion-0 { - background-color: black; - color: white; -} - -
    - Test content -
    -`; - -exports[`enzyme mount with array of styles in a composite inner child 1`] = ` -.emotion-0 { - background-color: black; - color: white; -} - -
    - - - Test content - - -
    -`; - -exports[`enzyme mount with prop containing css element 1`] = ` -.emotion-0 { - background-color: blue; -} - - - Hello -

    - } -> -
    -

    - Hello -

    - - World! -
    -
    -`; - -exports[`enzyme mount with prop containing css element not at the top level 1`] = ` -.emotion-0 { - background-color: blue; -} - -
    - - Hello -

    - } - > -
    -

    - Hello -

    - - World! -
    -
    -
    -`; - -exports[`enzyme mount with prop containing css element with other label 1`] = ` -.emotion-0 { - background-color: blue; -} - - - Hello -

    - } -> - - } - > -

    - Hello -

    - - World! -
    -
    -`; - -exports[`enzyme mount with prop containing css element with other props 1`] = ` -.emotion-0 { - background-color: blue; -} - - - Hello -

    - } -> -
    -

    - Hello -

    - - World! -
    -
    -`; - -exports[`enzyme mount with prop containing regular element 1`] = ` - - Foo - - } -> - - -`; - -exports[`enzyme mount with styles on top level 1`] = ` -.emotion-0 { - background-color: red; -} - - -
    - Hello -
    -
    -`; - -exports[`enzyme shallow basic 1`] = ` -.emotion-0 { - background-color: red; -} - -
    - hello -
    -`; - -exports[`enzyme shallow conditional styles 1`] = ` -.emotion-0 { - background-color: black; -} - -
    - - Test content - -
    -`; - -exports[`enzyme shallow displayName 1`] = ` -.emotion-0 { - color: hotpink; -} - - -`; - -exports[`enzyme shallow empty styled 1`] = ` -
    - Hello -
    -`; - -exports[`enzyme shallow fragment with multiple css prop elements 1`] = ` -.emotion-0 { - background-color: hotpink; -} - -.emotion-1 { - background-color: green; -} - -.emotion-2 { - background-color: blue; -} - - -
    -
    -
    - -`; - -exports[`enzyme shallow multiple selected components 1`] = ` -[ - .emotion-0 { - background-color: hotpink; -} - -
  • - hello -
  • , - .emotion-0 { - background-color: blue; -} - -
  • - beautiful -
  • , - .emotion-0 { - background-color: green; -} - -
  • - world -
  • , -] -`; - -exports[`enzyme shallow nested 1`] = ` -
    - - hello - -
    -`; - -exports[`enzyme shallow nested displayName 1`] = ` -.emotion-0 { - color: hotpink; -} - -
    - -
    -`; - -exports[`enzyme shallow nested styled 1`] = ` -
    - - Hello - -
    -`; - -exports[`enzyme shallow nested styled with css prop 1`] = ` -.emotion-0 { - background-color: black; -} - -
    - -
    -`; - -exports[`enzyme shallow parent and child using css property 1`] = ` -.emotion-0 { - background-color: black; -} - -.emotion-1 { - color: white; -} - -
    - Test content -
    -
    -`; - -exports[`enzyme shallow styled 1`] = ` -.emotion-0 { - background-color: red; -} - -
    - Hello -
    -`; - -exports[`enzyme shallow styled with css prop 1`] = ` -.emotion-0 { - background-color: black; -} - - -`; - -exports[`enzyme shallow theming 1`] = ` -
    - - - - -
    -`; - -exports[`enzyme shallow unmatched selector 1`] = `null`; - -exports[`enzyme shallow with array of styles as css prop 1`] = ` -.emotion-0 { - background-color: black; - color: white; -} - -
    - Test content -
    -`; - -exports[`enzyme shallow with array of styles in a composite inner child 1`] = ` -.emotion-0 { - background-color: black; - color: white; -} - -
    - - Test content - -
    -`; - -exports[`enzyme shallow with prop containing css element 1`] = ` -.emotion-0 { - background-color: blue; -} - -
    -

    - Hello -

    - - World! -
    -`; - -exports[`enzyme shallow with prop containing css element not at the top level 1`] = ` -
    - - Hello -

    - } - > - World! -
    -
    -`; - -exports[`enzyme shallow with prop containing css element with other label 1`] = ` -.emotion-0 { - background-color: blue; -} - - - } -> -

    - Hello -

    - - World! -
    -`; - -exports[`enzyme shallow with prop containing css element with other props 1`] = ` -.emotion-0 { - background-color: blue; -} - -
    -

    - Hello -

    - - World! -
    -`; - -exports[`enzyme shallow with prop containing regular element 1`] = ` - -`; - -exports[`enzyme shallow with styles on top level 1`] = ` -.emotion-0 { - background-color: red; -} - - - Hello - -`; - -exports[`enzyme with prop containing css element in fragment 1`] = ` -.emotion-0 { - background-color: blue; -} - -
    - x - [ - "", -
    - y -
    , - ] -
    -`; diff --git a/packages/jest/test/matchers.test.js b/packages/jest/test/matchers.test.js index 13ac3c955f..6eb9a75adc 100644 --- a/packages/jest/test/matchers.test.js +++ b/packages/jest/test/matchers.test.js @@ -1,8 +1,7 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import renderer from 'react-test-renderer' /** @jsx jsx */ import * as React from 'react' -import * as enzyme from 'enzyme' import { css, jsx } from '@emotion/react' import styled from '@emotion/styled' import { matchers } from '@emotion/jest' @@ -322,72 +321,4 @@ describe('toHaveStyleRule', () => { `"\`toHaveStyleRule\` expects to receive a single element but it received an array."` ) }) - ;(isReact16 ? describe : describe.skip)('enzyme', () => { - test('supports enzyme `mount` method', () => { - const Component = () => ( -
    - -
    - ) - - const wrapper = enzyme.mount() - expect(wrapper).toHaveStyleRule('color', 'red') - expect(wrapper).not.toHaveStyleRule('width', '100%') - const svgNode = wrapper.find('svg') - expect(svgNode).toHaveStyleRule('width', '100%') - expect(svgNode).not.toHaveStyleRule('color', 'red') - }) - - test('supports enzyme `render` method', () => { - const Component = () => ( -
    - -
    - ) - - const wrapper = enzyme.render() - expect(wrapper).toHaveStyleRule('color', 'red') - expect(wrapper).not.toHaveStyleRule('width', '100%') - const svgNode = wrapper.find('svg') - expect(svgNode).toHaveStyleRule('width', '100%') - expect(svgNode).not.toHaveStyleRule('color', 'red') - }) - - test('supports enzyme `shallow` method', () => { - const Component = () => ( -
    - -
    - ) - - const wrapper = enzyme.shallow() - expect(wrapper).toHaveStyleRule('color', 'red') - expect(wrapper).not.toHaveStyleRule('width', '100%') - const svgNode = wrapper.childAt(0) - expect(svgNode).toHaveStyleRule('width', '100%') - expect(svgNode).not.toHaveStyleRule('color', 'red') - }) - - test('supports styled components', () => { - const Div = styled('div')` - color: red; - ` - const Svg = styled('svg')` - width: 100%; - ` - ;['mount', 'render', 'shallow'].forEach(method => { - const wrapper = enzyme[method]( -
    - -
    - ) - expect(wrapper).toHaveStyleRule('color', 'red') - expect(wrapper).not.toHaveStyleRule('width', '100%') - const svgNode = - method === 'render' ? wrapper.find('svg') : wrapper.find(Svg) - expect(svgNode).toHaveStyleRule('width', '100%') - expect(svgNode).not.toHaveStyleRule('color', 'red') - }) - }) - }) }) diff --git a/packages/jest/test/printer.test.js b/packages/jest/test/printer.test.js index bf59ae6fb1..2c22b2c186 100644 --- a/packages/jest/test/printer.test.js +++ b/packages/jest/test/printer.test.js @@ -1,5 +1,5 @@ import React from 'react' -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import renderer from 'react-test-renderer' import prettyFormat from 'pretty-format' /** @jsx jsx */ diff --git a/packages/jest/test/prod.test.js b/packages/jest/test/prod.test.js index 4e594e3c93..0e691ec7a0 100644 --- a/packages/jest/test/prod.test.js +++ b/packages/jest/test/prod.test.js @@ -1,4 +1,4 @@ -import 'test-utils/next-env' +import 'test-utils/setup-env' import renderer from 'react-test-renderer' /** @jsx jsx */ import * as React from 'react' diff --git a/packages/jest/test/react-enzyme.test.js b/packages/jest/test/react-enzyme.test.js deleted file mode 100644 index 487da8d954..0000000000 --- a/packages/jest/test/react-enzyme.test.js +++ /dev/null @@ -1,413 +0,0 @@ -import 'test-utils/enzyme-env' -/** @jsx jsx */ - -import jestInCase from 'jest-in-case' -import * as enzyme from 'enzyme' -import { - __unsafe_useEmotionCache, - css, - jsx, - ThemeProvider, - EmotionCache -} from '@emotion/react' -import styled from '@emotion/styled' -import React from 'react' -import toJson from 'enzyme-to-json' - -import { matchers } from '@emotion/jest' -import * as serializer from '@emotion/jest/enzyme-serializer' - -afterEach(() => { - let cache - function GetCache() { - cache = __unsafe_useEmotionCache() - return null - } - enzyme.shallow() - - cache.registered = {} - cache.inserted = {} - cache.sheet.flush() -}) - -const isReact16 = React.version.split('.')[0] === '16' - -expect.extend(matchers) -expect.addSnapshotSerializer(serializer) - -const identity = v => v - -const cases = { - basic: { - render() { - const Greeting = ({ children }) => ( -
    {children}
    - ) - return hello - } - }, - styled: { - render() { - const Greeting = styled.div` - background-color: red; - ` - return Hello - } - }, - 'styled with css prop': { - render() { - const style1 = css` - background-color: black; - ` - const Button = styled.button` - color: red; - ` - return - } - }, - nested: { - render() { - const Greeting = ({ children }) => ( -
    {children}
    - ) - return ( -
    - hello -
    - ) - } - }, - 'nested styled': { - render() { - const Greeting = styled.div` - background-color: red; - ` - return ( -
    - Hello -
    - ) - } - }, - 'nested styled with css prop': { - render() { - const style1 = css` - background-color: black; - ` - const Button = styled.button` - color: red; - ` - return ( -
    - -
    - ) - } - }, - 'empty styled': { - render() { - const Greeting = styled.div`` - return Hello - } - }, - 'with styles on top level': { - render() { - const Greeting = ({ children, className }) => ( -
    {children}
    - ) - return Hello - } - }, - 'with prop containing css element': { - render() { - const Greeting = ({ children, content }) => ( -
    - {content} {children} -
    - ) - return ( - Hello

    }> - World! -
    - ) - } - }, - 'with prop containing regular element': { - render() { - const Test = ({ element }) => element - return Foo} /> - } - }, - 'with prop containing css element not at the top level': { - render() { - const Greeting = ({ children, content }) => ( -
    - {content} {children} -
    - ) - - return ( -
    - - Hello -

    - } - > - World! -
    -
    - ) - } - }, - 'with prop containing css element with other props': { - render() { - const Greeting = ({ children, content }) => ( -
    - {content} {children} -
    - ) - - return ( - - Hello -

    - } - > - World! -
    - ) - } - }, - 'with prop containing css element with other label': { - render() { - const Thing = ({ content, children }) => { - return children - } - const Greeting = ({ children, content }) => ( - }> - {content} {children} - - ) - - return ( - - Hello -

    - } - > - World! -
    - ) - } - }, - 'with array of styles as css prop': { - render() { - const style1 = css` - background-color: black; - ` - - const style2 = css` - color: white; - ` - - return
    Test content
    - } - }, - 'with array of styles in a composite inner child': { - render() { - const style1 = css` - background-color: black; - ` - - const style2 = css` - color: white; - ` - - function Inner(props) { - return - } - - return ( -
    - Test content -
    - ) - } - }, - 'conditional styles': { - render() { - const style1 = css` - background-color: black; - ` - - const style2 = css` - color: white; - ` - - return ( -
    - Test content -
    - ) - } - }, - theming: { - render() { - const Button = styled.button` - color: ${props => props.theme.main ?? 'red'}; - border: 2px solid ${props => props.theme.main ?? 'red'}; - ` - - const theme = { - main: 'blue' - } - - return ( -
    - - - - -
    - ) - } - }, - displayName: { - render() { - const Comp = props =>
    Hello
    - Comp.displayName = 'CustomDisplayName' - return - } - }, - 'nested displayName': { - render() { - const Comp = props =>
    Hello
    - Comp.displayName = 'CustomDisplayName' - return ( -
    - -
    - ) - } - }, - 'parent and child using css property': { - render() { - const parentStyle = css` - background-color: black; - ` - - const childStyle = css` - color: white; - ` - - return ( -
    - Test content -
    -
    - ) - } - }, - 'fragment with multiple css prop elements': { - render() { - const Component = () => { - return ( - <> -
    -
    -
    - - ) - } - return - } - }, - 'multiple selected components': { - selector: tree => - // with simple `tree.find('[data-item]')` we get elements twice with `mount` since it selects both the css prop element and the host element - tree.findWhere( - n => typeof n.type() !== 'string' && n.props()['data-item'] - ), - render() { - return ( -
      -
    • - {'hello'} -
    • -
    • - {'beautiful'} -
    • -
    • - {'world'} -
    • -
    - ) - } - }, - 'unmatched selector': { - selector: tree => tree.find('div'), - render() { - return ( -
      -
    • {'hello'}
    • -
    • {'beautiful'}
    • -
    • {'world'}
    • -
    - ) - } - } -} - -;(isReact16 ? describe : describe.skip)('enzyme', () => { - jestInCase( - 'shallow', - ({ render, selector = identity }) => { - const wrapper = enzyme.shallow(render()) - expect(selector(wrapper)).toMatchSnapshot() - }, - cases - ) - - jestInCase( - 'mount', - ({ render, selector = identity }) => { - const wrapper = enzyme.mount(render()) - expect(selector(wrapper)).toMatchSnapshot() - }, - cases - ) - - test('with prop containing css element in fragment', () => { - const FragmentComponent = () => ( - - x
    y
    -
    - ) - - const wrapper = enzyme.mount( -
    - -
    - ) - - expect(toJson(wrapper, { mode: 'deep' })).toMatchSnapshot() - }) - - test('toHaveStyleRule on react.element', () => { - const tree = enzyme.mount( -
      -
    • hello
    • -
    - ) - expect(tree.find('li').get(0)).toHaveStyleRule( - 'background-color', - 'hotpink' - ) - }) -}) diff --git a/packages/jest/types/enzyme-serializer.d.ts b/packages/jest/types/enzyme-serializer.d.ts deleted file mode 100644 index e53372b1db..0000000000 --- a/packages/jest/types/enzyme-serializer.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// - -type SnapshotSerializerPlugin = Extract< - jest.SnapshotSerializerPlugin, - { serialize: any } -> - -export const test: SnapshotSerializerPlugin['test'] -export const serialize: SnapshotSerializerPlugin['serialize'] diff --git a/packages/jest/types/enzyme.d.ts b/packages/jest/types/enzyme.d.ts deleted file mode 100644 index 3fdd86e7fb..0000000000 --- a/packages/jest/types/enzyme.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -// TypeScript Version: 4.3 - -/// - -import { - CreateSerializerOptions, - EmotionMatchers, - StyleRuleOptions -} from './index' -export { CreateSerializerOptions, EmotionMatchers, StyleRuleOptions } - -type SnapshotSerializerPlugin = Extract< - jest.SnapshotSerializerPlugin, - { serialize: any } -> - -export const matchers: EmotionMatchers - -export function createEnzymeSerializer( - options?: CreateSerializerOptions -): SnapshotSerializerPlugin diff --git a/packages/primitives/package.json b/packages/primitives/package.json index 3553ca13ab..0126f1f8e1 100644 --- a/packages/primitives/package.json +++ b/packages/primitives/package.json @@ -18,8 +18,6 @@ "react-primitives": "^0.8.1" }, "devDependencies": { - "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.5", "react": "16.14.0", "react-primitives": "^0.8.1" }, diff --git a/packages/react/__tests__/babel/css.js b/packages/react/__tests__/babel/css.js index 44db96ea29..57ceef7bf6 100644 --- a/packages/react/__tests__/babel/css.js +++ b/packages/react/__tests__/babel/css.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { jsx, css } from '@emotion/react' import renderer from 'react-test-renderer' diff --git a/packages/react/__tests__/class-names.js b/packages/react/__tests__/class-names.js index c6edd021d3..6b214ddee1 100644 --- a/packages/react/__tests__/class-names.js +++ b/packages/react/__tests__/class-names.js @@ -1,5 +1,5 @@ import * as React from 'react' -import 'test-utils/next-env' +import 'test-utils/setup-env' import { ClassNames, ThemeProvider } from '@emotion/react' import renderer from 'react-test-renderer' diff --git a/packages/react/__tests__/css-cache-hash.js b/packages/react/__tests__/css-cache-hash.js index f7428bf46c..ef885b7e70 100644 --- a/packages/react/__tests__/css-cache-hash.js +++ b/packages/react/__tests__/css-cache-hash.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { jsx, css } from '@emotion/react' import { serializeStyles } from '@emotion/serialize' import * as renderer from 'react-test-renderer' diff --git a/packages/react/__tests__/css.js b/packages/react/__tests__/css.js index c0084b03fb..510e143a1e 100644 --- a/packages/react/__tests__/css.js +++ b/packages/react/__tests__/css.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { safeQuerySelector } from 'test-utils' import * as React from 'react' import { jsx, css, Global, CacheProvider, ThemeProvider } from '@emotion/react' diff --git a/packages/react/__tests__/custom-cache.js b/packages/react/__tests__/custom-cache.js index 43907de7a4..8062dae39e 100644 --- a/packages/react/__tests__/custom-cache.js +++ b/packages/react/__tests__/custom-cache.js @@ -4,7 +4,7 @@ import { CacheProvider, Global, jsx } from '@emotion/react' import { StyleSheet } from '@emotion/sheet' import renderer from 'react-test-renderer' import { safeQuerySelector } from 'test-utils' -import 'test-utils/next-env' +import 'test-utils/setup-env' function stylisPlugin(element) { if (element.type === 'decl' && element.value.startsWith('color:')) { diff --git a/packages/react/__tests__/keyframes.js b/packages/react/__tests__/keyframes.js index 481f866e08..2e13f0652f 100644 --- a/packages/react/__tests__/keyframes.js +++ b/packages/react/__tests__/keyframes.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { jsx, css, keyframes } from '@emotion/react' import { safeQuerySelector, throwIfFalsy } from 'test-utils' import cases from 'jest-in-case' diff --git a/packages/react/__tests__/legacy-class-name.js b/packages/react/__tests__/legacy-class-name.js index 82345c4203..e67518b5f5 100644 --- a/packages/react/__tests__/legacy-class-name.js +++ b/packages/react/__tests__/legacy-class-name.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { jsx, css } from '@emotion/react' import renderer from 'react-test-renderer' diff --git a/packages/react/__tests__/theme-provider.dom.js b/packages/react/__tests__/theme-provider.dom.js index c3ea4e0f47..91bf4fe812 100644 --- a/packages/react/__tests__/theme-provider.dom.js +++ b/packages/react/__tests__/theme-provider.dom.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { render, fireEvent } from '@testing-library/react' import { safeQuerySelector } from 'test-utils' import * as React from 'react' diff --git a/packages/react/__tests__/theme-provider.js b/packages/react/__tests__/theme-provider.js index 1e6b84bc64..2d1ff63e24 100644 --- a/packages/react/__tests__/theme-provider.js +++ b/packages/react/__tests__/theme-provider.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { ignoreConsoleErrors } from 'test-utils' import { jsx, ThemeProvider } from '@emotion/react' import renderer from 'react-test-renderer' diff --git a/packages/react/__tests__/use-theme.js b/packages/react/__tests__/use-theme.js index 301b5c3f07..130fd91594 100644 --- a/packages/react/__tests__/use-theme.js +++ b/packages/react/__tests__/use-theme.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import * as renderer from 'react-test-renderer' import { jsx, useTheme, ThemeProvider } from '@emotion/react' diff --git a/packages/react/__tests__/warnings.js b/packages/react/__tests__/warnings.js index 98083bb84f..55d68d4cae 100644 --- a/packages/react/__tests__/warnings.js +++ b/packages/react/__tests__/warnings.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import { jsx, css, Global, keyframes, ClassNames } from '@emotion/react' import styled from '@emotion/styled' import renderer from 'react-test-renderer' diff --git a/packages/styled/__tests__/as-prop.js b/packages/styled/__tests__/as-prop.js index 69c57c4375..1dd805ad43 100644 --- a/packages/styled/__tests__/as-prop.js +++ b/packages/styled/__tests__/as-prop.js @@ -1,4 +1,4 @@ -import 'test-utils/next-env' +import 'test-utils/setup-env' import React from 'react' import { render, cleanup } from '@testing-library/react' import styled from '@emotion/styled' diff --git a/packages/styled/__tests__/edge-cases.js b/packages/styled/__tests__/edge-cases.js index 3bf21f72f2..30b08bf534 100644 --- a/packages/styled/__tests__/edge-cases.js +++ b/packages/styled/__tests__/edge-cases.js @@ -1,4 +1,4 @@ -import 'test-utils/next-env' +import 'test-utils/setup-env' import * as React from 'react' import renderer from 'react-test-renderer' import styled from '@emotion/styled' diff --git a/packages/styled/__tests__/styled.js b/packages/styled/__tests__/styled.js index 1d83e00198..1890607fcb 100644 --- a/packages/styled/__tests__/styled.js +++ b/packages/styled/__tests__/styled.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/next-env' +import 'test-utils/setup-env' import renderer from 'react-test-renderer' import hoistNonReactStatics from 'hoist-non-react-statics' import styled from '@emotion/styled' diff --git a/packages/styled/__tests__/warnings.js b/packages/styled/__tests__/warnings.js index a9e985d2cf..af276d574c 100644 --- a/packages/styled/__tests__/warnings.js +++ b/packages/styled/__tests__/warnings.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import * as React from 'react' import { css } from '@emotion/react' import styled from '@emotion/styled' diff --git a/packages/styled/test/babel-plugin.test.js b/packages/styled/test/babel-plugin.test.js index c1c9492f20..053ba35078 100644 --- a/packages/styled/test/babel-plugin.test.js +++ b/packages/styled/test/babel-plugin.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import * as renderer from 'react-test-renderer' import styled from '@emotion/styled' diff --git a/packages/styled/test/component-selector.test.js b/packages/styled/test/component-selector.test.js index bc0cf94e53..f87565d585 100644 --- a/packages/styled/test/component-selector.test.js +++ b/packages/styled/test/component-selector.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import styled from '@emotion/styled' import * as renderer from 'react-test-renderer' diff --git a/packages/styled/test/composition.test.js b/packages/styled/test/composition.test.js index 208ac0fd19..a4676b9dd8 100644 --- a/packages/styled/test/composition.test.js +++ b/packages/styled/test/composition.test.js @@ -1,5 +1,5 @@ /** @jsx jsx */ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import * as renderer from 'react-test-renderer' import { jsx, css } from '@emotion/react' import styled from '@emotion/styled' diff --git a/packages/styled/test/index.test.js b/packages/styled/test/index.test.js index d8aaffa5d7..bca425ef6e 100644 --- a/packages/styled/test/index.test.js +++ b/packages/styled/test/index.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import * as renderer from 'react-test-renderer' import { css } from '@emotion/react' diff --git a/packages/styled/test/prop-filtering.test.js b/packages/styled/test/prop-filtering.test.js index 7d776bf19a..5931a974c0 100644 --- a/packages/styled/test/prop-filtering.test.js +++ b/packages/styled/test/prop-filtering.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import * as renderer from 'react-test-renderer' import styled from '@emotion/styled' diff --git a/packages/styled/test/theming.dom.test.js b/packages/styled/test/theming.dom.test.js index bae7d46f71..e56d450710 100644 --- a/packages/styled/test/theming.dom.test.js +++ b/packages/styled/test/theming.dom.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import styled from '@emotion/styled' import { ThemeProvider } from '@emotion/react' diff --git a/packages/styled/test/theming.test.js b/packages/styled/test/theming.test.js index 69a1431d66..18375f21b5 100644 --- a/packages/styled/test/theming.test.js +++ b/packages/styled/test/theming.test.js @@ -1,4 +1,4 @@ -import 'test-utils/legacy-env' +import 'test-utils/setup-env' import React from 'react' import * as renderer from 'react-test-renderer' import styled from '@emotion/styled' diff --git a/scripts/test-utils/enzyme-env.js b/scripts/test-utils/enzyme-env.js deleted file mode 100644 index 88c8c3b323..0000000000 --- a/scripts/test-utils/enzyme-env.js +++ /dev/null @@ -1,4 +0,0 @@ -import Enzyme from 'enzyme' -import Adapter from 'enzyme-adapter-react-16' - -Enzyme.configure({ adapter: new Adapter() }) diff --git a/scripts/test-utils/legacy-env.js b/scripts/test-utils/legacy-env.js deleted file mode 100644 index 6810e1cbc9..0000000000 --- a/scripts/test-utils/legacy-env.js +++ /dev/null @@ -1,5 +0,0 @@ -/* eslint-env jest */ -import 'test-utils/enzyme-env' -import { createEnzymeSerializer } from '@emotion/jest/enzyme' - -expect.addSnapshotSerializer(createEnzymeSerializer()) diff --git a/scripts/test-utils/next-env.js b/scripts/test-utils/setup-env.js similarity index 100% rename from scripts/test-utils/next-env.js rename to scripts/test-utils/setup-env.js diff --git a/yarn.lock b/yarn.lock index d5aac40662..a5121e8ee2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2873,8 +2873,6 @@ __metadata: "@emotion/babel-plugin": ^11.11.0 "@emotion/is-prop-valid": ^1.2.1 "@emotion/primitives-core": ^11.13.0 - enzyme: ^3.11.0 - enzyme-adapter-react-16: ^1.15.5 react: 16.14.0 react-primitives: ^0.8.1 peerDependencies: @@ -7400,25 +7398,6 @@ __metadata: languageName: node linkType: hard -"airbnb-prop-types@npm:^2.16.0": - version: 2.16.0 - resolution: "airbnb-prop-types@npm:2.16.0" - dependencies: - array.prototype.find: ^2.1.1 - function.prototype.name: ^1.1.2 - is-regex: ^1.1.0 - object-is: ^1.1.2 - object.assign: ^4.1.0 - object.entries: ^1.1.2 - prop-types: ^15.7.2 - prop-types-exact: ^1.2.0 - react-is: ^16.13.1 - peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0-alpha - checksum: 393a5988b99f122c4b935296a6b8c8cbd10345418d67d547cdbcd71d57636cb9abdf9d6556940f70d0b76c3f83448627376557a75b5faf570fb8d262ed4a472f - languageName: node - linkType: hard - "ajv-errors@npm:^1.0.0": version: 1.0.1 resolution: "ajv-errors@npm:1.0.1" @@ -7922,13 +7901,6 @@ __metadata: languageName: node linkType: hard -"array-filter@npm:^1.0.0": - version: 1.0.0 - resolution: "array-filter@npm:1.0.0" - checksum: 467054291f522d7f633b1f5e79aac9008ade50a7354e0178d9ec8f0091ec03bc19a41d4eb22985daf2279a5c27be6d7cf410733539e7fccb0742145b89aca438 - languageName: node - linkType: hard - "array-filter@npm:~0.0.0": version: 0.0.1 resolution: "array-filter@npm:0.0.1" @@ -8046,16 +8018,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.find@npm:^2.1.1": - version: 2.1.1 - resolution: "array.prototype.find@npm:2.1.1" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.4 - checksum: 805574b1446324ace4211b4942503dd4c7e043491fa67860d6935ae5f35b33cf36647da8c19bed7e19287c5088f1d02688d4fd5ab6c34944f510220f4b7011ea - languageName: node - linkType: hard - "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" @@ -9971,20 +9933,6 @@ __metadata: languageName: node linkType: hard -"cheerio@npm:^1.0.0-rc.3": - version: 1.0.0-rc.3 - resolution: "cheerio@npm:1.0.0-rc.3" - dependencies: - css-select: ~1.2.0 - dom-serializer: ~0.1.1 - entities: ~1.1.1 - htmlparser2: ^3.9.1 - lodash: ^4.15.0 - parse5: ^3.0.1 - checksum: 90163e8f360d3a9ac27d7ee83edd891236cad63df75e4fde5efcc27269996716a3f8c8dfcefaa2e77ddd6a21c8e54ed6169138096c869913e571abe2264f36fe - languageName: node - linkType: hard - "chokidar@npm:^2.1.8": version: 2.1.8 resolution: "chokidar@npm:2.1.8" @@ -11116,7 +11064,7 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^1.1.0, css-select@npm:~1.2.0": +"css-select@npm:^1.1.0": version: 1.2.0 resolution: "css-select@npm:1.2.0" dependencies: @@ -12190,13 +12138,6 @@ __metadata: languageName: node linkType: hard -"discontinuous-range@npm:1.0.0": - version: 1.0.0 - resolution: "discontinuous-range@npm:1.0.0" - checksum: 8ee88d7082445b6eadc7c03bebe6dc978f96760c45e9f65d16ca66174d9e086a9e3855ee16acf65625e1a07a846a17de674f02a5964a6aebe5963662baf8b5c8 - languageName: node - linkType: hard - "dns-equal@npm:^1.0.0": version: 1.0.0 resolution: "dns-equal@npm:1.0.0" @@ -12288,16 +12229,6 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:~0.1.1": - version: 0.1.1 - resolution: "dom-serializer@npm:0.1.1" - dependencies: - domelementtype: ^1.3.0 - entities: ^1.1.1 - checksum: 4f6a3eff802273741931cfd3c800fab4e683236eed10628d6605f52538a6bc0ce4770f3ca2ad68a27412c103ae9b6cdaed3c0a8e20d2704192bde497bc875215 - languageName: node - linkType: hard - "domain-browser@npm:^1.1.1": version: 1.2.0 resolution: "domain-browser@npm:1.2.0" @@ -12312,7 +12243,7 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:1, domelementtype@npm:^1.3.0, domelementtype@npm:^1.3.1": +"domelementtype@npm:1, domelementtype@npm:^1.3.1": version: 1.3.1 resolution: "domelementtype@npm:1.3.1" checksum: 7893da40218ae2106ec6ffc146b17f203487a52f5228b032ea7aa470e41dfe03e1bd762d0ee0139e792195efda765434b04b43cddcf63207b098f6ae44b36ad6 @@ -12645,9 +12576,6 @@ __metadata: bundlesize: ^0.13.2 codecov: ^2.3.1 cssjanus: ^1.2.0 - enzyme: ^3.11.0 - enzyme-adapter-react-16: ^1.15.5 - enzyme-to-json: ^3.6.1 eslint: ^8.57.0 eslint-config-prettier: ^9.1.0 eslint-config-react: ^1.1.7 @@ -12808,7 +12736,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^1.1.1, entities@npm:~1.1.1": +"entities@npm:^1.1.1": version: 1.1.2 resolution: "entities@npm:1.1.2" checksum: d537b02799bdd4784ffd714d000597ed168727bddf4885da887c5a491d735739029a00794f1998abbf35f3f6aeda32ef5c15010dca1817d401903a501b6d3e05 @@ -12852,53 +12780,6 @@ __metadata: languageName: node linkType: hard -"enzyme-adapter-react-16@npm:^1.15.5": - version: 1.15.5 - resolution: "enzyme-adapter-react-16@npm:1.15.5" - dependencies: - enzyme-adapter-utils: ^1.13.1 - enzyme-shallow-equal: ^1.0.4 - has: ^1.0.3 - object.assign: ^4.1.0 - object.values: ^1.1.1 - prop-types: ^15.7.2 - react-is: ^16.13.1 - react-test-renderer: ^16.0.0-0 - semver: ^5.7.0 - peerDependencies: - enzyme: ^3.0.0 - react: ^16.0.0-0 - react-dom: ^16.0.0-0 - checksum: 3e1a7e1bff19721a960c917d84fc057e1429b8d63ea74fcc284103571dc3348f48de1d32e4eee17664b41f5eb0c5caf0f0f3077940efb9553901e8c837dd72bf - languageName: node - linkType: hard - -"enzyme-adapter-utils@npm:^1.13.1": - version: 1.13.1 - resolution: "enzyme-adapter-utils@npm:1.13.1" - dependencies: - airbnb-prop-types: ^2.16.0 - function.prototype.name: ^1.1.2 - object.assign: ^4.1.0 - object.fromentries: ^2.0.2 - prop-types: ^15.7.2 - semver: ^5.7.1 - peerDependencies: - react: 0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0 - checksum: 5e3300e66a4d3b035a949022ecba45359b5047b9e112b733773880ad91831ec830af7e23ca6987a0db2a5f8e7c6eb1d00233402e9efceb7181d7790a0211ca47 - languageName: node - linkType: hard - -"enzyme-shallow-equal@npm:^1.0.1, enzyme-shallow-equal@npm:^1.0.4": - version: 1.0.4 - resolution: "enzyme-shallow-equal@npm:1.0.4" - dependencies: - has: ^1.0.3 - object-is: ^1.1.2 - checksum: 54bbad0955683f09252568bfcb9d7e934a27c06634057db9e82b54c0d9f7a27b6160d77643177d973c133b87d404f284cc6aa0481c0a1c81cdff05b072e2bb49 - languageName: node - linkType: hard - "enzyme-to-json@npm:^3.6.1": version: 3.6.1 resolution: "enzyme-to-json@npm:3.6.1" @@ -12912,36 +12793,6 @@ __metadata: languageName: node linkType: hard -"enzyme@npm:^3.11.0": - version: 3.11.0 - resolution: "enzyme@npm:3.11.0" - dependencies: - array.prototype.flat: ^1.2.3 - cheerio: ^1.0.0-rc.3 - enzyme-shallow-equal: ^1.0.1 - function.prototype.name: ^1.1.2 - has: ^1.0.3 - html-element-map: ^1.2.0 - is-boolean-object: ^1.0.1 - is-callable: ^1.1.5 - is-number-object: ^1.0.4 - is-regex: ^1.0.5 - is-string: ^1.0.5 - is-subset: ^0.1.1 - lodash.escape: ^4.0.1 - lodash.isequal: ^4.5.0 - object-inspect: ^1.7.0 - object-is: ^1.0.2 - object.assign: ^4.1.0 - object.entries: ^1.1.1 - object.values: ^1.1.1 - raf: ^3.4.1 - rst-selector-parser: ^2.2.3 - string.prototype.trim: ^1.2.1 - checksum: 69ae80049c3f405122b8e619f1cf8b04f32b3cc2b6134c29ed8c0f05e87a0b15080f1121096ec211954a710f4787300af9157078c863012de87eee16e98e64ea - languageName: node - linkType: hard - "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -13002,7 +12853,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.0, es-abstract@npm:^1.17.0-next.1, es-abstract@npm:^1.17.4, es-abstract@npm:^1.17.5": +"es-abstract@npm:^1.17.0, es-abstract@npm:^1.17.0-next.1, es-abstract@npm:^1.17.5": version: 1.17.7 resolution: "es-abstract@npm:1.17.7" dependencies: @@ -15174,17 +15025,6 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.2": - version: 1.1.2 - resolution: "function.prototype.name@npm:1.1.2" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.0-next.1 - functions-have-names: ^1.2.0 - checksum: 68b4e1fc4bf3a6a88ac5a69d84f46c33c24dc83db33123b6f11c16330c9aa65ac0e7c6e31654f8429cf5229d2a83eb2673641fc059ad5a98d6c44184589b871d - languageName: node - linkType: hard - "function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" @@ -15204,13 +15044,6 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.0": - version: 1.2.1 - resolution: "functions-have-names@npm:1.2.1" - checksum: 34a3f18ce1d6ce54b9e7df3209d25718106206aee3951ae82a639dbda71c7c57112836628734b4ba18aeddf5f6e8d8c92c7b825df8cbe1ef8b6f683afecaf38a - languageName: node - linkType: hard - "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -16269,15 +16102,6 @@ __metadata: languageName: node linkType: hard -"html-element-map@npm:^1.2.0": - version: 1.2.0 - resolution: "html-element-map@npm:1.2.0" - dependencies: - array-filter: ^1.0.0 - checksum: b5e7cad2da46cce47b4b595f60a59eb3e933202030302885e705bef16bd2ac016d4a1bba1ef812c831802d04fc6b0c6d7d918c6fb069da6a61e7b7623f75124e - languageName: node - linkType: hard - "html-encoding-sniffer@npm:^1.0.2": version: 1.0.2 resolution: "html-encoding-sniffer@npm:1.0.2" @@ -16410,7 +16234,7 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^3.3.0, htmlparser2@npm:^3.9.1, htmlparser2@npm:^3.9.2": +"htmlparser2@npm:^3.3.0, htmlparser2@npm:^3.9.2": version: 3.10.1 resolution: "htmlparser2@npm:3.10.1" dependencies: @@ -17280,13 +17104,6 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.0.1": - version: 1.0.1 - resolution: "is-boolean-object@npm:1.0.1" - checksum: a357d1d80f621e720110044e5c23a106b252bc41a4183a63e28cfbb3aae8485225609a3cd4bba28418de699a77967a611a7622478c40285bc7ec29a611a2eb6b - languageName: node - linkType: hard - "is-boolean-object@npm:^1.1.0": version: 1.1.0 resolution: "is-boolean-object@npm:1.1.0" @@ -17324,7 +17141,7 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.5, is-callable@npm:^1.2.2": +"is-callable@npm:^1.2.2": version: 1.2.2 resolution: "is-callable@npm:1.2.2" checksum: 2bbf65bd5d39ccad3cae3954c482019466565a9b8027769a21cf2deebb25c195fb10f4974295b6118a815f6be3440bd7b7555ac742cf145f65a6a7d2484ebc3a @@ -17903,7 +17720,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.5, is-regex@npm:^1.1.0, is-regex@npm:^1.1.1": +"is-regex@npm:^1.1.1": version: 1.1.1 resolution: "is-regex@npm:1.1.1" dependencies: @@ -18015,13 +17832,6 @@ __metadata: languageName: node linkType: hard -"is-subset@npm:^0.1.1": - version: 0.1.1 - resolution: "is-subset@npm:0.1.1" - checksum: 97b8d7852af165269b7495095691a6ce6cf20bdfa1f846f97b4560ee190069686107af4e277fbd93aa0845c4d5db704391460ff6e9014aeb73264ba87893df44 - languageName: node - linkType: hard - "is-svg@npm:^3.0.0": version: 3.0.0 resolution: "is-svg@npm:3.0.0" @@ -20443,27 +20253,6 @@ __metadata: languageName: node linkType: hard -"lodash.escape@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.escape@npm:4.0.1" - checksum: fcb54f457497256964d619d5cccbd80a961916fca60df3fe0fa3e7f052715c2944c0ed5aefb4f9e047d127d44aa2d55555f3350cb42c6549e9e293fb30b41e7f - languageName: node - linkType: hard - -"lodash.flattendeep@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.flattendeep@npm:4.4.0" - checksum: 8521c919acac3d4bcf0aaf040c1ca9cb35d6c617e2d72e9b4d51c9a58b4366622cd6077441a18be626c3f7b28227502b3bf042903d447b056ee7e0b11d45c722 - languageName: node - linkType: hard - -"lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 - languageName: node - linkType: hard - "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -20532,7 +20321,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:>=3.5 <5, lodash@npm:^4.15.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.4, lodash@npm:^4.17.5, lodash@npm:^4.3.0": +"lodash@npm:>=3.5 <5, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.4, lodash@npm:^4.17.5, lodash@npm:^4.3.0": version: 4.17.15 resolution: "lodash@npm:4.17.15" checksum: bb689bc88c0645b7002a045cdbe32292ae51d5d2a6f6a5272cb5a5ace9b06700bb3d30c6be6ecfae9a70f9c943f60e90765033fc7ff706cf9219374eeda314ad @@ -22484,13 +22273,6 @@ __metadata: languageName: node linkType: hard -"moo@npm:^0.4.3": - version: 0.4.3 - resolution: "moo@npm:0.4.3" - checksum: f13bfb22ea62fc1e3584029d2efd62add90bf1dcb14de2a1eb9d59552a7f2ac3710739c0270e525049e48e58105effd93f8563520d687cae1ab7d76216ff6c2b - languageName: node - linkType: hard - "move-concurrently@npm:^1.0.1": version: 1.0.1 resolution: "move-concurrently@npm:1.0.1" @@ -22684,24 +22466,6 @@ __metadata: languageName: node linkType: hard -"nearley@npm:^2.7.10": - version: 2.18.0 - resolution: "nearley@npm:2.18.0" - dependencies: - commander: ^2.19.0 - moo: ^0.4.3 - railroad-diagrams: ^1.0.0 - randexp: 0.4.6 - semver: ^5.4.1 - bin: - nearley-railroad: bin/nearley-railroad.js - nearley-test: bin/nearley-test.js - nearley-unparse: bin/nearley-unparse.js - nearleyc: bin/nearleyc.js - checksum: 5641c0bfb64c9ff2beae5697d96aa7df9826de1d73726eb8d9289575726c8285c281f3d93da1746bf88100537903cc9505ae70ae4cf929470934e3d58a24daa3 - languageName: node - linkType: hard - "needle@npm:^2.2.1": version: 2.4.0 resolution: "needle@npm:2.4.0" @@ -23446,7 +23210,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.7.0, object-inspect@npm:^1.8.0": +"object-inspect@npm:^1.8.0": version: 1.8.0 resolution: "object-inspect@npm:1.8.0" checksum: 1bb4ed43972ad29537bee9b2b3f543d7e6463ee3b929048ecddcb50f7796c418c679ba2104f2e37cd7fa486782b6278b9d1c9cccb4bbc7ca17cd529f3ae4dc1f @@ -23470,16 +23234,6 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.0.2, object-is@npm:^1.1.2": - version: 1.1.3 - resolution: "object-is@npm:1.1.3" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.1 - checksum: 8b03d2706f489b4f86c1de803e16389bdf7facd6e715c044bd898376d370b98a47aafdf64c26be6c6151e57cf8b4e499210d2768935b24b369dac90ad2ce8a19 - languageName: node - linkType: hard - "object-keys@npm:^1.0.11, object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -23562,17 +23316,6 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.1, object.entries@npm:^1.1.2": - version: 1.1.2 - resolution: "object.entries@npm:1.1.2" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.5 - has: ^1.0.3 - checksum: fa97173d30312086b6adbff2b87b60799656c7aca5016f2bc69b20f313125e7763ca5bc1c1cbfd0949942291cc1b5d4cdfd362817dc6ab79f136c0e5df072e64 - languageName: node - linkType: hard - "object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" @@ -23584,18 +23327,6 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.2": - version: 2.0.2 - resolution: "object.fromentries@npm:2.0.2" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.0-next.1 - function-bind: ^1.1.1 - has: ^1.0.3 - checksum: 950ab9e9064814a1531d84cc2d0237120035514d9038d3e24bfca849ec612c5036398bd7969145431b16c4752fd216c6420dd86dc2cd6d4a48ff8ca8d1111414 - languageName: node - linkType: hard - "object.fromentries@npm:^2.0.4": version: 2.0.4 resolution: "object.fromentries@npm:2.0.4" @@ -24387,15 +24118,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^3.0.1": - version: 3.0.3 - resolution: "parse5@npm:3.0.3" - dependencies: - "@types/node": "*" - checksum: 6a82d59d60496f4a8bba99daee37eda728adb403197b9c9a163dcc02e369758992bcc67f1618d4f1445f4b12e7651e001c2847e446b8376d4d706e1d571f570d - languageName: node - linkType: hard - "parse5@npm:^7.0.0, parse5@npm:^7.1.1": version: 7.1.2 resolution: "parse5@npm:7.1.2" @@ -26411,17 +26133,6 @@ __metadata: languageName: node linkType: hard -"prop-types-exact@npm:^1.2.0": - version: 1.2.0 - resolution: "prop-types-exact@npm:1.2.0" - dependencies: - has: ^1.0.3 - object.assign: ^4.1.0 - reflect.ownkeys: ^0.2.0 - checksum: 21676a16d5b2623c345ca938554faba7bf29c6ad589eac3f490eda2207bcfd8d25cb3dfda5e5f8e6805239aabd2c6943f7bfbe726a1de708bae2b7a01c03eead - languageName: node - linkType: hard - "prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": version: 15.7.2 resolution: "prop-types@npm:15.7.2" @@ -26694,23 +26405,6 @@ __metadata: languageName: node linkType: hard -"railroad-diagrams@npm:^1.0.0": - version: 1.0.0 - resolution: "railroad-diagrams@npm:1.0.0" - checksum: 9e312af352b5ed89c2118edc0c06cef2cc039681817f65266719606e4e91ff6ae5374c707cc9033fe29a82c2703edf3c63471664f97f0167c85daf6f93496319 - languageName: node - linkType: hard - -"randexp@npm:0.4.6": - version: 0.4.6 - resolution: "randexp@npm:0.4.6" - dependencies: - discontinuous-range: 1.0.0 - ret: ~0.1.10 - checksum: 3c0d440a3f89d6d36844aa4dd57b5cdb0cab938a41956a16da743d3a3578ab32538fc41c16cc0984b6938f2ae4cbc0216967e9829e52191f70e32690d8e3445d - languageName: node - linkType: hard - "randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -27077,7 +26771,7 @@ __metadata: languageName: node linkType: hard -"react-test-renderer@npm:16.8.6, react-test-renderer@npm:^16.0.0-0": +"react-test-renderer@npm:16.8.6": version: 16.8.6 resolution: "react-test-renderer@npm:16.8.6" dependencies: @@ -27326,13 +27020,6 @@ __metadata: languageName: node linkType: hard -"reflect.ownkeys@npm:^0.2.0": - version: 0.2.0 - resolution: "reflect.ownkeys@npm:0.2.0" - checksum: 9530b166569e547c2cf25ade3cdc39c662212feeccf3e0ed46e6d8abf92f5683c82d7857011cee6230bf648eb0b99b6b419a007012b8571dcd4bb4d818d3b88d - languageName: node - linkType: hard - "regenerate-unicode-properties@npm:^10.0.1": version: 10.0.1 resolution: "regenerate-unicode-properties@npm:10.0.1" @@ -28271,16 +27958,6 @@ __metadata: languageName: node linkType: hard -"rst-selector-parser@npm:^2.2.3": - version: 2.2.3 - resolution: "rst-selector-parser@npm:2.2.3" - dependencies: - lodash.flattendeep: ^4.4.0 - nearley: ^2.7.10 - checksum: fbfb2f6a7d4c9b3e013ef555ac06e5dba444e0d37dc959b94c507b6c34093ef10fe98141338d9cac58e5ae0f9453a5ef7f85af3d5e6386b237c1b3552debe4a0 - languageName: node - linkType: hard - "rsvp@npm:^4.8.4": version: 4.8.5 resolution: "rsvp@npm:4.8.5" @@ -28668,7 +28345,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.7.1": +"semver@npm:^5.4.1, semver@npm:^5.5.0": version: 5.7.1 resolution: "semver@npm:5.7.1" bin: @@ -29831,16 +29508,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.1": - version: 1.2.2 - resolution: "string.prototype.trim@npm:1.2.2" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.0 - checksum: 4392f2ccfa2ec61db502efc5498c60a708d12fb38cb746d02a02ef9c106820edc2bfd67087e88ec2909d3fe64b3b464cd0b53852f4bc85cb11cb6287ff1a960e - languageName: node - linkType: hard - "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9"