diff --git a/.babelrc.json b/.babelrc.json new file mode 100644 index 00000000..00ca841a --- /dev/null +++ b/.babelrc.json @@ -0,0 +1,16 @@ +{ + "sourceType": "unambiguous", + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "chrome": 100 + } + } + ], + "@babel/preset-typescript", + "@babel/preset-react" + ], + "plugins": [] +} diff --git a/.eslintignore b/.eslintignore index 15b3d9dd..fd242800 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,4 +2,6 @@ dist node_modules build .eslintrc.js -coverage \ No newline at end of file +coverage +react-shim.js +__mocks__/styleMock.js \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index be8192b4..7939b654 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,6 +9,7 @@ module.exports = { 'plugin:react-hooks/recommended', 'plugin:import/recommended', 'plugin:import/typescript', + 'plugin:storybook/recommended', ], plugins: [ '@typescript-eslint', @@ -25,34 +26,50 @@ module.exports = { es6: true, }, parserOptions: { + project: './tsconfig.json', ecmaVersion: 2018, sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, }, rules: { eqeqeq: 'error', 'no-var': 'error', 'prefer-const': 'error', curly: ['warn', 'multi-line', 'consistent'], - 'no-console': 'off', - 'import/no-unresolved': ['error', { commonjs: true, amd: true }], + 'no-console': ['error', { allow: ['warn', 'info', 'error'] }], + 'import/no-unresolved': [ + 'error', + { + commonjs: true, + amd: true, + }, + ], 'import/export': 'error', '@typescript-eslint/no-duplicate-imports': ['error'], '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-unused-vars': [ 'warn', - { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + }, ], '@typescript-eslint/no-use-before-define': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-explicit-any': 'off', - 'jest/consistent-test-it': ['error', { fn: 'it', withinDescribe: 'it' }], + 'jest/consistent-test-it': [ + 'error', + { + fn: 'it', + withinDescribe: 'it', + }, + ], 'import/order': [ 'error', { - alphabetize: { order: 'asc', caseInsensitive: true }, + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, groups: [ 'builtin', 'external', @@ -73,8 +90,9 @@ module.exports = { pathGroupsExcludedImportTypes: ['builtin'], }, ], - 'react/jsx-uses-react': 'off', - 'react/react-in-jsx-scope': 'off', + // Disable it until we start supporting `react-jsx` again. + // 'react/jsx-uses-react': 'off', + // 'react/react-in-jsx-scope': 'off', 'sort-imports': [ 'error', { diff --git a/.nvmrc b/.nvmrc index ecb0f8a9..d7cb9ec3 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.13.0 \ No newline at end of file +16.13.2 \ No newline at end of file diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 00000000..a0ab4410 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,48 @@ +import { StorybookConfig } from '@storybook/react-webpack5'; + +const webpack = require('webpack'); +const config: StorybookConfig = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/addon-a11y', + ], + framework: { + name: '@storybook/react-webpack5', + options: {}, + }, + docs: { + autodocs: true, + }, + typescript: { + reactDocgen: 'react-docgen-typescript', + reactDocgenTypescriptOptions: { + compilerOptions: { + allowSyntheticDefaultImports: false, + esModuleInterop: false, + }, + }, + }, + core: { + disableTelemetry: true, // π Disables telemetry + enableCrashReports: false, // π Appends the crash reports to the telemetry events + }, + webpackFinal: async (config, { configType }) => { + // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION' + // You can change the configuration based on that. + // 'PRODUCTION' is used when building the static version of storybook. + + config?.plugins?.push( + new webpack.DefinePlugin({ + __DEV__: configType === 'DEVELOPMENT', + }), + ); + + // Return the altered config + return config; + }, +}; + +export default config; diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 00000000..d3914580 --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,9 @@ +export const parameters = { + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, +}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..d7df89c9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..30b9f4b0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + "editor.formatOnSave": true, + "[javascript,typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "files.autoSave": "onFocusChange", + "editor.smoothScrolling": true, + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact" + ], + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c761de6..f1c54cf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,61 @@ +# [0.3.0-next.4](https://github.com/jotai-labs/jotai-devtools/compare/v0.3.0-next.3...v0.3.0-next.4) (2023-03-02) + +### Bug Fixes + +- bundle in fonts for better stability + ([236cd75](https://github.com/jotai-labs/jotai-devtools/commit/236cd75c82add160635b0ded2fa2e0bfadc60e71)) +- fonts css + ([be8c16c](https://github.com/jotai-labs/jotai-devtools/commit/be8c16ccab78a0b9153b2a6c655d4f840547c73c)) +- use JetBrains mono fonts on NavLink + ([68cbe5a](https://github.com/jotai-labs/jotai-devtools/commit/68cbe5a4427ed1b5ea1bb968c1554a50f5ce1127)) + +### Features + +- add option to display private atoms + ([d1875ee](https://github.com/jotai-labs/jotai-devtools/commit/d1875ee58ca2faa49512e30d1efc17f10b93de3b)) + +# [0.3.0-next.3](https://github.com/jotai-labs/jotai-devtools/compare/v0.3.0-next.2...v0.3.0-next.3) (2023-02-17) + +### Bug Fixes + +- infer options type from Jotai + ([8ddad63](https://github.com/jotai-labs/jotai-devtools/commit/8ddad63821ce825b8871a14e7a6cc37eb2c93622)) +- use exactOptionalPropertyTypes + ([6c9cbdf](https://github.com/jotai-labs/jotai-devtools/commit/6c9cbdffa020e9f15e1e0198d18eefae0b2e4f28)) + +### Features + +- add custom style nonce + remove global normalized styles + ([10d3c4a](https://github.com/jotai-labs/jotai-devtools/commit/10d3c4a93494bd27fc16d1607cc42ea3f2e00ae4)) + +# [0.3.0-next.2](https://github.com/jotai-labs/jotai-devtools/compare/v0.3.0-next.1...v0.3.0-next.2) (2023-02-12) + +### Features + +- add error boundary + ([5667a05](https://github.com/jotai-labs/jotai-devtools/commit/5667a059da325ee8d0452e5d097d4eb14ab97c5e)) + +# [0.3.0-next.1](https://github.com/jotai-labs/jotai-devtools/compare/v0.3.0-next.0...v0.3.0-next.1) (2023-02-10) + +### Bug Fixes + +- handle atom containing undefined values + ([c086a75](https://github.com/jotai-labs/jotai-devtools/commit/c086a75ed92066c78a3d42f5b3e5b924576bbee5)) +- inject react shim to the build + ([a20a235](https://github.com/jotai-labs/jotai-devtools/commit/a20a2355b08193fc4f8cde6dec85602ead7229df)) + +### Features + +- make raw and parse value copyable + ([5348337](https://github.com/jotai-labs/jotai-devtools/commit/5348337530177f8db80e53d0d35e339cd78ad84c)) + +# [0.3.0-next.0](https://github.com/jotai-labs/jotai-devtools/compare/v0.2.0...v0.3.0-next.0) (2023-02-07) + +### Features + +- **ui-devtools:** initial commit + ([7c38133](https://github.com/jotai-labs/jotai-devtools/commit/7c38133a360c0c97db6406becdc1bf939e1001e7)) + # [0.2.0](https://github.com/jotai-labs/jotai-devtools/compare/v0.2.0-next.1...v0.2.0) (2023-02-01) # [0.2.0-next.1](https://github.com/jotai-labs/jotai-devtools/compare/v0.2.0-next.0...v0.2.0-next.1) (2023-01-17) diff --git a/README.md b/README.md index 86e78334..32b1736b 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,140 @@ -# jotai-devtools +# Jotai DevTools -## Prerequisites +[![Build Status](https://img.shields.io/github/actions/workflow/status/jotaijs/jotai-devtools/ci.yml?style=flat&colorA=000000&colorB=259e02)](https://github.com/jotaijs/jotai-devtools/actions/workflows/ci.yml) +[![Version](https://img.shields.io/npm/v/jotai-devtools?style=flat&colorA=000000&colorB=259e02)](https://www.npmjs.com/package/jotai-devtools) -- Jotai version `>=1.11.0` +## π Features + +- Debug π atom values with ease +- Out-of-the-box π support for async/suspendible atoms +- Built-in Dark mode π +- β Supports custom `store` +- β Works with provider-less mode +- β Works with Next.js +- β Supports custom `nonce` for CSP +- β Hides private atoms with ability to configure (requires Jotai `>=2.0.3`) +- β Tree-shakable and built for non-production environments + +## πΊ Preview + +<p> + <a href="https://www.npmjs.com/package/jotai-devtools"> + <img alt="Jotai DevTools Screenshot" src="./docs/internal/demo-screenshot.png" width="750"/> + </a> +</p> + +## βοΈ Prerequisites + +- Jotai version `>=1.11.0` (highly recommended to use `2.x.x`) - React version `>=17.0.0` -## Setup +## π¦ Setup ```sh +# yarn +yarn add jotai-devtools + # npm npm install jotai-devtools --save +``` -# yarn -yarn add jotai-devtools +## β¨ UI DevTools + +Enhance your development experience with the UI based Jotai DevTool + +[![Demo](https://img.shields.io/badge/demo-%F0%9F%9A%80-green?style=flat&colorA=000000&colorB=259e02)](https://codesandbox.io/s/jotai-devtools-demo-k5p12d) + +### Babel plugin setup - (Optional but highly recommended) + +Use Jotai babel plugins for optimal debugging experience. Find the complete +guide on [jotai.org](https://jotai.org/docs/tools/babel) + +Eg. + +```ts +{ + "plugins": [ + // Enables hot reload for atoms + "jotai/babel/plugin-react-refresh", + // Automatically adds debug labels to the atoms + "jotai/babel/plugin-debug-label" + ] +} +``` + +### Next JS setup + +_You may skip this section if you're not using [Next.js](https://nextjs.org)._ + +Enable `transpilePackages` for the UI CSS and components to be transpiled +correctly. + +```ts +// next.config.ts + +const nextConfig = { + // Learn more here - https://nextjs.org/docs/advanced-features/compiler#module-transpilation + // Required for font css to be imported correctly π + transpilePackages: ['jotai-devtools'], +}; + +module.exports = nextConfig; +``` + +### Available props + +```ts +type DevToolsProps = { + // Defaults to false + isInitialOpen?: boolean; + // pass a custom store + store?: Store; + // Defaults to light + theme?: 'dark' | 'light'; + // Custom nonce to allowlist jotai-devtools specific inline styles via CSP + nonce?: string; + options?: { + // Private atoms are used internally in atoms like `atomWithStorage` or `atomWithLocation`, etc. to manage state. + // Defaults to `false` + shouldShowPrivateAtoms?: boolean; + }; +}; +``` + +### Provider-less + +```tsx +import { DevTools } from 'jotai-devtools'; + +const App = () => { + return ( + <> + <DevTools /> + {/* your app */} + </> + ); +}; +``` + +### With Provider + +```tsx +import { createStore } from 'jotai'; +import { DevTools } from 'jotai-devtools'; + +const customStore = createStore(); + +const App = () => { + return ( + <Provider store={customStore}> + <DevTools store={customStore} /> + {/* your app */} + </Provider> + ); +}; ``` -## API +## Hooks Detailed documentation is available on [https://jotai.org/docs/api/devtools](https://jotai.org/docs/api/devtools) @@ -65,5 +184,4 @@ Find the official migration guide on ### Other announcements -β¨ UI based devtools is -[coming soon](https://twitter.com/dai_shi/status/1611717249471246338)! +β¨ [First announcement](https://twitter.com/dai_shi/status/1611717249471246338) diff --git a/__mocks__/styleMock.js b/__mocks__/styleMock.js new file mode 100644 index 00000000..f053ebf7 --- /dev/null +++ b/__mocks__/styleMock.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/__tests__/custom-render.tsx b/__tests__/custom-render.tsx new file mode 100644 index 00000000..ba6d6bbc --- /dev/null +++ b/__tests__/custom-render.tsx @@ -0,0 +1,9 @@ +import React, { PropsWithChildren, StrictMode } from 'react'; +import { RenderOptions, render } from '@testing-library/react'; + +const AllTheProviders = ({ children }: PropsWithChildren) => { + return <StrictMode>{children}</StrictMode>; +}; + +export const customRender = (ui: React.ReactElement, options?: RenderOptions) => + render(ui, { wrapper: AllTheProviders, ...options }); diff --git a/__tests__/devtools/AtomViewer.test.tsx b/__tests__/devtools/AtomViewer.test.tsx new file mode 100644 index 00000000..06f59401 --- /dev/null +++ b/__tests__/devtools/AtomViewer.test.tsx @@ -0,0 +1,381 @@ +import React, { useMemo } from 'react'; +import { act, render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { atom, useAtomValue } from 'jotai'; +import { DevTools } from 'jotai-devtools'; +import { AnyAtom } from 'src/types'; +import { customRender } from '../custom-render'; + +const BasicAtomsWithDevTools = () => { + // Create atoms inside the component so that they are recreated for each test + const countAtom = useMemo(() => atom(0), []); + countAtom.debugLabel = 'countAtom'; + const doubleAtom = useMemo( + () => atom((get) => get(countAtom) * 2), + [countAtom], + ); + + useAtomValue(countAtom); + useAtomValue(doubleAtom); + return <DevTools isInitialOpen={true} />; +}; + +describe('DevTools - AtomViewer', () => { + describe('List of atoms', () => { + it('should render atom viewer without any errors if there are no atoms', async () => { + const { container } = customRender(<DevTools isInitialOpen={true} />); + await waitFor(() => + expect(screen.getByText('π» JΕtai DevTools')).toBeInTheDocument(), + ); + expect(screen.getByText('Atom Viewer')).toBeInTheDocument(); + expect( + screen.getByTestId('atom-list-no-atoms-found-message'), + ).toHaveTextContent('No Atoms found!'); + expect(screen.getByLabelText('Search')).toBeInTheDocument(); + expect( + screen.getByText( + 'Select an atom from the left panel to view the details', + ), + ).toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + + it('should render atom viewer with correct atoms without provider', async () => { + const { container } = customRender(<BasicAtomsWithDevTools />); + expect(screen.getByText('countAtom')).toBeInTheDocument(); + // We did not add `debugLabel` to `doubleAtom` so it should be unlabeled + expect(screen.getByText('<unlabeled-atom>')).toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + + describe('private atoms', () => { + const PrivateAtomsWithDevTools = ({ + markAtomPrivate = true, + shouldShowPrivateAtoms = false, + }: { + markAtomPrivate?: boolean; + shouldShowPrivateAtoms?: boolean; + }) => { + // Create atoms inside the component so that they are recreated for each test + const countAtom = useMemo(() => atom(0), []); + countAtom.debugLabel = 'countAtom'; + + const privateAtom = useMemo( + () => atom((get) => get(countAtom) * 0), + [countAtom], + ); + privateAtom.debugLabel = 'privateAtom'; + privateAtom.debugPrivate = markAtomPrivate; + + const doubleAtom = useMemo( + () => atom((get) => get(countAtom) * get(privateAtom)), + [countAtom, privateAtom], + ); + + useAtomValue(countAtom); + useAtomValue(doubleAtom); + useAtomValue(privateAtom); + + return ( + <DevTools + isInitialOpen={true} + options={{ + shouldShowPrivateAtoms: shouldShowPrivateAtoms, + }} + /> + ); + }; + + it('should not render private atoms', async () => { + customRender(<PrivateAtomsWithDevTools />); + expect(screen.queryByText('privateAtom')).not.toBeInTheDocument(); + expect(screen.getByText('countAtom')).toBeInTheDocument(); + expect(screen.getByText('<unlabeled-atom>')).toBeInTheDocument(); + }); + + it('should render private atoms when shouldShowPrivateAtoms is marked as true', async () => { + customRender(<PrivateAtomsWithDevTools shouldShowPrivateAtoms />); + expect(screen.getByText('privateAtom')).toBeInTheDocument(); + }); + + it('should hide private atoms from dependents list when shouldShowPrivateAtoms is marked as false', async () => { + const { container } = customRender(<PrivateAtomsWithDevTools />); + + await act(async () => { + await userEvent.click(screen.getByText('countAtom')); + }); + + expect(screen.getByText('Atom Details')).toBeInTheDocument(); + expect(screen.getByText('Meta')).toBeInTheDocument(); + expect(screen.getByText('Debug Label')).toBeInTheDocument(); + expect( + screen.getByTestId('display-detail-item-value-countAtom'), + ).toHaveTextContent('countAtom'); + expect(screen.getByText('Value type')).toBeInTheDocument(); + expect(screen.getByText('number')).toBeInTheDocument(); + expect(screen.queryByText('Private')).not.toBeInTheDocument(); + expect(screen.queryByText('Yes')).not.toBeInTheDocument(); + + expect(screen.getByText('Raw value')).toBeInTheDocument(); + expect(screen.getByTestId('atom-parsed-value')).toHaveTextContent('0'); + + expect(screen.getByText('Dependents')).toBeInTheDocument(); + expect( + screen.queryByTestId('dependents-list-item-<unlabeled-atom>-0'), + ).toBeInTheDocument(); + expect( + screen.queryByTestId('dependents-list-item-privateAtom-0'), + ).not.toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + + it('should mark private atoms in atom details', async () => { + const { container } = customRender( + <PrivateAtomsWithDevTools shouldShowPrivateAtoms />, + ); + + await act(async () => { + await userEvent.click(screen.getByText('privateAtom')); + }); + + expect(screen.getByText('Atom Details')).toBeInTheDocument(); + expect(screen.getByText('Meta')).toBeInTheDocument(); + expect(screen.getByText('Debug Label')).toBeInTheDocument(); + expect( + screen.getByTestId('display-detail-item-value-privateAtom'), + ).toHaveTextContent('privateAtom'); + expect(screen.getByText('Value type')).toBeInTheDocument(); + expect(screen.getByText('number')).toBeInTheDocument(); + expect(screen.getByText('Private')).toBeInTheDocument(); + expect(screen.getByText('Yes')).toBeInTheDocument(); + + expect(screen.getByText('Raw value')).toBeInTheDocument(); + expect(screen.getByTestId('atom-parsed-value')).toHaveTextContent('0'); + + expect(screen.getByText('Dependents')).toBeInTheDocument(); + expect( + screen.getByTestId('dependents-list-item-<unlabeled-atom>-0'), + ).toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + }); + + describe('Search', () => { + it('should search for atoms correctly', async () => { + const { container } = customRender(<BasicAtomsWithDevTools />); + + await act(async () => { + await userEvent.type(screen.getByLabelText('Search'), 'count'); + }); + + expect( + screen.queryByTestId('atom-list-no-atoms-found-message'), + ).not.toBeInTheDocument(); + expect(screen.getByText('countAtom')).toBeInTheDocument(); + expect(screen.queryByText('<unlabeled-atom>')).not.toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + it('should display an error if no atoms are found', async () => { + const { container } = customRender(<BasicAtomsWithDevTools />); + + await act(async () => { + await userEvent.type(screen.getByLabelText('Search'), 'abc 123'); + }); + expect( + screen.getByTestId('atom-list-no-atoms-found-message'), + ).toHaveTextContent('No Atoms found!'); + expect(screen.queryByText('countAtom')).not.toBeInTheDocument(); + expect(screen.queryByText('<unlabeled-atom>')).not.toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + }); + + describe('auto unmount', () => { + it('should unselect the atom when an atom is unsubscribed', async () => { + const BasicAtoms = () => { + const countAtom = useMemo(() => atom(0), []); + countAtom.debugLabel = 'countAtom'; + const doubleCountAtom = useMemo( + () => atom((get) => get(countAtom) * 2), + [countAtom], + ); + doubleCountAtom.debugLabel = 'doubleCountAtom'; + useAtomValue(doubleCountAtom); + + return <div data-testid="basic-atoms"></div>; + }; + + const ToggleAbleAtomWithDevTools = () => { + const [shouldShow, setShouldShow] = React.useState(true); + + const handleOntoggle = React.useCallback(() => { + setShouldShow((s) => !s); + }, [setShouldShow]); + + return ( + <> + {shouldShow ? <BasicAtoms /> : null} + <button onClick={handleOntoggle}>Toggle</button> + </> + ); + }; + + const TestComponent = () => { + return ( + <> + <DevTools isInitialOpen={true} /> + <ToggleAbleAtomWithDevTools /> + </> + ); + }; + + customRender(<TestComponent />); + await act(async () => { + await userEvent.click(screen.getByText('doubleCountAtom')); + }); + expect( + screen.getByTestId('display-detail-item-value-doubleCountAtom'), + ).toBeInTheDocument(); + + await act(async () => { + await userEvent.click(screen.getByText('Toggle')); + }); + + expect(screen.queryByText('Atom Details')).not.toBeInTheDocument(); + expect( + screen.queryByText('display-detail-item-value-doubleCountAtom'), + ).not.toBeInTheDocument(); + expect( + screen.getByTestId('atom-list-no-atoms-found-message'), + ).toHaveTextContent('No Atoms found!'); + expect(screen.getByLabelText('Search')).toBeInTheDocument(); + expect( + screen.getByText( + 'Select an atom from the left panel to view the details', + ), + ).toBeInTheDocument(); + }); + }); + }); + + describe('Atom details', () => { + describe('Raw value', () => { + it('should display an error when we are not able to parse the value', async () => { + class CircularClass { + circular: any; + constructor() { + this.circular = this; + } + } + + const circularObject: InstanceType<typeof CircularClass> = + new CircularClass(); + + const CircularAtomWithDevTools = () => { + // Create atoms inside the component so that they are recreated for each test + const circularAtom = useMemo(() => atom(circularObject), []); + circularAtom.debugLabel = 'circularAtom'; + + useAtomValue(circularAtom); + return <DevTools isInitialOpen={true} />; + }; + + const { container } = customRender(<CircularAtomWithDevTools />); + + await act(async () => { + await userEvent.click(screen.getByText('circularAtom')); + }); + + expect(screen.getByText('Atom Details')).toBeInTheDocument(); + expect(screen.getByText('Meta')).toBeInTheDocument(); + expect(screen.getByText('Debug Label')).toBeInTheDocument(); + + expect(screen.getByText('Raw value')).toBeInTheDocument(); + expect( + screen.getByText('Failed to parse the value of the atom'), + ).toBeInTheDocument(); + expect(screen.getByText('Dependents')).toBeInTheDocument(); + expect(screen.getByText('No dependents')).toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + + it('should display atom details when an atom is selected', async () => { + const { container } = customRender(<BasicAtomsWithDevTools />); + + await act(async () => { + await userEvent.click(screen.getByText('countAtom')); + }); + + expect(screen.getByText('Atom Details')).toBeInTheDocument(); + expect(screen.getByText('Meta')).toBeInTheDocument(); + expect(screen.getByText('Debug Label')).toBeInTheDocument(); + expect( + screen.getByTestId('display-detail-item-value-countAtom'), + ).toHaveTextContent('countAtom'); + expect(screen.getByText('Value type')).toBeInTheDocument(); + expect(screen.getByText('number')).toBeInTheDocument(); + + expect(screen.getByText('Raw value')).toBeInTheDocument(); + expect(screen.getByTestId('atom-parsed-value')).toHaveTextContent('0'); + + expect(screen.getByText('Dependents')).toBeInTheDocument(); + expect( + screen.getByTestId('dependents-list-item-<unlabeled-atom>-0'), + ).toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + + it('should display the dependents of the atom correctly', async () => { + const { container } = render(<BasicAtomsWithDevTools />); + + await act(async () => { + await userEvent.click(screen.getByText('<unlabeled-atom>')); + }); + + expect(screen.getByText('Atom Details')).toBeInTheDocument(); + + expect(screen.getByText('Dependents')).toBeInTheDocument(); + expect(screen.getByText('No dependents')).toBeInTheDocument(); + expect(container).toMatchSnapshot(); + }); + + describe('Supports most primitive value types', () => { + const AtomRenderer = ({ atom }: { atom: AnyAtom }) => { + useAtomValue(atom); + return <DevTools isInitialOpen={true} />; + }; + + it.each` + type | value | expected + ${'string'} | ${'some-string'} | ${'some-string'} + ${'number'} | ${123} | ${123} + ${'boolean'} | ${true} | ${true} + ${'boolean'} | ${false} | ${false} + ${'null'} | ${null} | ${'null'} + ${'undefined'} | ${undefined} | ${'undefined'} + ${'bigint'} | ${BigInt(123)} | ${'123'} + ${'symbol'} | ${Symbol('some-symbol')} | ${'Symbol(some-symbol)'} + ${'function'} | ${() => () => 'hello'} | ${"()=>'hello'"} + ${'object'} | ${{ foo: 'bar' }} | ${'{ "foo": "bar"}'} + ${'array'} | ${[1, 2, 3]} | ${'[ 1, 2, 3]'} + `( + 'should parse "$type" value correctly', + async ({ value, expected }) => { + const valueAtom = atom(value); + valueAtom.debugLabel = 'valueAtom'; + + customRender(<AtomRenderer atom={valueAtom} />); + + await act(async () => { + await userEvent.click(screen.getByText('valueAtom')); + }); + + expect(screen.getByTestId('atom-parsed-value')).toHaveTextContent( + expected, + ); + }, + ); + }); + }); + }); +}); diff --git a/__tests__/devtools/__snapshots__/AtomViewer.test.tsx.snap b/__tests__/devtools/__snapshots__/AtomViewer.test.tsx.snap new file mode 100644 index 00000000..c9fc91d2 --- /dev/null +++ b/__tests__/devtools/__snapshots__/AtomViewer.test.tsx.snap @@ -0,0 +1,13685 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DevTools - AtomViewer Atom details Raw value should display an error when we are not able to parse the value 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-65 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-65 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-65 ._jotai-devtools-internal-panel-resize-handle, +.emotion-65:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-66 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-67 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-69 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + height: auto; +} + +.emotion-73 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 22px; + line-height: 1.4; + margin: 0; + margin-bottom: 10px; +} + +.emotion-73:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-73:focus:not(:focus-visible) { + outline: none; +} + +.emotion-75 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-75:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-75:focus:not(:focus-visible) { + outline: none; +} + +.emotion-76 { + margin-bottom: 10px; +} + +.emotion-78 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-size: 10px; + font-weight: bold; + text-transform: uppercase; +} + +.emotion-78:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-78:focus:not(:focus-visible) { + outline: none; +} + +.emotion-80 { + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.55; + padding: 2px calc(10px / 2); + border-radius: 4px; + color: #1A1B1E; + background-color: rgba(248, 249, 250, 1); + font-size: 12px; +} + +.emotion-88 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; + font-weight: bold; +} + +.emotion-88:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-88:focus:not(:focus-visible) { + outline: none; +} + +.emotion-90 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-weight: 500; +} + +.emotion-90:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-90:focus:not(:focus-visible) { + outline: none; +} + +.emotion-92 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-right: 5px; +} + +.emotion-92:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-92:focus:not(:focus-visible) { + outline: none; +} + +.emotion-95 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-top: 20px; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-95:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-95:focus:not(:focus-visible) { + outline: none; +} + +.emotion-97 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; +} + +.emotion-97:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-97:focus:not(:focus-visible) { + outline: none; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r3v-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r3v-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r3v-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r3v-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r41:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r43:" + data-panel-size="50.0" + id="data-panel-id-:r43:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r45" + id="mantine-r45-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r45" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + data-active="true" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + circularAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + data-active="true" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r43:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r41:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r47:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-65" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-66" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r49:" + data-panel-size="50.0" + id="data-panel-id-:r49:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-67" + > + <div + class="emotion-68 emotion-69" + > + <div + class="emotion-62" + > + <h1 + class="emotion-8 emotion-9 emotion-73" + > + Atom Details + </h1> + <div + class="emotion-8 emotion-75" + > + Meta + </div> + <div + class="emotion-76" + > + <div + class="emotion-8 emotion-78" + data-testid="display-detail-item-label-Debug Label" + > + Debug Label + </div> + <code + class="emotion-79 emotion-80" + data-testid="display-detail-item-value-circularAtom" + dir="ltr" + > + circularAtom + </code> + </div> + <div + class="emotion-76" + > + <div + class="emotion-8 emotion-78" + data-testid="display-detail-item-label-Value type" + > + Value type + </div> + <code + class="emotion-79 emotion-80" + data-testid="display-detail-item-value-object" + dir="ltr" + > + object + </code> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-88" + > + Raw value + </div> + <div + class="emotion-8 emotion-90" + > + <div + class="emotion-8 emotion-92" + > + <svg + class="icon icon-tabler icon-tabler-alert-circle" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <circle + cx="12" + cy="12" + r="9" + /> + <line + x1="12" + x2="12" + y1="8" + y2="12" + /> + <line + x1="12" + x2="12.01" + y1="16" + y2="16" + /> + </svg> + </div> + Failed to parse the value of the atom + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-95" + > + Dependents + </div> + <div + class="emotion-8 emotion-97" + > + No dependents + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer Atom details Raw value should display atom details when an atom is selected 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-83 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-83 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-83 ._jotai-devtools-internal-panel-resize-handle, +.emotion-83:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-84 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-85 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-87 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + height: auto; +} + +.emotion-91 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 22px; + line-height: 1.4; + margin: 0; + margin-bottom: 10px; +} + +.emotion-91:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-91:focus:not(:focus-visible) { + outline: none; +} + +.emotion-93 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-93:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-93:focus:not(:focus-visible) { + outline: none; +} + +.emotion-94 { + margin-bottom: 10px; +} + +.emotion-96 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-size: 10px; + font-weight: bold; + text-transform: uppercase; +} + +.emotion-96:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-96:focus:not(:focus-visible) { + outline: none; +} + +.emotion-98 { + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.55; + padding: 2px calc(10px / 2); + border-radius: 4px; + color: #1A1B1E; + background-color: rgba(248, 249, 250, 1); + font-size: 12px; +} + +.emotion-106 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; + font-weight: bold; +} + +.emotion-106:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-106:focus:not(:focus-visible) { + outline: none; +} + +.emotion-108 { + position: relative; + margin-bottom: 10px; +} + +.emotion-112 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: absolute; + top: 10px; + right: 10px; + left: unset; + z-index: 2; +} + +.emotion-112:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-112:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-112:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-112:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-112:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-112:disabled, +.emotion-112[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-112:disabled:active, +.emotion-112[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-112[data-loading] { + pointer-events: none; +} + +.emotion-112[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-112, +.emotion-112:hover { + background-color: #f8f9fa; +} + +.emotion-115 { + overflow: hidden; +} + +.emotion-116 { + width: 100%; + height: 100%; +} + +.emotion-118 { + box-sizing: border-box; + position: relative; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.7; + font-size: 13px; + border-radius: 4px; + padding: 12px 0; + margin-top: 0; + margin-bottom: 0; +} + +.emotion-120 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0 16px; +} + +.emotion-122 { + width: 100%; +} + +.emotion-126 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-top: 20px; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-126:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-126:focus:not(:focus-visible) { + outline: none; +} + +.emotion-128 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + font-size: 16px; + line-height: 1.55; + margin: 0; + padding-left: 0; + list-style-position: inside; + margin-bottom: 10px; +} + +.emotion-130 { + white-space: nowrap; + line-height: 1.55; +} + +.emotion-130:not(:first-of-type) { + margin-top: 0; +} + +.emotion-131 { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + white-space: normal; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r4b-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r4b-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r4b-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r4b-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r4d:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r4f:" + data-panel-size="50.0" + id="data-panel-id-:r4f:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r4h" + id="mantine-r4h-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r4h" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + data-active="true" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + countAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + data-active="true" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + <unlabeled-atom> + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r4f:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r4d:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r4j:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-83" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-84" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r4l:" + data-panel-size="50.0" + id="data-panel-id-:r4l:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-85" + > + <div + class="emotion-86 emotion-87" + > + <div + class="emotion-62" + > + <h1 + class="emotion-8 emotion-9 emotion-91" + > + Atom Details + </h1> + <div + class="emotion-8 emotion-93" + > + Meta + </div> + <div + class="emotion-94" + > + <div + class="emotion-8 emotion-96" + data-testid="display-detail-item-label-Debug Label" + > + Debug Label + </div> + <code + class="emotion-97 emotion-98" + data-testid="display-detail-item-value-countAtom" + dir="ltr" + > + countAtom + </code> + </div> + <div + class="emotion-94" + > + <div + class="emotion-8 emotion-96" + data-testid="display-detail-item-label-Value type" + > + Value type + </div> + <code + class="emotion-97 emotion-98" + data-testid="display-detail-item-value-number" + dir="ltr" + > + number + </code> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-106" + > + Raw value + </div> + <div + class="emotion-107 emotion-108" + data-testid="atom-parsed-value" + translate="no" + > + <button + aria-label="Copy value" + class="emotion-16 emotion-17 emotion-111 emotion-112" + type="button" + > + <svg + fill="none" + height="15" + viewBox="0 0 15 15" + width="15" + xmlns="http://www.w3.org/2000/svg" + > + <path + clip-rule="evenodd" + d="M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z" + fill="currentColor" + fill-rule="evenodd" + /> + </svg> + </button> + <div + class="emotion-113 emotion-114 emotion-115" + dir="ltr" + style="position: relative; --radix-scroll-area-corner-width: 0px; --radix-scroll-area-corner-height: 0px;" + > + <style> + [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none} + </style> + <div + class="emotion-116 emotion-117" + data-radix-scroll-area-viewport="" + style="overflow-x: scroll; overflow-y: scroll;" + > + <div + style="min-width: 100%; display: table;" + > + <pre + class="emotion-118 emotion-119 prism-code language-markdown" + dir="ltr" + style="color: rgb(33, 37, 41); background-color: rgba(248, 249, 250, 0.65);" + > + <div + class="emotion-120 emotion-121 token-line" + > + <div + class="emotion-122 emotion-121Content" + > + <span + class="token plain" + > + 0 + </span> + </div> + </div> + </pre> + </div> + </div> + </div> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-126" + > + Dependents + </div> + <ol + class="emotion-127 emotion-128" + > + <li + class="emotion-129 emotion-130" + > + <div + class="__mantine-ref-itemWrapper emotion-131 emotion-129Wrapper" + > + <span> + <code + class="emotion-97 emotion-98" + data-testid="dependents-list-item-<unlabeled-atom>-0" + dir="ltr" + > + <unlabeled-atom> + </code> + </span> + </div> + </li> + </ol> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer Atom details Raw value should display the dependents of the atom correctly 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-83 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-83 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-83 ._jotai-devtools-internal-panel-resize-handle, +.emotion-83:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-84 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-85 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-87 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + height: auto; +} + +.emotion-91 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 22px; + line-height: 1.4; + margin: 0; + margin-bottom: 10px; +} + +.emotion-91:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-91:focus:not(:focus-visible) { + outline: none; +} + +.emotion-93 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-93:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-93:focus:not(:focus-visible) { + outline: none; +} + +.emotion-94 { + margin-bottom: 10px; +} + +.emotion-96 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-size: 10px; + font-weight: bold; + text-transform: uppercase; +} + +.emotion-96:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-96:focus:not(:focus-visible) { + outline: none; +} + +.emotion-98 { + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.55; + padding: 2px calc(10px / 2); + border-radius: 4px; + color: #1A1B1E; + background-color: rgba(248, 249, 250, 1); + font-size: 12px; +} + +.emotion-106 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; + font-weight: bold; +} + +.emotion-106:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-106:focus:not(:focus-visible) { + outline: none; +} + +.emotion-108 { + position: relative; + margin-bottom: 10px; +} + +.emotion-112 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: absolute; + top: 10px; + right: 10px; + left: unset; + z-index: 2; +} + +.emotion-112:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-112:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-112:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-112:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-112:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-112:disabled, +.emotion-112[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-112:disabled:active, +.emotion-112[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-112[data-loading] { + pointer-events: none; +} + +.emotion-112[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-112, +.emotion-112:hover { + background-color: #f8f9fa; +} + +.emotion-115 { + overflow: hidden; +} + +.emotion-116 { + width: 100%; + height: 100%; +} + +.emotion-118 { + box-sizing: border-box; + position: relative; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.7; + font-size: 13px; + border-radius: 4px; + padding: 12px 0; + margin-top: 0; + margin-bottom: 0; +} + +.emotion-120 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0 16px; +} + +.emotion-122 { + width: 100%; +} + +.emotion-126 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-top: 20px; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-126:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-126:focus:not(:focus-visible) { + outline: none; +} + +.emotion-128 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; +} + +.emotion-128:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-128:focus:not(:focus-visible) { + outline: none; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r4t-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r4t-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r4t-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r4t-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r4v:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r51:" + data-panel-size="50.0" + id="data-panel-id-:r51:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r53" + id="mantine-r53-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r53" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + countAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + <button + class="emotion-16 emotion-48 emotion-49" + data-active="true" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + <unlabeled-atom> + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + data-active="true" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r51:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r4v:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r55:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-83" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-84" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r57:" + data-panel-size="50.0" + id="data-panel-id-:r57:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-85" + > + <div + class="emotion-86 emotion-87" + > + <div + class="emotion-62" + > + <h1 + class="emotion-8 emotion-9 emotion-91" + > + Atom Details + </h1> + <div + class="emotion-8 emotion-93" + > + Meta + </div> + <div + class="emotion-94" + > + <div + class="emotion-8 emotion-96" + data-testid="display-detail-item-label-Debug Label" + > + Debug Label + </div> + <code + class="emotion-97 emotion-98" + data-testid="display-detail-item-value-<unlabeled-atom>" + dir="ltr" + > + <unlabeled-atom> + </code> + </div> + <div + class="emotion-94" + > + <div + class="emotion-8 emotion-96" + data-testid="display-detail-item-label-Value type" + > + Value type + </div> + <code + class="emotion-97 emotion-98" + data-testid="display-detail-item-value-number" + dir="ltr" + > + number + </code> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-106" + > + Raw value + </div> + <div + class="emotion-107 emotion-108" + data-testid="atom-parsed-value" + translate="no" + > + <button + aria-label="Copy value" + class="emotion-16 emotion-17 emotion-111 emotion-112" + type="button" + > + <svg + fill="none" + height="15" + viewBox="0 0 15 15" + width="15" + xmlns="http://www.w3.org/2000/svg" + > + <path + clip-rule="evenodd" + d="M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z" + fill="currentColor" + fill-rule="evenodd" + /> + </svg> + </button> + <div + class="emotion-113 emotion-114 emotion-115" + dir="ltr" + style="position: relative; --radix-scroll-area-corner-width: 0px; --radix-scroll-area-corner-height: 0px;" + > + <style> + [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none} + </style> + <div + class="emotion-116 emotion-117" + data-radix-scroll-area-viewport="" + style="overflow-x: scroll; overflow-y: scroll;" + > + <div + style="min-width: 100%; display: table;" + > + <pre + class="emotion-118 emotion-119 prism-code language-markdown" + dir="ltr" + style="color: rgb(33, 37, 41); background-color: rgba(248, 249, 250, 0.65);" + > + <div + class="emotion-120 emotion-121 token-line" + > + <div + class="emotion-122 emotion-121Content" + > + <span + class="token plain" + > + 0 + </span> + </div> + </div> + </pre> + </div> + </div> + </div> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-126" + > + Dependents + </div> + <div + class="emotion-8 emotion-128" + > + No dependents + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer List of atoms Search should display an error if no atoms are found 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-48 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + gap: 16px; + margin-top: 20px; +} + +.emotion-48>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-50 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-left: 0; + font-size: 14px; +} + +.emotion-50:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-50:focus:not(:focus-visible) { + outline: none; +} + +.emotion-51 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-51 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-51 ._jotai-devtools-internal-panel-resize-handle, +.emotion-51:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-52 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-53 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-54 { + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + text-align: center; + width: 100%; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r31-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r31-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r31-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r31-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r33:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r35:" + data-panel-size="50.0" + id="data-panel-id-:r35:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r37" + id="mantine-r37-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r37" + placeholder="atom debug label" + type="text" + value="abc 123" + /> + </div> + </div> + <div + class="emotion-46" + /> + <div + class="emotion-6 emotion-48" + > + <svg + class="icon icon-tabler icon-tabler-alert-circle" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <circle + cx="12" + cy="12" + r="9" + /> + <line + x1="12" + x2="12" + y1="8" + y2="12" + /> + <line + x1="12" + x2="12.01" + y1="16" + y2="16" + /> + </svg> + <div + class="emotion-8 emotion-50" + data-testid="atom-list-no-atoms-found-message" + > + No Atoms found! + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r35:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r33:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r39:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-51" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-52" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r3b:" + data-panel-size="50.0" + id="data-panel-id-:r3b:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-53" + > + <div + class="emotion-54" + > + <div + class="emotion-8 emotion-56" + > + Select an atom from the left panel to view the details + + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer List of atoms Search should search for atoms correctly 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-65 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-65 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-65 ._jotai-devtools-internal-panel-resize-handle, +.emotion-65:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-66 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-67 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-68 { + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +.emotion-70 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + text-align: center; + width: 100%; +} + +.emotion-70:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-70:focus:not(:focus-visible) { + outline: none; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r2l-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r2l-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r2l-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r2l-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r2n:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r2p:" + data-panel-size="50.0" + id="data-panel-id-:r2p:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r2r" + id="mantine-r2r-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r2r" + placeholder="atom debug label" + type="text" + value="count" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + countAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r2p:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r2n:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r2t:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-65" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-66" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r2v:" + data-panel-size="50.0" + id="data-panel-id-:r2v:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-67" + > + <div + class="emotion-68" + > + <div + class="emotion-8 emotion-70" + > + Select an atom from the left panel to view the details + + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer List of atoms private atoms should hide private atoms from dependents list when shouldShowPrivateAtoms is marked as false 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-83 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-83 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-83 ._jotai-devtools-internal-panel-resize-handle, +.emotion-83:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-84 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-85 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-87 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + height: auto; +} + +.emotion-91 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 22px; + line-height: 1.4; + margin: 0; + margin-bottom: 10px; +} + +.emotion-91:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-91:focus:not(:focus-visible) { + outline: none; +} + +.emotion-93 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-93:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-93:focus:not(:focus-visible) { + outline: none; +} + +.emotion-94 { + margin-bottom: 10px; +} + +.emotion-96 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-size: 10px; + font-weight: bold; + text-transform: uppercase; +} + +.emotion-96:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-96:focus:not(:focus-visible) { + outline: none; +} + +.emotion-98 { + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.55; + padding: 2px calc(10px / 2); + border-radius: 4px; + color: #1A1B1E; + background-color: rgba(248, 249, 250, 1); + font-size: 12px; +} + +.emotion-106 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; + font-weight: bold; +} + +.emotion-106:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-106:focus:not(:focus-visible) { + outline: none; +} + +.emotion-108 { + position: relative; + margin-bottom: 10px; +} + +.emotion-112 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: absolute; + top: 10px; + right: 10px; + left: unset; + z-index: 2; +} + +.emotion-112:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-112:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-112:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-112:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-112:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-112:disabled, +.emotion-112[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-112:disabled:active, +.emotion-112[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-112[data-loading] { + pointer-events: none; +} + +.emotion-112[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-112, +.emotion-112:hover { + background-color: #f8f9fa; +} + +.emotion-115 { + overflow: hidden; +} + +.emotion-116 { + width: 100%; + height: 100%; +} + +.emotion-118 { + box-sizing: border-box; + position: relative; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.7; + font-size: 13px; + border-radius: 4px; + padding: 12px 0; + margin-top: 0; + margin-bottom: 0; +} + +.emotion-120 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0 16px; +} + +.emotion-122 { + width: 100%; +} + +.emotion-126 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-top: 20px; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-126:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-126:focus:not(:focus-visible) { + outline: none; +} + +.emotion-128 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + font-size: 16px; + line-height: 1.55; + margin: 0; + padding-left: 0; + list-style-position: inside; + margin-bottom: 10px; +} + +.emotion-130 { + white-space: nowrap; + line-height: 1.55; +} + +.emotion-130:not(:first-of-type) { + margin-top: 0; +} + +.emotion-131 { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + white-space: normal; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r1h-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r1h-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r1h-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r1h-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r1j:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r1l:" + data-panel-size="50.0" + id="data-panel-id-:r1l:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r1n" + id="mantine-r1n-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r1n" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + data-active="true" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + countAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + data-active="true" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + <unlabeled-atom> + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r1l:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r1j:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r1p:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-83" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-84" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r1r:" + data-panel-size="50.0" + id="data-panel-id-:r1r:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-85" + > + <div + class="emotion-86 emotion-87" + > + <div + class="emotion-62" + > + <h1 + class="emotion-8 emotion-9 emotion-91" + > + Atom Details + </h1> + <div + class="emotion-8 emotion-93" + > + Meta + </div> + <div + class="emotion-94" + > + <div + class="emotion-8 emotion-96" + data-testid="display-detail-item-label-Debug Label" + > + Debug Label + </div> + <code + class="emotion-97 emotion-98" + data-testid="display-detail-item-value-countAtom" + dir="ltr" + > + countAtom + </code> + </div> + <div + class="emotion-94" + > + <div + class="emotion-8 emotion-96" + data-testid="display-detail-item-label-Value type" + > + Value type + </div> + <code + class="emotion-97 emotion-98" + data-testid="display-detail-item-value-number" + dir="ltr" + > + number + </code> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-106" + > + Raw value + </div> + <div + class="emotion-107 emotion-108" + data-testid="atom-parsed-value" + translate="no" + > + <button + aria-label="Copy value" + class="emotion-16 emotion-17 emotion-111 emotion-112" + type="button" + > + <svg + fill="none" + height="15" + viewBox="0 0 15 15" + width="15" + xmlns="http://www.w3.org/2000/svg" + > + <path + clip-rule="evenodd" + d="M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z" + fill="currentColor" + fill-rule="evenodd" + /> + </svg> + </button> + <div + class="emotion-113 emotion-114 emotion-115" + dir="ltr" + style="position: relative; --radix-scroll-area-corner-width: 0px; --radix-scroll-area-corner-height: 0px;" + > + <style> + [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none} + </style> + <div + class="emotion-116 emotion-117" + data-radix-scroll-area-viewport="" + style="overflow-x: scroll; overflow-y: scroll;" + > + <div + style="min-width: 100%; display: table;" + > + <pre + class="emotion-118 emotion-119 prism-code language-markdown" + dir="ltr" + style="color: rgb(33, 37, 41); background-color: rgba(248, 249, 250, 0.65);" + > + <div + class="emotion-120 emotion-121 token-line" + > + <div + class="emotion-122 emotion-121Content" + > + <span + class="token plain" + > + 0 + </span> + </div> + </div> + </pre> + </div> + </div> + </div> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-126" + > + Dependents + </div> + <ol + class="emotion-127 emotion-128" + > + <li + class="emotion-129 emotion-130" + > + <div + class="__mantine-ref-itemWrapper emotion-131 emotion-129Wrapper" + > + <span> + <code + class="emotion-97 emotion-98" + data-testid="dependents-list-item-<unlabeled-atom>-0" + dir="ltr" + > + <unlabeled-atom> + </code> + </span> + </div> + </li> + </ol> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer List of atoms private atoms should mark private atoms in atom details 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-101 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-101 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-101 ._jotai-devtools-internal-panel-resize-handle, +.emotion-101:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-102 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-103 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-105 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + height: auto; +} + +.emotion-109 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 22px; + line-height: 1.4; + margin: 0; + margin-bottom: 10px; +} + +.emotion-109:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-109:focus:not(:focus-visible) { + outline: none; +} + +.emotion-111 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-111:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-111:focus:not(:focus-visible) { + outline: none; +} + +.emotion-112 { + margin-bottom: 10px; +} + +.emotion-114 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-size: 10px; + font-weight: bold; + text-transform: uppercase; +} + +.emotion-114:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-114:focus:not(:focus-visible) { + outline: none; +} + +.emotion-116 { + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.55; + padding: 2px calc(10px / 2); + border-radius: 4px; + color: #1A1B1E; + background-color: rgba(248, 249, 250, 1); + font-size: 12px; +} + +.emotion-126 { + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.55; + padding: 2px calc(10px / 2); + border-radius: 4px; + color: #1A1B1E; + background-color: rgba(255, 245, 245, 1); + font-size: 12px; +} + +.emotion-129 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; + font-weight: bold; +} + +.emotion-129:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-129:focus:not(:focus-visible) { + outline: none; +} + +.emotion-131 { + position: relative; + margin-bottom: 10px; +} + +.emotion-135 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: absolute; + top: 10px; + right: 10px; + left: unset; + z-index: 2; +} + +.emotion-135:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-135:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-135:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-135:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-135:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-135:disabled, +.emotion-135[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-135:disabled:active, +.emotion-135[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-135[data-loading] { + pointer-events: none; +} + +.emotion-135[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-135, +.emotion-135:hover { + background-color: #f8f9fa; +} + +.emotion-138 { + overflow: hidden; +} + +.emotion-139 { + width: 100%; + height: 100%; +} + +.emotion-141 { + box-sizing: border-box; + position: relative; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.7; + font-size: 13px; + border-radius: 4px; + padding: 12px 0; + margin-top: 0; + margin-bottom: 0; +} + +.emotion-143 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0 16px; +} + +.emotion-145 { + width: 100%; +} + +.emotion-149 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-top: 20px; + margin-bottom: 10px; + font-weight: bold; +} + +.emotion-149:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-149:focus:not(:focus-visible) { + outline: none; +} + +.emotion-151 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + font-size: 16px; + line-height: 1.55; + margin: 0; + padding-left: 0; + list-style-position: inside; + margin-bottom: 10px; +} + +.emotion-153 { + white-space: nowrap; + line-height: 1.55; +} + +.emotion-153:not(:first-of-type) { + margin-top: 0; +} + +.emotion-154 { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + white-space: normal; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r23-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r23-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r23-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r23-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r25:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r27:" + data-panel-size="50.0" + id="data-panel-id-:r27:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r29" + id="mantine-r29-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r29" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + countAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + <unlabeled-atom> + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + <button + class="emotion-16 emotion-48 emotion-49" + data-active="true" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + privateAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + data-active="true" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r27:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r25:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r2b:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-101" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-102" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":r2d:" + data-panel-size="50.0" + id="data-panel-id-:r2d:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-103" + > + <div + class="emotion-104 emotion-105" + > + <div + class="emotion-62" + > + <h1 + class="emotion-8 emotion-9 emotion-109" + > + Atom Details + </h1> + <div + class="emotion-8 emotion-111" + > + Meta + </div> + <div + class="emotion-112" + > + <div + class="emotion-8 emotion-114" + data-testid="display-detail-item-label-Debug Label" + > + Debug Label + </div> + <code + class="emotion-115 emotion-116" + data-testid="display-detail-item-value-privateAtom" + dir="ltr" + > + privateAtom + </code> + </div> + <div + class="emotion-112" + > + <div + class="emotion-8 emotion-114" + data-testid="display-detail-item-label-Value type" + > + Value type + </div> + <code + class="emotion-115 emotion-116" + data-testid="display-detail-item-value-number" + dir="ltr" + > + number + </code> + </div> + <div + class="emotion-112" + > + <div + class="emotion-8 emotion-114" + data-testid="display-detail-item-label-Private" + > + Private + </div> + <code + class="emotion-115 emotion-126" + data-testid="display-detail-item-value-Yes" + dir="ltr" + > + Yes + </code> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-129" + > + Raw value + </div> + <div + class="emotion-130 emotion-131" + data-testid="atom-parsed-value" + translate="no" + > + <button + aria-label="Copy value" + class="emotion-16 emotion-17 emotion-134 emotion-135" + type="button" + > + <svg + fill="none" + height="15" + viewBox="0 0 15 15" + width="15" + xmlns="http://www.w3.org/2000/svg" + > + <path + clip-rule="evenodd" + d="M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z" + fill="currentColor" + fill-rule="evenodd" + /> + </svg> + </button> + <div + class="emotion-136 emotion-137 emotion-138" + dir="ltr" + style="position: relative; --radix-scroll-area-corner-width: 0px; --radix-scroll-area-corner-height: 0px;" + > + <style> + [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none} + </style> + <div + class="emotion-139 emotion-140" + data-radix-scroll-area-viewport="" + style="overflow-x: scroll; overflow-y: scroll;" + > + <div + style="min-width: 100%; display: table;" + > + <pre + class="emotion-141 emotion-142 prism-code language-markdown" + dir="ltr" + style="color: rgb(33, 37, 41); background-color: rgba(248, 249, 250, 0.65);" + > + <div + class="emotion-143 emotion-144 token-line" + > + <div + class="emotion-145 emotion-144Content" + > + <span + class="token plain" + > + 0 + </span> + </div> + </div> + </pre> + </div> + </div> + </div> + </div> + </div> + <div + class="emotion-62" + > + <div + class="emotion-8 emotion-149" + > + Dependents + </div> + <ol + class="emotion-150 emotion-151" + > + <li + class="emotion-152 emotion-153" + > + <div + class="__mantine-ref-itemWrapper emotion-154 emotion-152Wrapper" + > + <span> + <code + class="emotion-115 emotion-116" + data-testid="dependents-list-item-<unlabeled-atom>-0" + dir="ltr" + > + <unlabeled-atom> + </code> + </span> + </div> + </li> + </ol> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer List of atoms should render atom viewer with correct atoms without provider 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-49 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: 8px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 5px; +} + +.emotion-49:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-49:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-49:hover { + background-color: #f8f9fa; + } +} + +@media (hover: none) { + .emotion-49:active { + background-color: #f8f9fa; + } +} + +.emotion-49[data-active] { + background-color: #25262b; + color: #fff; +} + +@media (hover: hover) { + .emotion-49[data-active]:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-49[data-active]:active { + background-color: #1A1B1E; + } +} + +.emotion-49[data-disabled] { + opacity: 0.4; + pointer-events: none; +} + +.emotion-50 { + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-54 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-54:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-54:focus:not(:focus-visible) { + outline: none; +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #868e96; + font-size: 12px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: block; +} + +.emotion-59:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-59:focus:not(:focus-visible) { + outline: none; +} + +.emotion-59[data-active] { + color: inherit; +} + +.emotion-60 { + margin-left: 12px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: -webkit-transform 150ms ease; + transition: transform 150ms ease; +} + +.emotion-60[data-rotate] { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.emotion-63 { + padding-left: 20px; +} + +.emotion-83 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-83 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-83 ._jotai-devtools-internal-panel-resize-handle, +.emotion-83:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-84 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-85 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-86 { + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +.emotion-88 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + text-align: center; + width: 100%; +} + +.emotion-88:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-88:focus:not(:focus-visible) { + outline: none; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-rd-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-rd-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-rd-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-rd-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":rf:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":rh:" + data-panel-size="50.0" + id="data-panel-id-:rh:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-rj" + id="mantine-rj-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-rj" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + > + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + countAtom + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + <button + class="emotion-16 emotion-48 emotion-49" + type="button" + > + <span + class="emotion-50 emotion-51" + > + <span + class="emotion-8 emotion-53 emotion-54" + > + <div + class="emotion-8 emotion-56" + > + <unlabeled-atom> + </div> + </span> + <span + class="emotion-8 emotion-58 emotion-59" + /> + </span> + <span + class="emotion-60 emotion-61" + > + <svg + class="icon icon-tabler icon-tabler-chevron-right" + fill="none" + height="12" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.5" + viewBox="0 0 24 24" + width="12" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <polyline + points="9 6 15 12 9 18" + /> + </svg> + </span> + </button> + <div + aria-hidden="true" + class="emotion-62" + style="box-sizing: border-box; display: none; height: 0px; overflow: hidden;" + > + <div + style="opacity: 0; transition: opacity 200ms ease;" + > + <div + class="emotion-63 emotion-64" + /> + </div> + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:rh:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":rf:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":rl:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-83" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-84" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":rn:" + data-panel-size="50.0" + id="data-panel-id-:rn:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-85" + > + <div + class="emotion-86" + > + <div + class="emotion-8 emotion-88" + > + Select an atom from the left panel to view the details + + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; + +exports[`DevTools - AtomViewer List of atoms should render atom viewer without any errors if there are no atoms 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + border-bottom: 2px solid #dee2e6; +} + +.emotion-26 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + position: relative; + padding: 10px 16px; + padding-left: 10px; + font-size: 14px; + white-space: nowrap; + z-index: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + line-height: 1; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + border-radius: 4px 4px 0 0; +} + +.emotion-26:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-26:focus:not(:focus-visible) { + outline: none; +} + +.emotion-26:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +@media (hover: hover) { + .emotion-26:disabled:hover { + background-color: transparent; + } +} + +@media (hover: none) { + .emotion-26:disabled:active { + background-color: transparent; + } +} + +.emotion-26:focus { + z-index: 1; +} + +@media (hover: hover) { + .emotion-26:hover { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +@media (hover: none) { + .emotion-26:active { + background-color: #f8f9fa; + border-color: #dee2e6; + } +} + +.emotion-26[data-active] { + border-color: #25262b; + color: #000; +} + +@media (hover: hover) { + .emotion-26[data-active]:hover { + border-color: #25262b; + } +} + +@media (hover: none) { + .emotion-26[data-active]:active { + border-color: #25262b; + } +} + +.emotion-27 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-27:not(:only-child) { + margin-right: 7px; +} + +.emotion-32 { + height: 100%; + overflow: hidden; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +.emotion-33 { + padding: 10px; + padding-top: 0; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + background: #e9ecef; +} + +.emotion-36 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + line-height: 1.55; + position: -webkit-sticky; + position: sticky; + top: 0; + padding-top: 10px; + padding-bottom: 10px; +} + +.emotion-39 { + display: inline-block; + font-size: 14px; + font-weight: 500; + color: #212529; + word-break: break-word; + cursor: default; + -webkit-tap-highlight-color: transparent; +} + +.emotion-42 { + position: relative; +} + +.emotion-45 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + height: 36px; + -webkit-tap-highlight-color: transparent; + line-height: 34px; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + resize: none; + box-sizing: border-box; + font-size: 14px; + width: 100%; + color: #000; + display: block; + text-align: left; + min-height: 36px; + padding-left: 12px; + padding-right: 12px; + border-radius: 4px; + border: 1px solid #ced4da; + background-color: #fff; + -webkit-transition: border-color 100ms ease; + transition: border-color 100ms ease; +} + +.emotion-45:disabled { + background-color: #f1f3f5; + color: #909296; + opacity: 0.6; + cursor: not-allowed; +} + +.emotion-45:disabled::-webkit-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::-moz-placeholder { + color: #909296; +} + +.emotion-45:disabled:-ms-input-placeholder { + color: #909296; +} + +.emotion-45:disabled::placeholder { + color: #909296; +} + +.emotion-45::-webkit-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-moz-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45:-ms-input-placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::placeholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #adb5bd; + opacity: 1; +} + +.emotion-45::-webkit-inner-spin-button, +.emotion-45::-webkit-outer-spin-button, +.emotion-45::-webkit-search-decoration, +.emotion-45::-webkit-search-cancel-button, +.emotion-45::-webkit-search-results-button, +.emotion-45::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.emotion-45[type=number] { + -moz-appearance: textfield; +} + +.emotion-45:focus, +.emotion-45:focus-within { + outline: none; + border-color: #25262b; +} + +.emotion-46 { + overflow: auto; +} + +.emotion-48 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + gap: 16px; + margin-top: 20px; +} + +.emotion-48>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-50 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-left: 0; + font-size: 14px; +} + +.emotion-50:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-50:focus:not(:focus-visible) { + outline: none; +} + +.emotion-51 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5; + height: 100%; +} + +.emotion-51 ._jotai-devtools-internal-panel-resize-handle { + -webkit-transition: max-height,min-height,height,0.2s ease-out; + transition: max-height,min-height,height,0.2s ease-out; +} + +[data-resize-handle-active] .emotion-51 ._jotai-devtools-internal-panel-resize-handle, +.emotion-51:hover ._jotai-devtools-internal-panel-resize-handle { + height: 90%; + min-height: 90%; + max-height: 90%; +} + +.emotion-52 { + border-radius: 2rem; + vertical-align: middle; + margin: 5px; + background: #dee2e6; + width: 5px; + height: 20%; + min-height: 50px; + max-height: 100px; +} + +.emotion-53 { + padding: 10px; + height: 100%; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-54 { + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +.emotion-56 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + text-align: center; + width: 100%; +} + +.emotion-56:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-56:focus:not(:focus-visible) { + outline: none; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + aria-orientation="horizontal" + class="emotion-22 emotion-23" + role="tablist" + > + <button + aria-controls="mantine-r1-panel-atom-viewer" + aria-selected="true" + class="emotion-16 emotion-25 emotion-26" + data-active="true" + id="mantine-r1-tab-atom-viewer" + role="tab" + tabindex="0" + type="button" + > + <div + class="emotion-27 emotion-25Icon" + > + <svg + class="icon icon-tabler icon-tabler-layout-list" + fill="none" + height="14" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="14" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="4" + /> + <rect + height="6" + rx="2" + width="16" + x="4" + y="14" + /> + </svg> + </div> + <div + class="emotion-29 emotion-25Label" + > + Atom Viewer + </div> + </button> + </div> + <div + aria-labelledby="mantine-r1-tab-atom-viewer" + class="emotion-31 emotion-32" + id="mantine-r1-panel-atom-viewer" + role="tabpanel" + > + <div + class="" + data-panel-group="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r3:" + style="display: flex; flex-direction: row; height: 100%; overflow: hidden; width: 100%;" + > + <div + class="" + data-panel="" + data-panel-id=":r5:" + data-panel-size="50.0" + id="data-panel-id-:r5:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-33" + > + <div + class="emotion-34 emotion-35 emotion-36" + > + <label + class="emotion-37 emotion-38 emotion-39" + for="mantine-r7" + id="mantine-r7-label" + > + Search + </label> + <div + class="emotion-40 emotion-41 emotion-42" + > + <input + aria-invalid="false" + class="emotion-43 emotion-44 emotion-45" + id="mantine-r7" + placeholder="atom debug label" + type="text" + value="" + /> + </div> + </div> + <div + class="emotion-46" + /> + <div + class="emotion-6 emotion-48" + > + <svg + class="icon icon-tabler icon-tabler-alert-circle" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <circle + cx="12" + cy="12" + r="9" + /> + <line + x1="12" + x2="12" + y1="8" + y2="12" + /> + <line + x1="12" + x2="12.01" + y1="16" + y2="16" + /> + </svg> + <div + class="emotion-8 emotion-50" + data-testid="atom-list-no-atoms-found-message" + > + No Atoms found! + </div> + </div> + </div> + </div> + <div + aria-controls="data-panel-id-:r5:" + aria-valuemax="70" + aria-valuemin="30" + aria-valuenow="50" + class="" + data-panel-group-direction="horizontal" + data-panel-group-id=":r3:" + data-panel-resize-handle-enabled="true" + data-panel-resize-handle-id=":r9:" + role="separator" + style="cursor: col-resize; user-select: none;" + tabindex="0" + > + <div + class="emotion-51" + > + <div + class="_jotai-devtools-internal-panel-resize-handle emotion-52" + /> + </div> + </div> + <div + class="" + data-panel="" + data-panel-id=":rb:" + data-panel-size="50.0" + id="data-panel-id-:rb:" + style="flex-basis: 0px; flex-grow: 50; flex-shrink: 1; overflow: auto;" + > + <div + class="emotion-53" + > + <div + class="emotion-54" + > + <div + class="emotion-8 emotion-56" + > + Select an atom from the left panel to view the details + + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +`; diff --git a/__tests__/devtools/__snapshots__/basic.test.tsx.snap b/__tests__/devtools/__snapshots__/basic.test.tsx.snap new file mode 100644 index 00000000..d846bfc5 --- /dev/null +++ b/__tests__/devtools/__snapshots__/basic.test.tsx.snap @@ -0,0 +1,1899 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DevTools - basic Error boundary should display an error boundary with message if stack is not present 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-22 { + height: 90%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + overflow: scroll; +} + +.emotion-23 { + width: 100%; + max-width: 80%; + max-height: 80%; +} + +.emotion-25 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: 16px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 5px; + font-weight: 500; +} + +.emotion-25:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-25:focus:not(:focus-visible) { + outline: none; +} + +.emotion-27 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-right: 5px; +} + +.emotion-27:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-27:focus:not(:focus-visible) { + outline: none; +} + +.emotion-29 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; +} + +.emotion-29:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-29:focus:not(:focus-visible) { + outline: none; +} + +.emotion-32 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + background-color: transparent; + cursor: pointer; + padding: 0; + border: 0; + -webkit-text-decoration: underline; + text-decoration: underline; +} + +.emotion-32:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-32:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-32:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } +} + +@media (hover: none) { + .emotion-32:active { + -webkit-text-decoration: underline; + text-decoration: underline; + } +} + +.emotion-34 { + position: relative; +} + +.emotion-38 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: absolute; + top: 10px; + right: 10px; + left: unset; + z-index: 2; +} + +.emotion-38:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-38:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-38:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-38:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-38:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-38:disabled, +.emotion-38[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-38:disabled:active, +.emotion-38[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-38[data-loading] { + pointer-events: none; +} + +.emotion-38[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-38, +.emotion-38:hover { + background-color: #f8f9fa; +} + +.emotion-41 { + overflow: hidden; +} + +.emotion-42 { + width: 100%; + height: 100%; +} + +.emotion-44 { + box-sizing: border-box; + position: relative; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.7; + font-size: 13px; + border-radius: 4px; + padding: 12px 0; + margin-top: 0; + margin-bottom: 0; +} + +.emotion-46 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0 16px; +} + +.emotion-48 { + width: 100%; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + class="emotion-22" + data-testid="jotai-devtools-error-boundary" + role="alert" + > + <div + class="emotion-23" + > + <div + class="emotion-8 emotion-25" + > + <div + class="emotion-8 emotion-27" + > + <svg + class="icon icon-tabler icon-tabler-alert-circle" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <circle + cx="12" + cy="12" + r="9" + /> + <line + x1="12" + x2="12" + y1="8" + y2="12" + /> + <line + x1="12" + x2="12.01" + y1="16" + y2="16" + /> + </svg> + </div> + Uh-oh, something went wrong. + </div> + <div + class="emotion-8 emotion-29" + > + If you believe this to be a bug, please file an issue on + + <a + class="emotion-8 emotion-31 emotion-32" + href="https://github.com/jotaijs/jotai-devtools/issues" + rel="noreferrer noopener" + target="_blank" + > + Jotai DevTool's GitHub repo + </a> + + with a minimal reproduction and the following error + </div> + <div + class="emotion-33 emotion-34" + translate="no" + > + <button + aria-label="Copy code" + class="emotion-16 emotion-17 emotion-37 emotion-38" + type="button" + > + <svg + fill="none" + height="15" + viewBox="0 0 15 15" + width="15" + xmlns="http://www.w3.org/2000/svg" + > + <path + clip-rule="evenodd" + d="M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z" + fill="currentColor" + fill-rule="evenodd" + /> + </svg> + </button> + <div + class="emotion-39 emotion-40 emotion-41" + dir="ltr" + style="position: relative; --radix-scroll-area-corner-width: 0px; --radix-scroll-area-corner-height: 0px;" + > + <style> + [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none} + </style> + <div + class="emotion-42 emotion-43" + data-radix-scroll-area-viewport="" + style="overflow-x: scroll; overflow-y: scroll;" + > + <div + style="min-width: 100%; display: table;" + > + <pre + class="emotion-44 emotion-45 prism-code language-javascript" + dir="ltr" + style="color: rgb(33, 37, 41); background-color: rgba(248, 249, 250, 0.65);" + > + <div + class="emotion-46 emotion-47 token-line" + > + <div + class="emotion-48 emotion-47Content" + > + <span + class="token maybe-class-name" + > + Test + </span> + <span + class="token plain" + > + + </span> + <span + class="token known-class-name class-name" + style="color: rgb(201, 42, 42);" + > + Error + </span> + </div> + </div> + </pre> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <button> + trigger error + </button> +</div> +`; + +exports[`DevTools - basic Error boundary should display an error boundary with stack 1`] = ` +.emotion-1 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + color: #000; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 16px; +} + +.emotion-1 *, +.emotion-1 *::before, +.emotion-1 *::after { + box-sizing: border-box; +} + +.emotion-2 { + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + position: fixed; + left: 0; + bottom: 0; + width: calc(100% - 20px); + border-color: #dee2e6; + border-width: 1px; + border-style: solid; + border-radius: 8px; + background: #fff; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + z-index: 99999; + margin: 10px; + height: 370px; + max-height: 90%; +} + +.emotion-3 { + width: 100%; + height: 5px; + cursor: row-resize; + z-index: 2; + position: absolute; + top: -2px; +} + +.emotion-4 { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1; + width: 100%; +} + +.emotion-5 { + padding: 10px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.emotion-7 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + gap: 16px; + margin-right: 10px; +} + +.emotion-7>* { + box-sizing: border-box; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.emotion-10 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; + font-weight: 700; + font-size: 18px; + line-height: 1.45; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.emotion-10:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-10:focus:not(:focus-visible) { + outline: none; +} + +.emotion-12 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + font-size: 9px; + height: 16px; + line-height: 14px; + -webkit-text-decoration: none; + text-decoration: none; + padding: 0 6.666666666666667px; + box-sizing: border-box; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: auto; + text-transform: uppercase; + border-radius: 32px; + font-weight: 700; + letter-spacing: 0.25px; + cursor: inherit; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(255, 244, 230, 1); + color: #fd7e14; + border: 1px solid transparent; +} + +.emotion-12:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-12:focus:not(:focus-visible) { + outline: none; +} + +.emotion-13 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-18 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: #25262b; + color: #fff; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-18:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-18:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-18:hover { + background-color: #1A1B1E; + } +} + +@media (hover: none) { + .emotion-18:active { + background-color: #1A1B1E; + } +} + +.emotion-18:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-18:disabled, +.emotion-18[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-18:disabled:active, +.emotion-18[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-18[data-loading] { + pointer-events: none; +} + +.emotion-18[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-21 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 8px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-left: 10px; +} + +.emotion-21:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-21:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-21:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-21:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-21:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-21:disabled, +.emotion-21[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-21:disabled:active, +.emotion-21[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-21[data-loading] { + pointer-events: none; +} + +.emotion-21[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 8px; + cursor: not-allowed; +} + +.emotion-22 { + height: 90%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + overflow: scroll; +} + +.emotion-23 { + width: 100%; + max-width: 80%; + max-height: 80%; +} + +.emotion-25 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: 16px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 5px; + font-weight: 500; +} + +.emotion-25:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-25:focus:not(:focus-visible) { + outline: none; +} + +.emotion-27 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: inherit; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-right: 5px; +} + +.emotion-27:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-27:focus:not(:focus-visible) { + outline: none; +} + +.emotion-29 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: 14px; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + margin-bottom: 12px; +} + +.emotion-29:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-29:focus:not(:focus-visible) { + outline: none; +} + +.emotion-32 { + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + -webkit-tap-highlight-color: transparent; + color: #e03131; + font-size: inherit; + line-height: 1.55; + -webkit-text-decoration: none; + text-decoration: none; + background-color: transparent; + cursor: pointer; + padding: 0; + border: 0; + -webkit-text-decoration: underline; + text-decoration: underline; +} + +.emotion-32:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-32:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-32:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } +} + +@media (hover: none) { + .emotion-32:active { + -webkit-text-decoration: underline; + text-decoration: underline; + } +} + +.emotion-34 { + position: relative; +} + +.emotion-38 { + -webkit-tap-highlight-color: transparent; + font-family: Inter,-apple-system,BlinkMacSystemFont,Segoe,sans-serif; + cursor: pointer; + border: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + font-size: 16px; + background-color: transparent; + text-align: left; + color: #000; + -webkit-text-decoration: none; + text-decoration: none; + box-sizing: border-box; + border: 1px solid transparent; + background-color: transparent; + color: #868e96; + position: relative; + height: 28px; + min-height: 28px; + width: 28px; + min-width: 28px; + border-radius: 4px; + padding: 0; + line-height: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: absolute; + top: 10px; + right: 10px; + left: unset; + z-index: 2; +} + +.emotion-38:focus { + outline-offset: 2px; + outline: 2px solid #2C2E33; +} + +.emotion-38:focus:not(:focus-visible) { + outline: none; +} + +@media (hover: hover) { + .emotion-38:hover { + background-color: rgba(248, 249, 250, 1); + } +} + +@media (hover: none) { + .emotion-38:active { + background-color: rgba(248, 249, 250, 1); + } +} + +.emotion-38:active { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.emotion-38:disabled, +.emotion-38[data-disabled] { + color: #ced4da; + cursor: not-allowed; + background-color: #f1f3f5; + border-color: #f1f3f5; + background-image: none; + pointer-events: none; +} + +.emotion-38:disabled:active, +.emotion-38[data-disabled]:active { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + transform: none; +} + +.emotion-38[data-loading] { + pointer-events: none; +} + +.emotion-38[data-loading]::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + background-color: rgba(255, 255, 255, .5); + border-radius: 4px; + cursor: not-allowed; +} + +.emotion-38, +.emotion-38:hover { + background-color: #f8f9fa; +} + +.emotion-41 { + overflow: hidden; +} + +.emotion-42 { + width: 100%; + height: 100%; +} + +.emotion-44 { + box-sizing: border-box; + position: relative; + font-family: JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace; + line-height: 1.7; + font-size: 13px; + border-radius: 4px; + padding: 12px 0; + margin-top: 0; + margin-bottom: 0; +} + +.emotion-46 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0 16px; +} + +.emotion-48 { + width: 100%; +} + +<div> + <div + class="emotion-0 emotion-1 emotion-2" + data-testid="emotion-1" + > + <div + class="emotion-3" + data-testid="shell-resize-bar" + /> + <div + class="emotion-4" + > + <div + class="emotion-5" + > + <div + class="emotion-6 emotion-7" + > + <h1 + class="emotion-8 emotion-9 emotion-10" + > + π» JΕtai DevTools + </h1> + <div + class="emotion-11 emotion-12" + > + <span + class="emotion-13 emotion-14" + > + Alpha + </span> + </div> + </div> + <div + class="emotion-15" + > + <button + class="emotion-16 emotion-17 emotion-18" + title="Toggle color scheme" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-moon-stars" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <path + d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" + /> + <path + d="M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" + /> + <path + d="M19 11h2m-1 -1v2" + /> + </svg> + </button> + <button + class="emotion-16 emotion-17 emotion-21" + title="Minimize panel" + type="button" + > + <svg + class="icon icon-tabler icon-tabler-minus" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <line + x1="5" + x2="19" + y1="12" + y2="12" + /> + </svg> + </button> + </div> + </div> + </div> + <div + class="emotion-22" + data-testid="jotai-devtools-error-boundary" + role="alert" + > + <div + class="emotion-23" + > + <div + class="emotion-8 emotion-25" + > + <div + class="emotion-8 emotion-27" + > + <svg + class="icon icon-tabler icon-tabler-alert-circle" + fill="none" + height="16" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2" + viewBox="0 0 24 24" + width="16" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M0 0h24v24H0z" + fill="none" + stroke="none" + /> + <circle + cx="12" + cy="12" + r="9" + /> + <line + x1="12" + x2="12" + y1="8" + y2="12" + /> + <line + x1="12" + x2="12.01" + y1="16" + y2="16" + /> + </svg> + </div> + Uh-oh, something went wrong. + </div> + <div + class="emotion-8 emotion-29" + > + If you believe this to be a bug, please file an issue on + + <a + class="emotion-8 emotion-31 emotion-32" + href="https://github.com/jotaijs/jotai-devtools/issues" + rel="noreferrer noopener" + target="_blank" + > + Jotai DevTool's GitHub repo + </a> + + with a minimal reproduction and the following error + </div> + <div + class="emotion-33 emotion-34" + translate="no" + > + <button + aria-label="Copy code" + class="emotion-16 emotion-17 emotion-37 emotion-38" + type="button" + > + <svg + fill="none" + height="15" + viewBox="0 0 15 15" + width="15" + xmlns="http://www.w3.org/2000/svg" + > + <path + clip-rule="evenodd" + d="M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z" + fill="currentColor" + fill-rule="evenodd" + /> + </svg> + </button> + <div + class="emotion-39 emotion-40 emotion-41" + dir="ltr" + style="position: relative; --radix-scroll-area-corner-width: 0px; --radix-scroll-area-corner-height: 0px;" + > + <style> + [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none} + </style> + <div + class="emotion-42 emotion-43" + data-radix-scroll-area-viewport="" + style="overflow-x: scroll; overflow-y: scroll;" + > + <div + style="min-width: 100%; display: table;" + > + <pre + class="emotion-44 emotion-45 prism-code language-javascript" + dir="ltr" + style="color: rgb(33, 37, 41); background-color: rgba(248, 249, 250, 0.65);" + > + <div + class="emotion-46 emotion-47 token-line" + > + <div + class="emotion-48 emotion-47Content" + > + <span + class="token plain" + > + some + </span> + <span + class="token operator" + style="color: rgb(201, 42, 42);" + > + - + </span> + <span + class="token plain" + > + stack + </span> + </div> + </div> + </pre> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <button> + trigger error + </button> +</div> +`; diff --git a/__tests__/devtools/basic.test.tsx b/__tests__/devtools/basic.test.tsx new file mode 100644 index 00000000..0996e599 --- /dev/null +++ b/__tests__/devtools/basic.test.tsx @@ -0,0 +1,157 @@ +import React, { useMemo } from 'react'; +import { act, fireEvent, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { atom, useAtom } from 'jotai'; +import { DevTools } from 'jotai-devtools'; +import { customRender } from '../custom-render'; + +describe('DevTools - basic', () => { + it('should render the trigger button', () => { + customRender(<DevTools />); + expect(screen.getByTitle('Open Jotai Devtools')).toBeInTheDocument(); + }); + + it('should open the devtools upon clicking the button', async () => { + customRender(<DevTools />); + const foundButton = screen.getByTitle('Open Jotai Devtools'); + userEvent.click(foundButton); + + await waitFor(() => + expect(screen.getByText('π» JΕtai DevTools')).toBeInTheDocument(), + ); + expect(screen.getByText('Atom Viewer')).toBeInTheDocument(); + expect( + screen.getByText( + 'Select an atom from the left panel to view the details', + ), + ).toBeInTheDocument(); + }); + + it('should resize the devtools upon dragging the resize bar', async () => { + customRender(<DevTools isInitialOpen={true} />); + + expect(document.body).toHaveStyle({ + paddingBottom: '370px', + }); + + expect(screen.getByTestId('jotai-devtools-shell')).toHaveStyle({ + height: '370px', + }); + + await act(async () => { + const resizeBar = screen.getByTestId('shell-resize-bar'); + await fireEvent.mouseDown(resizeBar, { clientY: 500 }); + await fireEvent.mouseMove(resizeBar, { clientY: 400 }); + await fireEvent.mouseUp(resizeBar, { clientY: 400 }); + }); + + expect(screen.getByTestId('jotai-devtools-shell')).toHaveStyle({ + height: '200px', + }); + + expect(document.body).toHaveStyle({ + paddingBottom: '200px', + }); + }); + + describe('Error boundary', () => { + const ogConsoleError = console.error; + + beforeEach(() => { + console.error = jest.fn(); + }); + + afterEach(() => { + console.error = ogConsoleError; + jest.resetAllMocks(); + jest.restoreAllMocks(); + }); + + const ComponentThatThrows = () => { + const baseErrorAtom = useMemo(() => atom(0), []); + + const triggerErrorAtom = useMemo( + () => + atom( + (get) => { + const val = get(baseErrorAtom); + if (val >= 1) { + const randomFn = function () {}; + randomFn.toString = () => { + throw new Error('Test Error'); + }; + return randomFn; + } + + return val; + }, + (get, set) => set(baseErrorAtom, (prev) => prev + 1), + ), + [baseErrorAtom], + ); + + triggerErrorAtom.debugLabel = 'triggerErrorAtom'; + + const [, triggerError] = useAtom(triggerErrorAtom); + return ( + <> + <DevTools isInitialOpen={true} /> + <button onClick={triggerError}>trigger error</button> + </> + ); + }; + + it('should display an error boundary with stack', async () => { + const ogErrorSpy = jest.spyOn(global, 'Error'); + ogErrorSpy.mockImplementation((message) => { + return { + name: 'Error', + message, + stack: 'some-stack', + } as Error; + }); + const { container } = customRender(<ComponentThatThrows />); + + await act(async () => { + await userEvent.click(screen.getByText('triggerErrorAtom')); + await userEvent.click(screen.getByText('trigger error')); + }); + + expect( + screen.getByTestId('jotai-devtools-error-boundary'), + ).toBeInTheDocument(); + + expect( + screen.getByTestId('jotai-devtools-error-boundary'), + ).toHaveTextContent('some-stack'); + + expect(container).toMatchSnapshot(); + }); + + it('should display an error boundary with message if stack is not present', async () => { + const ogErrorSpy = jest.spyOn(global, 'Error'); + ogErrorSpy.mockImplementation((message) => { + return { + name: 'Error', + message, + } as Error; + }); + const { container } = customRender(<ComponentThatThrows />); + + await act(async () => { + await userEvent.click(screen.getByText('triggerErrorAtom')); + await userEvent.click(screen.getByText('trigger error')); + }); + + expect( + screen.getByTestId('jotai-devtools-error-boundary'), + ).toBeInTheDocument(); + + expect( + screen.getByTestId('jotai-devtools-error-boundary'), + ).toHaveTextContent('Test Error'); + + expect(container).toMatchSnapshot(); + }); + }); +}); diff --git a/__tests__/setup.ts b/__tests__/setup.ts new file mode 100644 index 00000000..ad939f93 --- /dev/null +++ b/__tests__/setup.ts @@ -0,0 +1,3 @@ +import * as ResizeObserverModule from 'resize-observer-polyfill'; + +(global as any).ResizeObserver = ResizeObserverModule.default; diff --git a/__tests__/devtools/useAtomDevtools.test.tsx b/__tests__/utils/useAtomDevtools.test.tsx similarity index 100% rename from __tests__/devtools/useAtomDevtools.test.tsx rename to __tests__/utils/useAtomDevtools.test.tsx diff --git a/__tests__/devtools/useAtomsDevtools.test.tsx b/__tests__/utils/useAtomsDevtools.test.tsx similarity index 100% rename from __tests__/devtools/useAtomsDevtools.test.tsx rename to __tests__/utils/useAtomsDevtools.test.tsx diff --git a/__tests__/devtools/useAtomsSnapshot.test.tsx b/__tests__/utils/useAtomsSnapshot.test.tsx similarity index 100% rename from __tests__/devtools/useAtomsSnapshot.test.tsx rename to __tests__/utils/useAtomsSnapshot.test.tsx diff --git a/__tests__/devtools/useGoToAtomsSnapshot.test.tsx b/__tests__/utils/useGoToAtomsSnapshot.test.tsx similarity index 100% rename from __tests__/devtools/useGoToAtomsSnapshot.test.tsx rename to __tests__/utils/useGoToAtomsSnapshot.test.tsx diff --git a/docs/internal/demo-screenshot.png b/docs/internal/demo-screenshot.png new file mode 100644 index 00000000..4bd0c873 Binary files /dev/null and b/docs/internal/demo-screenshot.png differ diff --git a/jest.config.ts b/jest.config.ts index df64664d..72841388 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -37,14 +37,27 @@ const config: Config.InitialOptions = { moduleNameMapper: { '^jotai-devtools$': '<rootDir>/src/index.ts', '^jotai-devtools/(.*)$': '<rootDir>/src/$1.ts', + '\\.(css|less|sass|scss|woff2)$': '<rootDir>/__mocks__/styleMock.js', }, modulePathIgnorePatterns: ['dist'], globals: { __DEV__: true, }, coverageReporters: ['json', 'html', 'text', 'text-summary'], - collectCoverageFrom: ['src/**/*.{js,ts,tsx}', '__tests__/**/*.{js,ts,tsx}'], + collectCoverageFrom: [ + 'src/**/*.{js,ts,tsx}', + '!src/**/*.stories.{js,ts,tsx}', + '!src/stories/**', + // Copied as is from Jotai core and we're not changing it + '!src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/use.ts', + '__tests__/**/*.{js,ts,tsx}', + ], coverageDirectory: './coverage/', + setupFilesAfterEnv: [ + '@testing-library/jest-dom/extend-expect', + '<rootDir>/__tests__/setup.ts', + ], + snapshotSerializers: ['@emotion/jest/serializer'], }; export default config; diff --git a/package.json b/package.json index 9b1dc932..78efb93b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jotai-devtools", - "version": "0.2.0", + "version": "0.3.0-next.4", "description": "A powerful toolkit to enhance your development experience with Jotai", "author": { "name": "Arjun Vegda", @@ -55,11 +55,13 @@ "release": "release-it", "release:next": "yarn run release --preRelease=next", "release:minor": "yarn run release minor", - "release:patch": "yarn run release patch" + "release:patch": "yarn run release patch", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" }, "repository": { "type": "git", - "url": "https://github.com/jotai-labs/jotai-devtools.git" + "url": "https://github.com/jotaijs/jotai-devtools.git" }, "keywords": [ "jotai", @@ -72,9 +74,9 @@ ], "license": "MIT", "bugs": { - "url": "https://github.com/jotai-labs/jotai-devtools/issues" + "url": "https://github.com/jotaijs/jotai-devtools/issues" }, - "homepage": "https://github.com/jotai-labs/jotai-devtools", + "homepage": "https://github.com/jotaijs/jotai-devtools", "engines": { "node": ">=14.0.0" }, @@ -83,18 +85,36 @@ "registry": "https://registry.npmjs.org" }, "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", "@commitlint/cli": "^17.4.0", "@commitlint/config-conventional": "^17.4.0", + "@emotion/jest": "^11.10.5", "@release-it/conventional-changelog": "^5.1.1", + "@storybook/addon-a11y": "^7.0.0-beta.43", + "@storybook/addon-actions": "^7.0.0-beta.43", + "@storybook/addon-essentials": "^7.0.0-beta.43", + "@storybook/addon-interactions": "^7.0.0-beta.43", + "@storybook/addon-links": "^7.0.0-beta.43", + "@storybook/react": "^7.0.0-beta.43", + "@storybook/react-webpack5": "^7.0.0-beta.43", + "@storybook/testing-library": "^0.0.14-next.1", "@swc/core": "^1.3.25", "@swc/jest": "^0.2.24", + "@tanstack/query-core": "^4.24.10", + "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.4.3", "@types/jest": "^29.2.5", "@types/node": "^18.11.18", "@types/react": "^18.0.26", "@types/react-dom": "^18.0.10", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", + "babel-loader": "^8.3.0", + "esbuild": "^0.17.10", "esbuild-plugin-replace": "^1.3.0", "eslint": "^8.31.0", "eslint-config-prettier": "^8.6.0", @@ -105,27 +125,42 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.31.11", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-storybook": "^0.6.10", "husky": "^8.0.0", "jest": "^29.3.1", "jest-environment-jsdom": "^29.3.1", "jest-watch-typeahead": "^2.2.1", - "jotai": "^2.0.0", + "jotai": "^2.0.3", + "jotai-tanstack-query": "^0.5.0", "lint-staged": "^13.1.0", "prettier": "^2.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redux": "^4.2.0", "release-it": "^15.6.0", + "resize-observer-polyfill": "^1.5.1", "rimraf": "^3.0.2", + "rxjs": "^7.8.0", "shelljs": "^0.8.5", - "tsup": "^6.5.0", - "typescript": "^4.9.4" + "storybook": "^7.0.0-beta.43", + "tsup": "^6.6.3", + "typescript": "^4.9.4", + "webpack": "^5.75.0" }, "peerDependencies": { "jotai": ">=1.11.0", "react": ">=17.0.0" }, "dependencies": { - "@redux-devtools/extension": "^3.2.3" + "@emotion/react": "^11.10.5", + "@mantine/core": "^5.10.3", + "@mantine/hooks": "^5.10.3", + "@mantine/prism": "^5.10.3", + "@redux-devtools/extension": "^3.2.3", + "@tabler/icons": "^1.119.0", + "react-error-boundary": "^3.1.4", + "react-resizable-panels": "^0.0.35", + "stacktracey": "^2.1.8", + "superjson": "^1.12.2" } } diff --git a/react-shim.js b/react-shim.js new file mode 100644 index 00000000..71672e7b --- /dev/null +++ b/react-shim.js @@ -0,0 +1,3 @@ +// Why? See - https://github.com/egoist/tsup/issues/792 +import React from 'react'; +export { React }; diff --git a/src/DevTools/DevTools.tsx b/src/DevTools/DevTools.tsx new file mode 100644 index 00000000..63e69bdf --- /dev/null +++ b/src/DevTools/DevTools.tsx @@ -0,0 +1,127 @@ +import * as React from 'react'; +import { EmotionCache, Global } from '@emotion/react'; +import { + ColorScheme, + ColorSchemeProvider, + MantineProvider, + MantineThemeOverride, +} from '@mantine/core'; +import { createStore } from 'jotai/vanilla'; +import { Store } from 'src/types'; +import { + DevToolsOptions, + useSetDevToolsOptions, +} from './atoms/devtools-options'; +import { Extension, ExtensionProps } from './Extension'; +import { fontCss } from './fonts'; +import { InternalDevToolsContext } from './internal-jotai-store'; +import { createMemoizedEmotionCache } from './utils'; + +const theme: MantineThemeOverride = { + primaryColor: 'dark', + activeStyles: { transform: 'scale(1)' }, + fontFamily: 'Inter, -apple-system, BlinkMacSystemFont, Segoe, sans-serif', + fontFamilyMonospace: + 'JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace', + headings: { + fontFamily: + 'Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji', + }, + globalStyles: (theme) => ({ + '.jotai-devtools-shell': { + '*, *::before, *::after': { + boxSizing: 'border-box', + }, + ...theme.fn.fontStyles(), + color: theme.colorScheme === 'dark' ? theme.white : theme.black, + lineHeight: theme.lineHeight, + WebkitFontSmoothing: 'antialiased', + MozOsxFontSmoothing: 'grayscale', + fontSize: theme.fontSizes.md, + }, + }), +}; + +export type DevToolsProps = ExtensionProps & { + theme?: 'dark' | 'light'; + nonce?: string; + options?: DevToolsOptions; +}; + +const DevToolsMain = ({ + store, + isInitialOpen = false, + theme: userColorScheme = 'light', + nonce, + options, +}: DevToolsProps): JSX.Element => { + const [colorScheme, setColorScheme] = + React.useState<ColorScheme>(userColorScheme); + const setDevToolsOptions = useSetDevToolsOptions(); + + const toggleColorScheme = (value?: ColorScheme) => + setColorScheme(value || (colorScheme === 'dark' ? 'light' : 'dark')); + + const jotaiDevtoolsEmotionCache = React.useRef<EmotionCache>(); + + if (!jotaiDevtoolsEmotionCache.current) { + jotaiDevtoolsEmotionCache.current = createMemoizedEmotionCache(nonce)(); + } + + React.useEffect(() => { + setColorScheme(userColorScheme); + }, [userColorScheme]); + + React.useEffect(() => { + // Should we consider caching these options in the future instead of allowing users to change these? + setDevToolsOptions(options); + }, [setDevToolsOptions, options]); + + const theme_ = { + ...theme, + colorScheme, + }; + + return ( + <React.StrictMode> + <ColorSchemeProvider + colorScheme={colorScheme} + toggleColorScheme={toggleColorScheme} + > + <MantineProvider + theme={theme_} + emotionCache={jotaiDevtoolsEmotionCache.current} + > + <Global styles={fontCss} /> + <Extension store={store} isInitialOpen={isInitialOpen} /> + </MantineProvider> + </ColorSchemeProvider> + </React.StrictMode> + ); +}; + +const DevToolsProvider = ({ children }: React.PropsWithChildren) => { + const internalStoreRef = React.useRef<Store>(); + + if (!internalStoreRef.current) { + internalStoreRef.current = createStore(); + } + + return ( + <InternalDevToolsContext.Provider value={internalStoreRef.current}> + {children} + </InternalDevToolsContext.Provider> + ); +}; + +export const DevTools = (props: DevToolsProps): JSX.Element => { + if (__DEV__) { + return ( + <DevToolsProvider> + <DevToolsMain {...props} /> + </DevToolsProvider> + ); + } + + return <></>; +}; diff --git a/src/DevTools/Extension/Extension.tsx b/src/DevTools/Extension/Extension.tsx new file mode 100644 index 00000000..75f0dc3f --- /dev/null +++ b/src/DevTools/Extension/Extension.tsx @@ -0,0 +1,67 @@ +import * as React from 'react'; +import { ActionIcon, Sx } from '@mantine/core'; +import { useAtom, useSetAtom } from 'jotai/react'; +import { isShellOpenAtom } from '../atoms/is-shell-open-atom'; +import { useThemeMode } from '../hooks/useThemeMode'; +import { useDevtoolsJotaiStoreOptions } from '../internal-jotai-store'; +import { logo } from './assets/logo'; +import { Shell, ShellProps } from './components/Shell'; + +const shellTriggerButtonStyles: Sx = () => ({ + position: 'fixed', + left: 10, + bottom: 10, + borderRadius: '50%', + padding: '2rem', + zIndex: 99999, + img: { + height: '2rem', + }, +}); + +const ShellTriggerButton = React.forwardRef<HTMLButtonElement>((_, ref) => { + const setIsShellOpen = useSetAtom( + isShellOpenAtom, + useDevtoolsJotaiStoreOptions(), + ); + + return ( + <ActionIcon + variant="filled" + color={useThemeMode('dark', 'gray.3')} + onClick={() => setIsShellOpen(true)} + sx={shellTriggerButtonStyles} + ref={ref} + title="Open Jotai Devtools" + className="jotai-devtools-trigger-button" + > + <img src={logo} alt="Jotai Mascot" /> + </ActionIcon> + ); +}); + +export type ExtensionProps = ShellProps & { + // false by default + isInitialOpen?: boolean; +}; + +export const Extension = ({ + isInitialOpen = false, + store, +}: ExtensionProps): JSX.Element => { + const [isShellOpen, setIsShellOpen] = useAtom( + isShellOpenAtom, + useDevtoolsJotaiStoreOptions(), + ); + + React.useEffect(() => { + // Avoid setting the initial value if the value is found in the local storage + if (typeof isShellOpen !== 'boolean') { + setIsShellOpen(isInitialOpen); + } + // Intentionally disabled + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return <>{isShellOpen ? <Shell store={store} /> : <ShellTriggerButton />}</>; +}; diff --git a/src/DevTools/Extension/assets/logo.ts b/src/DevTools/Extension/assets/logo.ts new file mode 100644 index 00000000..517a6bab --- /dev/null +++ b/src/DevTools/Extension/assets/logo.ts @@ -0,0 +1,3 @@ +export const logo = ` +data:image/png;base64,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M844gwULFpjzdnR00N3djcfjMS5oTU2NqYZRukJNn/RMI5EIRUVFrFq1ypSKpaen8/Wvf520tDReeOEFqqurNxLL8TmD4vuAK7Kzszn22GPxer20tLSQnp5Oc3Mzzz//vI4bAqxjD5FdXkWxi+RkoARieaqCggKAuMkuEMNuqtTZ2clNN93E2LFjGTNmDMcee+xnunhtbS3Jycnk5eWRlJSEz+cz59cYbADFqXhOa2izdwDT9cyOJVNSUmhoaDAKuGHDhm0WE5eXl1NTU8OoUaM488wzqaysZMiQISxatAiv10tycjLd3d2mC4AaTdkcWwEyIj6I8B0Ohxk4cCCFhYXU1taaDgM5OTmMGTOG6urqUuCbwL8cw7oSaGhubr7t+eef58QTTyQjIwO32604EOAJ9iAFhK+uO/pt/aFuYHZi2SnihHZ1dTFy5Ei+//3vc+yxxxpULhGKaUtbWxt/+MMf2G+//XC5XBQVFZGfn09KSgpnnHEGr732mgFLEkl/7qZ+25/buUUpsgClM888E4AXXnjhU6v5u7u7+dOf/mSuc+ONNxpgRBYtUdyZyFXWNt5CWUOhEDk5OQwbNswcGwgECIfDDBo0SJb1B/0M7YfAI21tbbz++usGqNmwYYM+/3/bvLHdUL6KSpjH1laGEydOjMtZQe8kUj9QQd9SNm3+2dHRYRgm/SkvwK9+9SvS09P57ne/y8cff8whhxzCVVddxaWXXsrYsWN56qmnmDFjBjNmzKCmpgaPx9OHH9qfkjvbVaig2Om2ulwunn76ad58800uueQSk47pTz766CNGjRrFlVdeafqGPvHEEzz//POMGjXKVE/Y1fVer9fEfbbii5dq1yC6XC7S0tIYPry311NDQ4N5nmPHjoVYmuLifoZ4AfBMfX097777LpWVlUoLrSZWHLxHyVfRHf2m/rj66quB3ljLdkMhpgSaPCI2a3JrkjktlC1HHnkkb775JqmpqfzrX//i1FNP7XNMbW0tP/vZz7j33nsZMmQIa9asobi42EzWRKioxIl69sclBUyvnL/85S/bfDiLFi1i6tSpCT/705/+xLHHHktXV5chLairmhYp9U1taWkx105JSenD8AmFQowcOTLuObS3txONRhk+fLi2W/sT8A8S7+h0GvD6smXLjly2bJnee3qbN7ebylfREl4MsWpvoaISJyIJmCoA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 +`; diff --git a/src/DevTools/Extension/components/Shell/Shell.tsx b/src/DevTools/Extension/components/Shell/Shell.tsx new file mode 100644 index 00000000..3eb4ace5 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/Shell.tsx @@ -0,0 +1,74 @@ +import React, { useEffect, useRef } from 'react'; +import { Tabs } from '@mantine/core'; +import { useAtomValue } from 'jotai/react'; +import { Store } from 'src/types'; +import { shellStylesAtom } from '../../../atoms/shell-styles'; +import { useSetCustomStore } from '../../../atoms/user-custom-store'; +import { TabKeys, shellStyleDefaults } from '../../../constants'; +import { useDevtoolsJotaiStoreOptions } from '../../../internal-jotai-store'; +import { AtomViewer } from './components/AtomViewer'; +import { ErrorBoundary } from './components/ErrorBoundary'; +import { Header } from './components/Header'; +import { ShellResizeBar } from './components/ShellResizeBar'; +import { TabsHeader } from './components/TabsHeader'; +import { shellStyles } from './styles'; + +export type ShellProps = { + store?: Store | undefined; +}; + +export const Shell = ({ store }: ShellProps) => { + const setUserStore = useSetCustomStore(); + useEffect(() => { + setUserStore(store); + }, [setUserStore, store]); + + const shellRef = useRef<HTMLDivElement>(null); + const { height } = useAtomValue( + shellStylesAtom, + useDevtoolsJotaiStoreOptions(), + ); + + useEffect(() => { + // Allocating more height at the end of the content allows users to scroll down fully + // FIXME should we handle a use-case where there is padding set around `body`? + document.body.style.paddingBottom = height + 'px'; + + return () => { + document.body.style.paddingBottom = `0px`; + }; + }, [height]); + + return ( + <Tabs + keepMounted={false} + variant="default" + defaultValue={TabKeys.AtomViewer} + m={10} + sx={shellStyles} + h={height} + mah={shellStyleDefaults.maxHeight} + ref={shellRef} + className="jotai-devtools-shell" + data-testid="jotai-devtools-shell" + > + <ShellResizeBar shellRef={shellRef} /> + <Header /> + <ErrorBoundary> + <TabsHeader /> + <Tabs.Panel + value={TabKeys.AtomViewer} + h="100%" + sx={{ + overflow: 'hidden', + // Hide the overlap of this div's bg + borderBottomLeftRadius: '7px', + borderBottomRightRadius: '7px', + }} + > + <AtomViewer /> + </Tabs.Panel> + </ErrorBoundary> + </Tabs> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/AtomViewer.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/AtomViewer.tsx new file mode 100644 index 00000000..14dec187 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/AtomViewer.tsx @@ -0,0 +1,36 @@ +import * as React from 'react'; +import { Flex, Sx } from '@mantine/core'; +import { Panel, PanelGroup } from 'react-resizable-panels'; +import { PanelResizeHandle } from '../PanelResizeHandle'; +import { AtomDetail } from './components/AtomDetail'; +import { AtomList } from './components/AtomList'; + +const panelStyles = { overflow: 'auto' }; +const atomListWrapperStyles: Sx = (theme) => ({ + background: + theme.colorScheme === 'dark' ? theme.colors.dark[8] : theme.colors.gray[2], +}); + +export const AtomViewer = React.memo(() => { + return ( + <PanelGroup direction="horizontal"> + <Panel defaultSize={50} minSize={30} style={panelStyles}> + <Flex + p={10} + pt={0} + h="100%" + direction="column" + sx={atomListWrapperStyles} + > + <AtomList /> + </Flex> + </Panel> + <PanelResizeHandle /> + <Panel defaultSize={50} minSize={30} style={panelStyles}> + <Flex p={10} h="100%" direction="column" pos="relative"> + <AtomDetail /> + </Flex> + </Panel> + </PanelGroup> + ); +}); diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/atoms.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/atoms.ts new file mode 100644 index 00000000..e1e3e7b6 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/atoms.ts @@ -0,0 +1,38 @@ +import { atom } from 'jotai/vanilla'; +import { atomWithDefault } from 'jotai/vanilla/utils'; +import { AnyAtom, ValuesAtomTuple } from 'src/types'; +import { devToolsOptionsAtom } from '../../../../../atoms/devtools-options'; +import { valuesAtom } from '../../../../../atoms/values-atom'; +import { filterAtomsByString } from './utils/filter-atoms-by-string'; +import { filterPrivateAtoms } from './utils/filter-private-atoms'; + +type SelectedAtomAtomData = { atomKey: string; atom: AnyAtom }; + +export const selectedAtomAtom = atom<SelectedAtomAtomData | undefined>( + undefined, +); + +// used to preserve search input across tab switch +const searchInputInternalValueAtom = atom(''); + +export const filteredValuesAtom = atomWithDefault<ValuesAtomTuple[]>((get) => { + const filteredByString = filterAtomsByString( + get(searchInputInternalValueAtom), + get(valuesAtom), + ); + + const { shouldShowPrivateAtoms } = get(devToolsOptionsAtom); + if (!shouldShowPrivateAtoms) { + const filteredByPrivate = filterPrivateAtoms(filteredByString); + return filteredByPrivate; + } + + return filteredByString; +}); + +export const searchInputAtom = atom( + (get) => get(searchInputInternalValueAtom), + (_, set, searchInput: string) => { + set(searchInputInternalValueAtom, searchInput); + }, +); diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/AtomDetail.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/AtomDetail.tsx new file mode 100644 index 00000000..72d6c532 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/AtomDetail.tsx @@ -0,0 +1,50 @@ +import * as React from 'react'; +import { Box, LoaderProps, LoadingOverlay, Sx, Text } from '@mantine/core'; +import { useAtomValue } from 'jotai/react'; +import { useThemeMode } from '../../../../../../../hooks/useThemeMode'; +import { useDevtoolsJotaiStoreOptions } from '../../../../../../../internal-jotai-store'; +import { selectedAtomAtom } from '../../atoms'; +import { DisplayAtomDetails } from './components/DisplayAtomDetails'; + +const messageBoxWrapperStyles: Sx = { + position: 'relative', + top: '50%', + transform: 'translateY(-50%)', +}; + +export const AtomDetail = React.memo((): JSX.Element => { + const selectedAtomData = useAtomValue( + selectedAtomAtom, + useDevtoolsJotaiStoreOptions(), + ); + + const loaderProps: LoaderProps = { + color: useThemeMode('dark', 'white'), + }; + + if (!selectedAtomData) { + return ( + <Box sx={messageBoxWrapperStyles}> + <Text w="100%" ta="center"> + Select an atom from the left panel to view the details{' '} + </Text> + </Box> + ); + } + + return ( + <React.Suspense + fallback={ + <LoadingOverlay + visible={true} + overlayBlur={2} + loaderProps={loaderProps} + /> + } + > + <DisplayAtomDetails atom={selectedAtomData.atom} /> + </React.Suspense> + ); +}); + +AtomDetail.displayName = 'AtomDetail'; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomDependentsList.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomDependentsList.tsx new file mode 100644 index 00000000..116b29d4 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomDependentsList.tsx @@ -0,0 +1,65 @@ +import * as React from 'react'; +import { Box, Code, List, Text } from '@mantine/core'; +import { AnyAtom } from 'src/types'; +import { useDevToolsOptionsValue } from '../../../../../../../../atoms/devtools-options'; +import { useAtomsSnapshots } from '../../../../../../../../hooks/useAtomsSnapshots'; +import { parseDebugLabel } from '../../../../../../../../utils/parse-debug-label'; + +type AtomDependentsListProps = { + atom: AnyAtom; +}; + +export const AtomDependentsList = ({ + atom, +}: AtomDependentsListProps): JSX.Element => { + const { dependents } = useAtomsSnapshots(); + const devtoolsOptions = useDevToolsOptionsValue(); + + const depsForAtom = React.useMemo(() => { + const arr = Array.from(dependents.get(atom) || []); + const filteredCurrentAtom = arr.filter( + (a) => a.toString() !== atom.toString(), + ); + + if (!devtoolsOptions.shouldShowPrivateAtoms) { + const filteredPrivateAtoms = filteredCurrentAtom.filter( + (a) => !a?.debugPrivate, + ); + return filteredPrivateAtoms; + } + + return filteredCurrentAtom; + }, [dependents, devtoolsOptions.shouldShowPrivateAtoms, atom]); + + const listOfDependents = React.useMemo( + () => + depsForAtom.map((value, i) => { + const parsedDebugLabel = parseDebugLabel(value?.debugLabel); + return ( + <List.Item key={`${i}-${value.toString()}-dependents-list`}> + <Code data-testid={`dependents-list-item-${parsedDebugLabel}-${i}`}> + {parsedDebugLabel} + </Code> + </List.Item> + ); + }), + [depsForAtom], + ); + + return ( + <Box> + <Text fw="bold" mb={10} mt={20}> + Dependents + </Text> + {listOfDependents.length ? ( + <List type="ordered" mb={10}> + {listOfDependents} + </List> + ) : ( + <Text size="sm" mb={10}> + No dependents + </Text> + )} + </Box> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomMetaDetails.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomMetaDetails.tsx new file mode 100644 index 00000000..31b66d0e --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomMetaDetails.tsx @@ -0,0 +1,68 @@ +import * as React from 'react'; +import { Box, Code, MantineColor, Text, Title, Tooltip } from '@mantine/core'; +import { AtomValueType } from '../../../../../../../../utils/get-type-of-atom-value'; +import { parseDebugLabel } from '../../../../../../../../utils/parse-debug-label'; + +type AtomDetailItemProps = { + label: string; + value: string; + color?: MantineColor; +}; + +const DisplayAtomDetailsItem = ({ + label, + value, + color, +}: AtomDetailItemProps) => { + return ( + <Box mb={10}> + <Text + tt="uppercase" + fz={10} + fw="bold" + color="gray" + data-testid={`display-detail-item-label-${label}`} + > + {label} + </Text> + <Code data-testid={`display-detail-item-value-${value}`} color={color}> + {value} + </Code> + </Box> + ); +}; + +type AtomMetaDetailsProps = { + debugLabel?: string | undefined; + atomValueType: AtomValueType; + isAtomPrivate?: boolean | undefined; +}; + +export const AtomMetaDetails = React.memo( + ({ + debugLabel, + atomValueType, + isAtomPrivate, + }: AtomMetaDetailsProps): JSX.Element => { + return ( + <Box> + <Title size="h3" mb={10}> + Atom Details + </Title> + <Text fw="bold" mb={10}> + Meta + </Text> + <DisplayAtomDetailsItem + label="Debug Label" + value={parseDebugLabel(debugLabel)} + /> + <DisplayAtomDetailsItem label="Value type" value={atomValueType} /> + {isAtomPrivate && ( + <DisplayAtomDetailsItem label="Private" value={'Yes'} color={'red'} /> + )} + </Box> + ); + }, +); + +AtomMetaDetails.displayName = 'AtomMetaDetails'; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomParseDeepNestedValue.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomParseDeepNestedValue.tsx new file mode 100644 index 00000000..a0bf5233 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomParseDeepNestedValue.tsx @@ -0,0 +1,92 @@ +import * as React from 'react'; +import { Box, Text } from '@mantine/core'; +import { AnyAtom } from 'src/types'; +import { useUserStore } from '../../../../../../../../hooks/useUserStore'; +import { + AtomValueType, + deepParseAtomValue, + stringifyAtomValue, +} from '../../../../../../../../utils'; +import { useInternalAtomValue } from '../../../hooks/useInternalAtomValue'; +import { + MemoizedValueRenderer, + getPrismLanguageType, +} from './MemoizedValueRenderer'; + +type ParseAndDisplayAtomValueProps = { + atom: AnyAtom; +}; + +const useAtomValueSubscribe = (atom: AnyAtom) => { + const store = useUserStore(); + // We use `useAtomValue` because it supports async atoms too + // Should we support nested async atoms? + const atomValue = useInternalAtomValue(atom); + + // Using an object to hold a value allows us to store values like functions + const [nextValue, setNextValue] = React.useState(() => ({ + value: deepParseAtomValue(atomValue, store), + })); + + React.useEffect(() => { + if (!store.dev_subscribe_state) return; + // FIXME replace this with `store.dev_subscribe_store` check after next minor Jotai 2.1.0? + let devSubscribeStore = store.dev_subscribe_state; + if (typeof store.dev_subscribe_store === 'function') { + devSubscribeStore = store.dev_subscribe_store; + } + + const cb = ( + type?: Parameters<Parameters<typeof store.dev_subscribe_store>[0]>[0], + ) => { + setNextValue({ value: deepParseAtomValue(atomValue, store) }); + }; + + // Perhaps there is a more efficient way to subscribe more granularly to atom updates? + // We could explore the store.sub approach and figure out how to unsubscribe + const unsubscribe = devSubscribeStore?.(cb); + cb(); + return unsubscribe; + }, [store, setNextValue, atomValue]); + + return nextValue.value; +}; + +// This component assumes that user has picked the "deep-nested" parser +const ParseAndDisplayAtomValue = React.memo( + ({ atom }: ParseAndDisplayAtomValueProps): JSX.Element => { + const nextValue = useAtomValueSubscribe(atom); + const prismLanguageType = getPrismLanguageType(nextValue); + + return ( + <MemoizedValueRenderer + value={stringifyAtomValue(nextValue)} + prismLanguageType={prismLanguageType} + /> + ); + }, +); + +type AtomParseDeepNestedValueProps = { + atom: AnyAtom; + atomValueType: AtomValueType; +}; + +export const AtomParseDeepNestedValue = ({ + atom, + atomValueType, +}: AtomParseDeepNestedValueProps): JSX.Element => { + return ( + <Box> + <Text fw="bold" mb="sm"> + Parsed value + </Text> + {/* TODO investigate if this could ever be the case given that the parent component is wrapped with suspense */} + {atomValueType === 'promise' ? ( + <Text>No Preview available</Text> + ) : ( + <ParseAndDisplayAtomValue atom={atom} /> + )} + </Box> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomParseRawValue.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomParseRawValue.tsx new file mode 100644 index 00000000..c83debd4 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/AtomParseRawValue.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { Box, Text } from '@mantine/core'; +import { AnyAtomValue } from 'src/types'; +import { + ErrorSymbol, + stringifyAtomValue, +} from '../../../../../../../../utils/'; +import { ErrorMessage } from '../../../../ErrorMessage'; +import { + MemoizedValueRenderer, + getPrismLanguageType, +} from './MemoizedValueRenderer'; + +type AtomParseRawValueValueProps = { + atomValue: AnyAtomValue; +}; + +export const AtomParseRawValueValue = ({ + atomValue, +}: AtomParseRawValueValueProps): JSX.Element => { + const prismLanguageType = getPrismLanguageType(atomValue); + const parsedValue = stringifyAtomValue(atomValue); + + return ( + <Box> + <Text fw="bold" mb="sm"> + Raw value + </Text> + {/* TODO investigate if this could ever be the case given that the parent component is wrapped with suspense */} + {parsedValue === ErrorSymbol ? ( + <ErrorMessage message="Failed to parse the value of the atom" /> + ) : ( + <MemoizedValueRenderer + value={parsedValue} + prismLanguageType={prismLanguageType} + /> + )} + </Box> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/DisplayAtomDetails.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/DisplayAtomDetails.tsx new file mode 100644 index 00000000..9832389e --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/DisplayAtomDetails.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { Stack } from '@mantine/core'; +import { AnyAtom } from 'src/types'; +import { getTypeOfAtomValue } from '../../../../../../../../utils/get-type-of-atom-value'; +import { useInternalAtomValue } from '../../../hooks/useInternalAtomValue'; +import { AtomDependentsList } from './AtomDependentsList'; +import { AtomMetaDetails } from './AtomMetaDetails'; +import { AtomParseRawValueValue } from './AtomParseRawValue'; + +type DisplayAtomDetailsProps = { + atom: AnyAtom; +}; + +export const DisplayAtomDetails = ({ atom }: DisplayAtomDetailsProps) => { + const atomValue = useInternalAtomValue(atom); + const atomValueType = getTypeOfAtomValue(atomValue); + + return ( + <Stack h="auto"> + <AtomMetaDetails + debugLabel={atom?.debugLabel} + atomValueType={atomValueType} + isAtomPrivate={atom?.debugPrivate} + /> + + <AtomParseRawValueValue atomValue={atomValue} /> + + {/* FIXME: Bug in core jotai prevents us from subscribing deeply nested atoms properly*/} + {/* {shouldDisplayDeepNestedValue && ( + <AtomParseDeepNestedValue atom={atom} atomValueType={atomValueType} /> + )} */} + + {/* TODO add dependencies list */} + + <AtomDependentsList atom={atom} /> + </Stack> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/MemoizedValueRenderer.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/MemoizedValueRenderer.tsx new file mode 100644 index 00000000..c1425b9d --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/components/MemoizedValueRenderer.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import { AnyAtomValue } from 'src/types'; +import { getTypeOfAtomValue } from '../../../../../../../../utils'; +import { + CodeSyntaxHighlighter, + CodeSyntaxHighlighterProps, +} from '../../../../CodeSyntaxHighlighter'; + +// List of types to render in JavaScript syntax +const javaScriptLanguageTypes = [ + 'object', + 'array', + 'null', + 'undefined', + 'function', + 'symbol', +]; + +export const getPrismLanguageType = ( + atomValue: AnyAtomValue, +): CodeSyntaxHighlighterProps['language'] => { + const type = getTypeOfAtomValue(atomValue); + + if (javaScriptLanguageTypes.includes(type)) { + return 'javascript'; + } + + return 'markdown'; +}; + +type MemoizedValueRendererProps = { + value: string; + prismLanguageType: ReturnType<typeof getPrismLanguageType>; +}; + +export const MemoizedValueRenderer = React.memo( + ({ prismLanguageType, value }: MemoizedValueRendererProps): JSX.Element => { + return ( + <CodeSyntaxHighlighter + language={prismLanguageType} + mb={10} + copyLabel="Copy value" + data-testid="atom-parsed-value" + > + {value} + </CodeSyntaxHighlighter> + ); + }, +); diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/index.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/index.ts new file mode 100644 index 00000000..cc518d10 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomDetail/index.ts @@ -0,0 +1 @@ +export * from './AtomDetail'; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/AtomList.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/AtomList.tsx new file mode 100644 index 00000000..1bdb1ef2 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/AtomList.tsx @@ -0,0 +1,122 @@ +import * as React from 'react'; +import { Box, Group, Sx, Text, TextInput } from '@mantine/core'; +import { IconAlertCircle } from '@tabler/icons'; +import { useAtom, useAtomValue } from 'jotai/react'; +import { useSyncSnapshotValuesToAtom } from '../../../../../../../hooks/useAtomsSnapshots'; +import { useDevtoolsJotaiStoreOptions } from '../../../../../../../internal-jotai-store'; +import { + filteredValuesAtom, + searchInputAtom, + selectedAtomAtom, +} from '../../atoms'; +import { AtomListItem } from './components/AtomListItem'; + +const textStyles: Sx = { + position: 'sticky', + top: 0, +}; + +const SearchAtoms = React.memo(() => { + const [userInput, setUserInput] = useAtom( + searchInputAtom, + useDevtoolsJotaiStoreOptions(), + ); + + const handleOnChange: React.ChangeEventHandler<HTMLInputElement> = ( + event, + ) => { + const { + target: { value }, + } = event; + setUserInput(value); + }; + + return ( + <TextInput + label="Search" + placeholder="atom debug label" + pt={10} + pb={10} + sx={textStyles} + value={userInput} + onChange={handleOnChange} + /> + ); +}); + +const atomItemsWrapperStyle = { overflow: 'auto' }; + +export const AtomList = () => { + useSyncSnapshotValuesToAtom(); + + const values = useAtomValue( + filteredValuesAtom, + useDevtoolsJotaiStoreOptions(), + ); + const [selectedAtomData, setSelectedAtomAtom] = useAtom( + selectedAtomAtom, + useDevtoolsJotaiStoreOptions(), + ); + + const valuesRef = React.useRef(values); + + React.useEffect(() => { + valuesRef.current = values; + }, [values]); + + const handleOnClick = React.useCallback( + (pos: number) => { + if (!valuesRef.current[pos]) { + // This should almost never occur + // Atom pos and valuesRef.current are out-of-sync if it occurs + throw new Error(`Unable to find atom at ${pos} index`); + } + + setSelectedAtomAtom((currValue) => { + // TODO Should we find this by atom key instead? + const foundAtom = valuesRef.current[pos]?.[0]; + + if (!foundAtom || currValue?.atomKey === foundAtom?.toString()) { + return undefined; + } + + return { atomKey: foundAtom?.toString(), atom: foundAtom }; + }); + }, + [setSelectedAtomAtom], + ); + + const atomItems = React.useMemo( + () => + values.map(([atom], i) => { + return ( + <AtomListItem + key={`atom-list-item-${atom.toString() + i}`} + label={atom.debugLabel} + onClick={handleOnClick} + pos={i} + isActive={selectedAtomData?.atomKey === atom.toString()} + atomKey={atom.toString()} + /> + ); + }), + [values, selectedAtomData, handleOnClick], + ); + + const noResultsFound = !values.length; + + return ( + <> + <SearchAtoms /> + <Box sx={atomItemsWrapperStyle}>{atomItems}</Box> + {noResultsFound && ( + <Group mt={20} position="center"> + <IconAlertCircle size={16} /> + <Text fz="sm" ml={0} data-testid="atom-list-no-atoms-found-message"> + No Atoms found! + </Text> + </Group> + )} + </> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/components/AtomListItem.tsx b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/components/AtomListItem.tsx new file mode 100644 index 00000000..3115ae75 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/components/AtomListItem.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import { NavLink, Sx, Text } from '@mantine/core'; +import { IconChevronRight } from '@tabler/icons'; +import { useThemeMode } from '../../../../../../../../hooks/useThemeMode'; +import { parseDebugLabel } from '../../../../../../../../utils/parse-debug-label'; + +type AtomListItemProps = { + label?: string | undefined; + onClick: (pos: number) => void; + atomKey: string; + pos: number; + isActive: boolean; +}; + +const monoSpaceFonts: Sx = (theme) => ({ + fontFamily: theme.fontFamilyMonospace || 'JetBrains Mono', +}); + +const navLinkStyles: Sx = () => ({ + borderRadius: 5, +}); + +export const AtomListItem = React.memo( + ({ label, onClick, pos, isActive }: AtomListItemProps) => { + return ( + <NavLink + label={React.useMemo( + () => ( + <Text sx={monoSpaceFonts}>{parseDebugLabel(label)}</Text> + ), + [label], + )} + variant="filled" + sx={navLinkStyles} + active={isActive} + color={useThemeMode('dark', 'gray')} + onClick={React.useCallback(() => onClick(pos), [onClick, pos])} + rightSection={React.useMemo( + () => ( + <IconChevronRight size={12} stroke={1.5} /> + ), + [], + )} + /> + ); + }, +); + +AtomListItem.displayName = 'AtomListItem'; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/index.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/index.ts new file mode 100644 index 00000000..e9627171 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/components/AtomList/index.ts @@ -0,0 +1 @@ +export * from './AtomList'; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/use.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/use.ts new file mode 100644 index 00000000..b255caa2 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/use.ts @@ -0,0 +1,37 @@ +/// <reference types="react/experimental" /> +import ReactExports from 'react'; + +export const isPromise = (x: unknown): x is Promise<unknown> => + x instanceof Promise; + +// Copied as is, from Jotai core +export const use = + ReactExports.use || + (<T>( + promise: Promise<T> & { + status?: 'pending' | 'fulfilled' | 'rejected'; + value?: T; + reason?: unknown; + }, + ): T => { + if (promise.status === 'pending') { + throw promise; + } else if (promise.status === 'fulfilled') { + return promise.value as T; + } else if (promise.status === 'rejected') { + throw promise.reason; + } else { + promise.status = 'pending'; + promise.then( + (v) => { + promise.status = 'fulfilled'; + promise.value = v; + }, + (e) => { + promise.status = 'rejected'; + promise.reason = e; + }, + ); + throw promise; + } + }); diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/useInternalAtomValue.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/useInternalAtomValue.ts new file mode 100644 index 00000000..c8beeb25 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/hooks/useInternalAtomValue.ts @@ -0,0 +1,119 @@ +import { useEffect, useReducer } from 'react'; +import type { ReducerWithoutAction } from 'react'; +import { useSetAtom, useStore } from 'jotai/react'; +import type { Atom, ExtractAtomValue } from 'jotai/vanilla'; +import { + useDevtoolsJotaiStoreOptions, + useInternalStore, +} from '../../../../../../../DevTools/internal-jotai-store'; +import { selectedAtomAtom } from '../atoms'; +import { useUserStore } from './../../../../../../hooks/useUserStore'; +import { isPromise, use } from './use'; + +type Store = ReturnType<typeof useStore>; + +type AtomSubscribeFunction = { + (): void; + isJotaiDevTools: true; +}; + +const isInternalAtomSubscribeFunction = ( + cb: AtomSubscribeFunction | (() => void), +) => (cb as AtomSubscribeFunction)?.isJotaiDevTools; +// We don't seem to need this right now +const delay = undefined; +export function useInternalAtomValue<Value>(atom: Atom<Value>): Awaited<Value>; + +export function useInternalAtomValue<AtomType extends Atom<unknown>>( + atom: AtomType, +): Awaited<ExtractAtomValue<AtomType>>; + +export function useInternalAtomValue<Value>(atom: Atom<Value>) { + const userStore = useUserStore(); + const internalStore = useInternalStore(); + const setSelectedAtomAtom = useSetAtom( + selectedAtomAtom, + useDevtoolsJotaiStoreOptions(), + ); + + const [[valueFromReducer, storeFromReducer, atomFromReducer], rerender] = + useReducer< + ReducerWithoutAction<readonly [Value, Store, typeof atom]>, + undefined + >( + (prev) => { + const nextValue = userStore.get(atom); + if ( + Object.is(prev[0], nextValue) && + prev[1] === userStore && + prev[2] === atom + ) { + return prev; + } + return [nextValue, userStore, atom]; + }, + undefined, + () => [userStore.get(atom), userStore, atom], + ); + + let value = valueFromReducer; + if (storeFromReducer !== userStore || atomFromReducer !== atom) { + rerender(); + value = userStore.get(atom); + } + + useEffect(() => { + if (!userStore.dev_subscribe_state) return; + + // FIXME replace this with `store.dev_subscribe_store` check after next minor Jotai 2.1.0? + let devSubscribeStore = userStore.dev_subscribe_state; + + if (typeof userStore.dev_subscribe_store === 'function') { + devSubscribeStore = userStore.dev_subscribe_store; + } + + const atomSubCb = <AtomSubscribeFunction>(() => { + if (typeof delay === 'number') { + // delay rerendering to wait a promise possibly to resolve + setTimeout(rerender, delay); + return; + } + rerender(); + }); + + atomSubCb.isJotaiDevTools = true; + + const devSubCb = ( + type?: Parameters<Parameters<typeof userStore.dev_subscribe_store>[0]>[0], + ) => { + if (type !== 'unsub') { + return; + } + + const activeValue = internalStore.get(selectedAtomAtom); + if (activeValue) { + const { l = [], t } = + userStore.dev_get_mounted?.(activeValue.atom) || {}; + const listenersArray = Array.from(l); + const areAllCallbacksInternal = listenersArray.every( + isInternalAtomSubscribeFunction, + ); + // If all the callbacks are internal, and there is only one listener, then we can assume that the atom is not being used anywhere else in user's app + // and is safe to deselect + if (areAllCallbacksInternal && t && t?.size <= 1) { + return setSelectedAtomAtom(undefined); + } + } + }; + const devUnsubscribeStore = devSubscribeStore?.(devSubCb); + + const unsub = userStore.sub(atom, atomSubCb); + rerender(); + return () => { + devUnsubscribeStore?.(); + unsub(); + }; + }, [userStore, setSelectedAtomAtom, internalStore, atom]); + + return isPromise(value) ? use(value) : (value as Awaited<Value>); +} diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/index.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/index.ts new file mode 100644 index 00000000..20bff927 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/index.ts @@ -0,0 +1 @@ +export * from './AtomViewer'; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/utils/filter-atoms-by-string.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/utils/filter-atoms-by-string.ts new file mode 100644 index 00000000..3b3731ff --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/utils/filter-atoms-by-string.ts @@ -0,0 +1,18 @@ +import { ValuesAtomTuple } from 'src/types'; +import { parseDebugLabel } from './../../../../../../utils/parse-debug-label'; + +export const filterAtomsByString = ( + searchString: string, + defaultAtoms: ValuesAtomTuple[], +) => { + const normalizedStr = searchString.trim().toLocaleLowerCase(); + if (!normalizedStr) { + return defaultAtoms; + } + + return defaultAtoms.filter(([atomTuple]) => { + const parsedDebugLabel = parseDebugLabel(atomTuple?.debugLabel); + const normalizedLabel = parsedDebugLabel.toLocaleLowerCase(); + return normalizedLabel.includes(normalizedStr); + }); +}; diff --git a/src/DevTools/Extension/components/Shell/components/AtomViewer/utils/filter-private-atoms.ts b/src/DevTools/Extension/components/Shell/components/AtomViewer/utils/filter-private-atoms.ts new file mode 100644 index 00000000..a3bd39cb --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/AtomViewer/utils/filter-private-atoms.ts @@ -0,0 +1,5 @@ +import { ValuesAtomTuple } from '../../../../../../../types'; + +export const filterPrivateAtoms = (atoms: ValuesAtomTuple[]) => { + return atoms.filter(([atom]) => !atom?.debugPrivate); +}; diff --git a/src/DevTools/Extension/components/Shell/components/CodeSyntaxHighlighter.tsx b/src/DevTools/Extension/components/Shell/components/CodeSyntaxHighlighter.tsx new file mode 100644 index 00000000..d0efede1 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/CodeSyntaxHighlighter.tsx @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { Prism, PrismProps } from '@mantine/prism'; + +// Omit "getPrismTheme" prop because we'll apply a custom component-wide theme here +export type CodeSyntaxHighlighterProps = Omit<PrismProps, 'getPrismTheme'>; + +export const CodeSyntaxHighlighter = ({ + children, + ...rest +}: React.PropsWithChildren<CodeSyntaxHighlighterProps>) => { + return <Prism {...rest}>{children}</Prism>; +}; diff --git a/src/DevTools/Extension/components/Shell/components/ErrorBoundary.tsx b/src/DevTools/Extension/components/Shell/components/ErrorBoundary.tsx new file mode 100644 index 00000000..c272e360 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/ErrorBoundary.tsx @@ -0,0 +1,69 @@ +import * as React from 'react'; +import { Anchor, Box, Flex, Sx, Text } from '@mantine/core'; +import { IconAlertCircle } from '@tabler/icons'; +import { + FallbackProps, + ErrorBoundary as ReactErrorBoundary, +} from 'react-error-boundary'; +import { useThemeMode } from '../../../../hooks/useThemeMode'; +import { CodeSyntaxHighlighter } from './CodeSyntaxHighlighter'; + +const textStyles: Sx = { + display: 'flex', + alignItems: 'center', +}; + +const ErrorFallback = ({ error }: FallbackProps) => { + if (Error?.stackTraceLimit) { + Error.stackTraceLimit = 5; + } + + Error?.captureStackTrace?.(error); + + const themedRedColor = useThemeMode('red.8', 'red.5'); + + return ( + <Flex + role="alert" + justify="center" + align="center" + h="90%" + sx={{ overflow: 'scroll' }} + data-testid="jotai-devtools-error-boundary" + > + <Box w="100%" maw="80%" mah="80%"> + <Text size="md" fw="500" color={themedRedColor} sx={textStyles} mb={5}> + <Text mr={5} sx={textStyles}> + <IconAlertCircle size={16} /> + </Text> + Uh-oh, something went wrong. + </Text> + + <Text size="sm" color={themedRedColor} mb="sm"> + If you believe this to be a bug, please file an issue on{' '} + <Anchor + href="https://github.com/jotaijs/jotai-devtools/issues" + color={themedRedColor} + td="underline" + target="_blank" + rel="noreferrer noopener" + > + Jotai DevTool's GitHub repo + </Anchor>{' '} + with a minimal reproduction and the following error + </Text> + <CodeSyntaxHighlighter language="javascript"> + {error.stack?.toString() || error.message} + </CodeSyntaxHighlighter> + </Box> + </Flex> + ); +}; + +export const ErrorBoundary = ({ children }: React.PropsWithChildren) => { + return ( + <ReactErrorBoundary FallbackComponent={ErrorFallback}> + {children} + </ReactErrorBoundary> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/ErrorMessage.tsx b/src/DevTools/Extension/components/Shell/components/ErrorMessage.tsx new file mode 100644 index 00000000..0aa24a4d --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/ErrorMessage.tsx @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { Sx, Text } from '@mantine/core'; +import { IconAlertCircle } from '@tabler/icons'; +import { useThemeMode } from '../../../../hooks/useThemeMode'; +type ErrorMessageProps = { + message: string; +}; + +const textStyles: Sx = { + display: 'flex', + alignItems: 'center', +}; + +export const ErrorMessage = ({ message }: ErrorMessageProps) => { + const themedRedColor = useThemeMode('red.8', 'red.5'); + + return ( + <Text size="sm" fw="500" color={themedRedColor} sx={textStyles}> + <Text mr={5} sx={textStyles}> + <IconAlertCircle size={16} /> + </Text> + {message} + </Text> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/Header/Header.tsx b/src/DevTools/Extension/components/Shell/components/Header/Header.tsx new file mode 100644 index 00000000..90f310c6 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/Header/Header.tsx @@ -0,0 +1,51 @@ +import * as React from 'react'; +import { ActionIcon, Badge, Box, Flex, Group, Sx, Title } from '@mantine/core'; +import { IconMinus } from '@tabler/icons'; +import { useSetAtom } from 'jotai/react'; +import { isShellOpenAtom } from '../../../../../atoms/is-shell-open-atom'; +import { useDevtoolsJotaiStoreOptions } from '../../../../../internal-jotai-store'; +import { ThemeToggle } from './components/ThemeToggle'; + +const headerStyles: Sx = { + position: 'sticky', + top: 0, + zIndex: 1, + width: '100%', +}; + +const logoStyles: Sx = { userSelect: 'none' }; + +export const Header = React.memo(() => { + const setIsShellOpen = useSetAtom( + isShellOpenAtom, + useDevtoolsJotaiStoreOptions(), + ); + + return ( + <Box sx={headerStyles}> + <Flex justify="space-between" align="center" p={10}> + <Group mr={10}> + <Title size="h4" sx={logoStyles}> + π» JΕtai DevTools + </Title> + <Badge color="orange" size="xs"> + Alpha + </Badge> + </Group> + <Flex align="center"> + <ThemeToggle /> + + <ActionIcon + ml={10} + title="Minimize panel" + radius="md" + onClick={() => setIsShellOpen(false)} + > + <IconMinus size={16} /> + </ActionIcon> + </Flex> + </Flex> + </Box> + ); +}); +Header.displayName = 'Header'; diff --git a/src/DevTools/Extension/components/Shell/components/Header/components/ThemeToggle.tsx b/src/DevTools/Extension/components/Shell/components/Header/components/ThemeToggle.tsx new file mode 100644 index 00000000..3e369fb3 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/Header/components/ThemeToggle.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { ActionIcon, useMantineColorScheme } from '@mantine/core'; +import { IconMoonStars, IconSun } from '@tabler/icons'; + +export const ThemeToggle = () => { + const { colorScheme, toggleColorScheme } = useMantineColorScheme(); + const dark = colorScheme === 'dark'; + + return ( + <ActionIcon + variant="filled" + color={dark ? 'gray' : 'dark'} + onClick={() => toggleColorScheme()} + title="Toggle color scheme" + > + {dark ? <IconSun size={16} /> : <IconMoonStars size={16} />} + </ActionIcon> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/Header/index.ts b/src/DevTools/Extension/components/Shell/components/Header/index.ts new file mode 100644 index 00000000..266dec8a --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/Header/index.ts @@ -0,0 +1 @@ +export * from './Header'; diff --git a/src/DevTools/Extension/components/Shell/components/PanelResizeHandle.tsx b/src/DevTools/Extension/components/Shell/components/PanelResizeHandle.tsx new file mode 100644 index 00000000..03ffbd4c --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/PanelResizeHandle.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Box, Sx } from '@mantine/core'; +import { PanelResizeHandle as ReactPanelResizeHandle } from 'react-resizable-panels'; +import { useThemeMode } from '../../../../hooks/useThemeMode'; + +const reactPanelResizeHandleStyles = { + display: 'flex', + alignItems: 'center', + '._jotai-devtools-internal-panel-resize-handle': { + transition: 'max-height, min-height, height, 0.2s ease-out', + }, + '[data-resize-handle-active] &, &:hover': { + '._jotai-devtools-internal-panel-resize-handle': { + height: '90%', + minHeight: '90%', + maxHeight: '90%', + }, + }, +}; +const innerContainerStyles: Sx = { + borderRadius: '2rem', + verticalAlign: 'middle', +}; + +export const PanelResizeHandle = () => { + return ( + <ReactPanelResizeHandle> + <Box p="5" h="100%" sx={reactPanelResizeHandleStyles}> + <Box + className="_jotai-devtools-internal-panel-resize-handle" + mah={100} + mih={50} + h="20%" + w={5} + m={5} + bg={useThemeMode('gray.3', 'gray.7')} + sx={innerContainerStyles} + /> + </Box> + </ReactPanelResizeHandle> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/ShellResizeBar.tsx b/src/DevTools/Extension/components/Shell/components/ShellResizeBar.tsx new file mode 100644 index 00000000..14ef6567 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/ShellResizeBar.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { Box, Sx } from '@mantine/core'; +import { useSetAtom } from 'jotai/react'; +import { shellStylesAtom } from '../../../../atoms/shell-styles'; +import { shellStyleDefaults } from '../../../../constants'; +import { useDevtoolsJotaiStoreOptions } from '../../../../internal-jotai-store'; + +type ShellResizeBarProps = { + // element: HTMLDivElement | null; + shellRef?: React.RefObject<HTMLDivElement> | null; +}; + +const shellResizeBarStyles: Sx = { + width: '100%', + height: 5, + cursor: 'row-resize', + zIndex: 2, + position: 'absolute', + // offset it by 2px as user might try to lift it from the edge + top: -2, +}; +export const ShellResizeBar = ({ shellRef }: ShellResizeBarProps) => { + const setShellStyle = useSetAtom( + shellStylesAtom, + useDevtoolsJotaiStoreOptions(), + ); + + const handleMouseDown: React.MouseEventHandler<HTMLDivElement> = ( + mouseDownEvent, + ) => { + const startY = mouseDownEvent.clientY; + const { height = 500 } = shellRef?.current?.getBoundingClientRect() || {}; + const updateDimensions = (event: MouseEvent) => { + event.preventDefault(); + const nextHeight = height + startY - event.clientY; + + setShellStyle((prev) => ({ + ...prev, + isDragging: true, + height: Math.max(nextHeight, shellStyleDefaults.minHeight), + })); + }; + + const unsub = () => { + setShellStyle((prev) => ({ ...prev, isDragging: false })); + document.removeEventListener('mousemove', updateDimensions, false); + document.removeEventListener('mouseUp', unsub, false); + }; + + document.addEventListener('mousemove', updateDimensions, false); + document.addEventListener('mouseup', unsub, false); + }; + + return ( + <Box + sx={shellResizeBarStyles} + onMouseDown={handleMouseDown} + data-testid="shell-resize-bar" + /> + ); +}; diff --git a/src/DevTools/Extension/components/Shell/components/TabsHeader.tsx b/src/DevTools/Extension/components/Shell/components/TabsHeader.tsx new file mode 100644 index 00000000..c9e3fae9 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/components/TabsHeader.tsx @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { Tabs } from '@mantine/core'; +import { IconLayoutList } from '@tabler/icons'; +import { TabKeys } from '../../../../constants'; + +export const TabsHeader = React.memo(() => { + return ( + <Tabs.List> + <Tabs.Tab value={TabKeys.AtomViewer} icon={<IconLayoutList size={14} />}> + Atom Viewer + </Tabs.Tab> + + {/* TODO Add these features */} + {/* <Tabs.Tab + value={TabKeys.TimeTravel} + icon={<IconTimeline size={14} />} + disabled + > + Time travel + </Tabs.Tab> + <Tabs.Tab + value={TabKeys.AtomGraph} + icon={<IconVectorTriangle size={14} />} + disabled + > + Atom Graph + </Tabs.Tab> */} + </Tabs.List> + ); +}); + +TabsHeader.displayName = 'TabsHeader'; diff --git a/src/DevTools/Extension/components/Shell/index.ts b/src/DevTools/Extension/components/Shell/index.ts new file mode 100644 index 00000000..535fad8a --- /dev/null +++ b/src/DevTools/Extension/components/Shell/index.ts @@ -0,0 +1 @@ +export * from './Shell'; diff --git a/src/DevTools/Extension/components/Shell/styles.ts b/src/DevTools/Extension/components/Shell/styles.ts new file mode 100644 index 00000000..917c45f4 --- /dev/null +++ b/src/DevTools/Extension/components/Shell/styles.ts @@ -0,0 +1,21 @@ +import { Sx } from '@mantine/core'; + +export const shellStyles: Sx = (theme) => ({ + position: 'fixed', + left: 0, + bottom: 0, + // subtract margins + width: 'calc(100% - 20px)', + // TODO Do we need this + // userSelect: isDragging ? 'none' : 'auto', + borderColor: + theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3], + borderWidth: 1, + borderStyle: 'solid', + // Changing this may cause overlaps of bg in nested divs + borderRadius: '8px', + background: theme.colorScheme === 'dark' ? theme.colors.dark[7] : theme.white, + display: 'flex', + flexDirection: 'column', + zIndex: 99999, +}); diff --git a/src/DevTools/Extension/index.ts b/src/DevTools/Extension/index.ts new file mode 100644 index 00000000..ed6786a6 --- /dev/null +++ b/src/DevTools/Extension/index.ts @@ -0,0 +1 @@ +export * from './Extension'; diff --git a/src/DevTools/atoms/devtools-options.ts b/src/DevTools/atoms/devtools-options.ts new file mode 100644 index 00000000..4001a160 --- /dev/null +++ b/src/DevTools/atoms/devtools-options.ts @@ -0,0 +1,56 @@ +import { useAtomValue, useSetAtom } from 'jotai/react'; +import { atom } from 'jotai/vanilla'; +import { useDevtoolsJotaiStoreOptions } from '../internal-jotai-store'; + +export type DevToolsOptions = { + /** + * Parsing strategy for AtomViewer. Defaults to `raw` + */ + // FIXME: There is a bug in Jotai core that prevents us from subscribing to nested atom value properly + // atomValueParser?: /** + // * parses the top level atom value but doesn't parse values of atoms within atoms + // */ + // | 'raw' + // /** + // * parses values of atoms within atoms. Comes with linear performance curve + // * the bigger the object, the slower the performance + // */ + // | 'deep-nested'; + /** + * Defaults to `false` + * + * Private are atoms that are used by Jotai libraries internally to manage state. + * They're often used internally in atoms like `atomWithStorage` or `atomWithLocation`, etc. to manage state. + */ + shouldShowPrivateAtoms?: boolean; +}; + +const defaultDevToolsOptions: DevToolsOptions = { + shouldShowPrivateAtoms: false, +}; + +const internalDevToolsOptions = atom<DevToolsOptions>(defaultDevToolsOptions); + +export const devToolsOptionsAtom = atom< + DevToolsOptions, + [DevToolsOptions | undefined], + void +>( + (get) => { + return get(internalDevToolsOptions); + }, + (_, set, options) => { + const patchWithDefaultsDevToolsOptions = { + ...defaultDevToolsOptions, + ...options, + }; + + set(internalDevToolsOptions, patchWithDefaultsDevToolsOptions); + }, +); + +export const useSetDevToolsOptions = () => + useSetAtom(devToolsOptionsAtom, useDevtoolsJotaiStoreOptions()); + +export const useDevToolsOptionsValue = () => + useAtomValue(devToolsOptionsAtom, useDevtoolsJotaiStoreOptions()); diff --git a/src/DevTools/atoms/is-shell-open-atom.ts b/src/DevTools/atoms/is-shell-open-atom.ts new file mode 100644 index 00000000..a7df67a5 --- /dev/null +++ b/src/DevTools/atoms/is-shell-open-atom.ts @@ -0,0 +1,6 @@ +import { atomWithStorage } from 'jotai/vanilla/utils'; + +export const isShellOpenAtom = atomWithStorage<boolean | null>( + 'jotai-devtools-is-shell-open', + null, +); diff --git a/src/DevTools/atoms/shell-styles.ts b/src/DevTools/atoms/shell-styles.ts new file mode 100644 index 00000000..d2a70b92 --- /dev/null +++ b/src/DevTools/atoms/shell-styles.ts @@ -0,0 +1,12 @@ +import { atom } from 'jotai/vanilla'; +import { shellStyleDefaults } from '../constants'; + +type ShellStyleAtomData = { + height: number; + isDragging: boolean; +}; + +export const shellStylesAtom = atom<ShellStyleAtomData>({ + height: shellStyleDefaults.defaultHeight, + isDragging: false, +}); diff --git a/src/DevTools/atoms/user-custom-store.ts b/src/DevTools/atoms/user-custom-store.ts new file mode 100644 index 00000000..aef4cea8 --- /dev/null +++ b/src/DevTools/atoms/user-custom-store.ts @@ -0,0 +1,12 @@ +import { useAtomValue, useSetAtom } from 'jotai/react'; +import { atom } from 'jotai/vanilla'; +import { Store } from 'src/types'; +import { useDevtoolsJotaiStoreOptions } from '../internal-jotai-store'; + +const userCustomStoreAtom = atom<Store | undefined>(undefined); + +export const useUserCustomStoreValue = () => + useAtomValue(userCustomStoreAtom, useDevtoolsJotaiStoreOptions()); + +export const useSetCustomStore = () => + useSetAtom(userCustomStoreAtom, useDevtoolsJotaiStoreOptions()); diff --git a/src/DevTools/atoms/values-atom.ts b/src/DevTools/atoms/values-atom.ts new file mode 100644 index 00000000..1fc85ecc --- /dev/null +++ b/src/DevTools/atoms/values-atom.ts @@ -0,0 +1,17 @@ +import { useAtom, useAtomValue } from 'jotai/react'; +import { atom } from 'jotai/vanilla'; +import { ValuesAtomTuple } from 'src/types'; +import { useDevtoolsJotaiStoreOptions } from '../internal-jotai-store'; + +export const valuesAtom = atom<ValuesAtomTuple[]>([]); + +/** + * @internal + * + * @returns [ValuesAtomTuple, Setter] + */ +export const useSnapshotValues = () => + useAtom(valuesAtom, useDevtoolsJotaiStoreOptions()); + +export const useSnapshotValuesValue = () => + useAtomValue(valuesAtom, useDevtoolsJotaiStoreOptions()); diff --git a/src/DevTools/constants.ts b/src/DevTools/constants.ts new file mode 100644 index 00000000..2dbf61a6 --- /dev/null +++ b/src/DevTools/constants.ts @@ -0,0 +1,15 @@ +// storing this as a constants to reuse it across the Shell +// This could be searched by user on the Atom viewer as well +export const unlabeledAtomLabel = '<unlabeled-atom>'; + +export const shellStyleDefaults = { + minHeight: 200, // in px + maxHeight: '90%', + defaultHeight: 370, // in px +}; + +export enum TabKeys { + AtomViewer = 'atom-viewer', + TimeTravel = 'time-travel', + AtomGraph = 'atom-graph', +} diff --git a/src/DevTools/fonts/files/Inter-Bold.woff2 b/src/DevTools/fonts/files/Inter-Bold.woff2 new file mode 100644 index 00000000..2846f29c Binary files /dev/null and b/src/DevTools/fonts/files/Inter-Bold.woff2 differ diff --git a/src/DevTools/fonts/files/Inter-Medium.woff2 b/src/DevTools/fonts/files/Inter-Medium.woff2 new file mode 100644 index 00000000..f92498a2 Binary files /dev/null and b/src/DevTools/fonts/files/Inter-Medium.woff2 differ diff --git a/src/DevTools/fonts/files/Inter-Regular.woff2 b/src/DevTools/fonts/files/Inter-Regular.woff2 new file mode 100644 index 00000000..6c2b6893 Binary files /dev/null and b/src/DevTools/fonts/files/Inter-Regular.woff2 differ diff --git a/src/DevTools/fonts/files/Inter-SemiBold.woff2 b/src/DevTools/fonts/files/Inter-SemiBold.woff2 new file mode 100644 index 00000000..611e90c9 Binary files /dev/null and b/src/DevTools/fonts/files/Inter-SemiBold.woff2 differ diff --git a/src/DevTools/fonts/files/JetBrainsMono-Bold.woff2 b/src/DevTools/fonts/files/JetBrainsMono-Bold.woff2 new file mode 100644 index 00000000..4917f434 Binary files /dev/null and b/src/DevTools/fonts/files/JetBrainsMono-Bold.woff2 differ diff --git a/src/DevTools/fonts/files/JetBrainsMono-Regular.woff2 b/src/DevTools/fonts/files/JetBrainsMono-Regular.woff2 new file mode 100644 index 00000000..40da4276 Binary files /dev/null and b/src/DevTools/fonts/files/JetBrainsMono-Regular.woff2 differ diff --git a/src/DevTools/fonts/files/JetBrainsMono-SemiBold.woff2 b/src/DevTools/fonts/files/JetBrainsMono-SemiBold.woff2 new file mode 100644 index 00000000..5ead7b0d Binary files /dev/null and b/src/DevTools/fonts/files/JetBrainsMono-SemiBold.woff2 differ diff --git a/src/DevTools/fonts/fonts.ts b/src/DevTools/fonts/fonts.ts new file mode 100644 index 00000000..8bf3b04a --- /dev/null +++ b/src/DevTools/fonts/fonts.ts @@ -0,0 +1,72 @@ +import { css } from '@emotion/react'; +import inter700 from './files/Inter-Bold.woff2'; +import inter500 from './files/Inter-Medium.woff2'; +import inter400 from './files/Inter-Regular.woff2'; +import inter600 from './files/Inter-SemiBold.woff2'; +import jetbrainsMono700 from './files/JetBrainsMono-Bold.woff2'; +import jetbrainsMono400 from './files/JetBrainsMono-Regular.woff2'; +import jetbrainsMono600 from './files/JetBrainsMono-SemiBold.woff2'; + +export const fontCss = css` + @font-face { + /* inter-latin-400-normal*/ + font-family: 'Inter'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url('${inter400}') format('woff2'); + } + + @font-face { + /* inter-latin-500-normal*/ + font-family: 'Inter'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url('${inter500}') format('woff2'); + } + + @font-face { + /* inter-latin-600-normal*/ + font-family: 'Inter'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url('${inter600}') format('woff2'); + } + + @font-face { + font-family: 'Inter'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url('${inter700}') format('woff2'); + } + + @font-face { + /* jetbrains-mono-latin-400-normal*/ + font-family: 'JetBrains Mono'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url('${jetbrainsMono400}') format('woff2'); + } + + @font-face { + /* jetbrains-mono-latin-600-normal*/ + font-family: 'JetBrains Mono'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url('${jetbrainsMono600}') format('woff2'); + } + + @font-face { + /* jetbrains-mono-latin-700-normal*/ + font-family: 'JetBrains Mono'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url('${jetbrainsMono700}') format('woff2'); + } +`; diff --git a/src/DevTools/fonts/index.ts b/src/DevTools/fonts/index.ts new file mode 100644 index 00000000..e3dc4916 --- /dev/null +++ b/src/DevTools/fonts/index.ts @@ -0,0 +1 @@ +export * from './fonts'; diff --git a/src/DevTools/hooks/useAtomsSnapshots.ts b/src/DevTools/hooks/useAtomsSnapshots.ts new file mode 100644 index 00000000..abff6d9c --- /dev/null +++ b/src/DevTools/hooks/useAtomsSnapshots.ts @@ -0,0 +1,33 @@ +import { useEffect, useMemo } from 'react'; +import { Options } from 'src/types'; +import { useAtomsSnapshot as useJotaiAtomsSnapshot } from '../../utils'; +import { useSnapshotValues } from '../atoms/values-atom'; +import { useUserStore } from './useUserStore'; + +export const useAtomsSnapshots = () => { + const store = useUserStore(); + const opts: Options = { store }; + + const currentSnapshots = useJotaiAtomsSnapshot(opts); + return currentSnapshots; +}; + +// We're doing this to to prevent creating multiple +// copies for values array and share it via DevtoolsJotaiStore +// The idea is for the entire Shell to share values atom +export const useSyncSnapshotValuesToAtom = () => { + const currentSnapshots = useAtomsSnapshots(); + const [values, setValues] = useSnapshotValues(); + + const valuesArr = useMemo(() => { + const nextValues = Array.from(currentSnapshots.values); + + return nextValues; + }, [currentSnapshots.values]); + + useEffect(() => { + setValues(valuesArr); + }, [setValues, valuesArr]); + + return values; +}; diff --git a/src/DevTools/hooks/useThemeMode.tsx b/src/DevTools/hooks/useThemeMode.tsx new file mode 100644 index 00000000..440e319a --- /dev/null +++ b/src/DevTools/hooks/useThemeMode.tsx @@ -0,0 +1,6 @@ +import { useMantineColorScheme } from '@mantine/core'; + +export const useThemeMode = <L, T>(light: L, dark: T) => { + const { colorScheme } = useMantineColorScheme(); + return colorScheme === 'light' ? light : dark; +}; diff --git a/src/DevTools/hooks/useUserStore.ts b/src/DevTools/hooks/useUserStore.ts new file mode 100644 index 00000000..e94fca1a --- /dev/null +++ b/src/DevTools/hooks/useUserStore.ts @@ -0,0 +1,19 @@ +import { useStore } from 'jotai/react'; +import { Options } from 'src/types'; +import { useUserCustomStoreValue } from '../atoms/user-custom-store'; + +export const useUserStore = () => { + const possibleUserStore = useUserCustomStoreValue(); + + const userStore = useStore( + // This defaults to user's default store in a `provider-less` mode + possibleUserStore ? { store: possibleUserStore } : undefined, + ); + + return userStore; +}; + +export const useUserStoreOptions = (): Options => { + const store = useUserStore(); + return { store: store }; +}; diff --git a/src/DevTools/index.ts b/src/DevTools/index.ts new file mode 100644 index 00000000..fe4f7591 --- /dev/null +++ b/src/DevTools/index.ts @@ -0,0 +1 @@ +export * from './DevTools'; diff --git a/src/DevTools/internal-jotai-store.ts b/src/DevTools/internal-jotai-store.ts new file mode 100644 index 00000000..074f8882 --- /dev/null +++ b/src/DevTools/internal-jotai-store.ts @@ -0,0 +1,24 @@ +import { createContext, useContext } from 'react'; +import { createStore } from 'jotai/vanilla'; +import { Store } from 'src/types'; + +// Don't use this directly in your components +// use `useDevtoolsJotaiStoreOptions` instead +export const internalJotaiStore = createStore(); +export const InternalDevToolsContext = createContext<Store | undefined>( + undefined, +); + +export const useInternalStore = (): Store => { + const store = useContext(InternalDevToolsContext); + if (!store) { + throw new Error( + `Unable to find internal Jotai store, Did you wrap the component within DevToolsProvider?`, + ); + } + return store; +}; + +export const useDevtoolsJotaiStoreOptions = () => ({ + store: useInternalStore(), +}); diff --git a/src/DevTools/utils/create-memoized-emotion-cache.ts b/src/DevTools/utils/create-memoized-emotion-cache.ts new file mode 100644 index 00000000..f2626ef6 --- /dev/null +++ b/src/DevTools/utils/create-memoized-emotion-cache.ts @@ -0,0 +1,26 @@ +import { EmotionCache } from '@emotion/react'; +import { createEmotionCache } from '@mantine/core'; + +type EmotionCacheOptions = Parameters<typeof createEmotionCache>[0]; + +// Creating a cache is an expensive operation, so we only do it once if the style nonce is present. +let emotionCache: EmotionCache | undefined; + +export const createMemoizedEmotionCache = (styleNonce?: string) => { + return () => { + if (emotionCache) { + return emotionCache; + } + + const createEmotionCacheOptions: EmotionCacheOptions = { + key: 'jotai-devtools', + }; + + if (styleNonce) { + createEmotionCacheOptions.nonce = styleNonce; + } + + emotionCache = createEmotionCache(createEmotionCacheOptions); + return emotionCache; + }; +}; diff --git a/src/DevTools/utils/get-type-of-atom-value.ts b/src/DevTools/utils/get-type-of-atom-value.ts new file mode 100644 index 00000000..3ca17536 --- /dev/null +++ b/src/DevTools/utils/get-type-of-atom-value.ts @@ -0,0 +1,49 @@ +import { WritableAtom } from 'jotai/vanilla'; +import { AnyAtom, AnyAtomValue, WithInitialValue } from 'src/types'; + +const isValueAtom = (value: AnyAtomValue): value is AnyAtom => { + return ( + typeof (value as Partial<AnyAtom>)?.read === 'function' || + typeof (value as WritableAtom<any, any, any>)?.write === 'function' || + !!(value as WithInitialValue)?.init || + !!(value as Partial<AnyAtom>)?.debugLabel + ); +}; + +type TypeOfReturn = + | 'string' + | 'number' + | 'bigint' + | 'boolean' + | 'symbol' + | 'undefined' + | 'object' + | 'function'; + +export type AtomValueType = + | 'promise' + | 'array' + | 'null' + | 'atom' + | TypeOfReturn; + +export const getTypeOfAtomValue = (value: AnyAtomValue): AtomValueType => { + if (value instanceof Promise) { + return 'promise'; + } + + if (Array.isArray(value)) { + return 'array'; + } + + if (value === null) { + return 'null'; + } + + if (isValueAtom(value)) { + return 'atom'; + } + + const result = typeof value; + return result; +}; diff --git a/src/DevTools/utils/index.ts b/src/DevTools/utils/index.ts new file mode 100644 index 00000000..bb5dcdd5 --- /dev/null +++ b/src/DevTools/utils/index.ts @@ -0,0 +1,5 @@ +export * from './get-type-of-atom-value'; +export * from './parse-atom-value'; +export * from './parse-debug-label'; +export * from './stringify-atom-value'; +export * from './create-memoized-emotion-cache'; diff --git a/src/DevTools/utils/parse-atom-value.ts b/src/DevTools/utils/parse-atom-value.ts new file mode 100644 index 00000000..4f2fc94b --- /dev/null +++ b/src/DevTools/utils/parse-atom-value.ts @@ -0,0 +1,60 @@ +import type { AnyAtom, AnyAtomValue, Store } from 'src/types'; +import { getTypeOfAtomValue } from './get-type-of-atom-value'; + +const deepParseArrayAtom = ( + atomValue: AnyAtomValue[], + userStore: Store, +): AnyAtomValue[] => { + const values = atomValue.map((value: AnyAtomValue) => { + return deepParseAtomValue(value, userStore); + }); + + return values; +}; + +const deepParseObjectAtom = ( + atomValue: Record<any, any>, + userStore: Store, +): Record<any, any> => { + const nextValueMap: Record<string, AnyAtomValue> = {}; + for (const property in atomValue) { + const value = atomValue[property]; + nextValueMap[property] = deepParseAtomValue(value, userStore); + } + return nextValueMap; +}; + +// Only call this if `atomValue` type has been identified as Atom +const deepParseAtomAtom = ( + atomValue: AnyAtom, + userStore: Store, +): AnyAtomValue => { + const parsedValue = userStore.get(atomValue); + return deepParseAtomValue(parsedValue, userStore); +}; + +// FIXME replace `type === 'something'` checks with TS guards? +// Don't call this fn recursively, it'll result in an infinite loop +export const deepParseAtomValue = ( + atomValue: AnyAtom | AnyAtomValue, + userStore: Store, +) => { + const type = getTypeOfAtomValue(atomValue); + + if (type === 'atom') { + return deepParseAtomAtom(atomValue as AnyAtom, userStore); + } + + if (type === 'object') { + return deepParseObjectAtom(atomValue as object, userStore); + } + + if (type === 'array') { + return deepParseArrayAtom( + atomValue as unknown as AnyAtomValue[], + userStore, + ); + } + + return atomValue; +}; diff --git a/src/DevTools/utils/parse-debug-label.ts b/src/DevTools/utils/parse-debug-label.ts new file mode 100644 index 00000000..beef66ea --- /dev/null +++ b/src/DevTools/utils/parse-debug-label.ts @@ -0,0 +1,5 @@ +import { unlabeledAtomLabel } from '../constants'; + +export const parseDebugLabel = (label?: string): string => { + return label || unlabeledAtomLabel; +}; diff --git a/src/DevTools/utils/stringify-atom-value.ts b/src/DevTools/utils/stringify-atom-value.ts new file mode 100644 index 00000000..2d3dca53 --- /dev/null +++ b/src/DevTools/utils/stringify-atom-value.ts @@ -0,0 +1,30 @@ +import { serialize } from 'superjson'; +import { AnyAtomValue } from 'src/types'; +import { getTypeOfAtomValue } from './get-type-of-atom-value'; + +const literalStringValues = ['bigint', 'symbol', 'undefined', 'function']; +export const ErrorSymbol = Symbol('parsing-error'); + +export const stringifyAtomValue = ( + atomValue: AnyAtomValue, +): string | typeof ErrorSymbol => { + const type = getTypeOfAtomValue(atomValue); + + if (literalStringValues.includes(type)) { + return String(atomValue); + } + + const { json } = serialize(atomValue); + try { + const result = JSON.stringify(json, null, 2); + + // Perhaps a value that we couldn't serialize? + if (typeof result === 'undefined') { + return String(atomValue); + } + + return result; + } catch (e) { + return ErrorSymbol; + } +}; diff --git a/src/index.ts b/src/index.ts index 04bca77e..ccf7dd8f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,2 @@ +export * from './DevTools'; export * from './utils'; diff --git a/src/stories/Default/Demos/Async.tsx b/src/stories/Default/Demos/Async.tsx new file mode 100644 index 00000000..ae0a6ab5 --- /dev/null +++ b/src/stories/Default/Demos/Async.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { Box, Button, Text, Title } from '@mantine/core'; +import { useAtom } from 'jotai/react'; +import { atom } from 'jotai/vanilla'; +import { demoStoreOptions } from './demo-store'; + +const delayedPromise = (data: any) => + new Promise((resolve) => { + const timeout = setTimeout(() => { + clearTimeout(timeout); + resolve(data); + }, 8000); + }); + +const getRandomNumberBetweenMinAndMax = (min = 1, max = 100) => { + return Math.round(Math.random() * max) + min; +}; +const makeRandomFetchReq = async () => { + const id = getRandomNumberBetweenMinAndMax(); + return fetch(`https://jsonplaceholder.typicode.com/posts/${id}`).then( + (res) => { + return delayedPromise(res.json()); + }, + ); +}; +// const asyncAtom = atom<Promise<any>>(Promise.resolve(null)); +const asyncAtom = atom(Promise.resolve<any>(null)); +asyncAtom.debugLabel = 'asyncAtom'; + +export const Async = () => { + const [request, setRequest] = useAtom(asyncAtom, demoStoreOptions); + // const setRequest = useSetAtom(asyncAtom, demoStoreOptions); + + const handleFetchClick = async () => { + setRequest(makeRandomFetchReq); // Will suspend until request resolves + }; + + return ( + <Box> + <Title size="h5">Async</Title> + <Text mb={10} color="dark.2"> + Out-of-the-box Suspense support. <i>Timeout: 8000 ms</i> + </Text> + <Text>Request status: {!request ? 'Ready' : 'β Success'} </Text> + <Button onClick={handleFetchClick} size="xs" uppercase mt={5}> + Fetch + </Button> + </Box> + ); +}; diff --git a/src/stories/Default/Demos/Counter.tsx b/src/stories/Default/Demos/Counter.tsx new file mode 100644 index 00000000..a8250ad7 --- /dev/null +++ b/src/stories/Default/Demos/Counter.tsx @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { Box, Button, Code, Title } from '@mantine/core'; +import { useAtom } from 'jotai/react'; +import { atom } from 'jotai/vanilla'; +import { demoStoreOptions } from './demo-store'; + +const countAtom = atom(0); +countAtom.debugLabel = 'countAtom'; + +export const Counter = () => { + const [count, setCount] = useAtom(countAtom, demoStoreOptions); + + return ( + <Box maw="500px"> + <Title size="h5">Counter</Title> + <Code color="gray" block> + {count} + </Code> + + <Button + display="block" + mt={5} + onClick={React.useCallback(() => setCount((c) => c + 1), [setCount])} + size="xs" + uppercase + color="dark" + > + Add 1 + </Button> + </Box> + ); +}; diff --git a/src/stories/Default/Demos/DemoApp.tsx b/src/stories/Default/Demos/DemoApp.tsx new file mode 100644 index 00000000..c6e69e78 --- /dev/null +++ b/src/stories/Default/Demos/DemoApp.tsx @@ -0,0 +1,54 @@ +import * as React from 'react'; +import { Grid, MantineProvider, Text, Title } from '@mantine/core'; +import { DevTools, DevToolsProps } from '../../../DevTools'; +import { Async } from './Async'; +import { Counter } from './Counter'; +import { DemoJotaiStoreContext, demoStore } from './demo-store'; +import { Random } from './Random'; +import { Todos } from './Todos'; + +export const DemoApp = (props: DevToolsProps) => { + return ( + <DemoJotaiStoreContext.Provider value={demoStore}> + <MantineProvider + withNormalizeCSS + withGlobalStyles + theme={{ + primaryColor: 'dark', + cursorType: 'pointer', + }} + > + <DevTools store={demoStore} {...props} /> + <div className="App"> + <React.Suspense + fallback={ + <Text className="loading-suspense"> + Your suspense loading component... + </Text> + } + > + <Title size="h3">Demos</Title> + <Text mb={10} color="dark.2"> + Jotai DevTools β Early Preview + </Text> + + <Grid gutter="xl"> + <Grid.Col span={6}> + <Random /> + </Grid.Col> + <Grid.Col span={6}> + <Counter /> + </Grid.Col> + <Grid.Col span={6}> + <Todos /> + </Grid.Col>{' '} + <Grid.Col span={6}> + <Async /> + </Grid.Col> + </Grid> + </React.Suspense> + </div> + </MantineProvider> + </DemoJotaiStoreContext.Provider> + ); +}; diff --git a/src/stories/Default/Demos/Random.tsx b/src/stories/Default/Demos/Random.tsx new file mode 100644 index 00000000..5e25bc84 --- /dev/null +++ b/src/stories/Default/Demos/Random.tsx @@ -0,0 +1,108 @@ +import * as React from 'react'; +import { Box, Button, Code, Divider, Title } from '@mantine/core'; +import { useAtom, useAtomValue } from 'jotai/react'; +import { atom } from 'jotai/vanilla'; +import { demoStoreOptions } from './demo-store'; + +const countAtom = atom(1); +countAtom.debugLabel = 'randomCountAtom'; + +const textAtom = atom('hello'); +textAtom.debugLabel = 'textAtom'; + +// Try out a really long big int - 2n ** 999n +const bigintAtom = atom(BigInt(Number.MAX_SAFE_INTEGER)); +bigintAtom.debugLabel = 'bigintAtom'; + +const atomReturnsUndefined = atom(undefined); +atomReturnsUndefined.debugLabel = 'atomReturnsUndefined'; + +const atomWithSomeSymbol = atom(Symbol('hello')); +atomWithSomeSymbol.debugLabel = 'atomWithSomeSymbol'; + +const atomWithFunction = atom(() => () => 'hello'); +atomWithFunction.debugLabel = 'atomWithFunction'; + +const nestedObjectAtom = atom((get) => { + return { + nestedObject: { + doubleCount: get(countAtom) * 2, + tripleCount: get(countAtom) * 3, + }, + foo: 'bar', + }; +}); + +nestedObjectAtom.debugLabel = 'nestedObjectAtom'; + +const atomsInAtomsCountAtom = atom(atom(atom((get) => get(countAtom)))); +atomsInAtomsCountAtom.debugLabel = 'atomsInAtomsCountAtom'; + +const baseErrorAtom = atom(0); +const triggerErrorAtom = atom( + (get) => { + const val = get(baseErrorAtom); + if (val >= 1) { + const randomFn = function () {}; + randomFn.toString = () => { + throw new Error('Random error'); + }; + return randomFn; + } + + return val; + }, + (get, set) => { + return set(baseErrorAtom, (prev) => prev + 1); + }, +); +triggerErrorAtom.debugLabel = 'triggerErrorAtom'; +export const Random = () => { + const [count, setCount] = useAtom(countAtom, demoStoreOptions); + const [, setError] = useAtom(triggerErrorAtom, demoStoreOptions); + // We're not displaying these values on the UI + // eslint-disable-next-line @typescript-eslint/no-unused-vars + useAtomValue(nestedObjectAtom, demoStoreOptions); + useAtomValue(textAtom, demoStoreOptions); + useAtomValue(bigintAtom, demoStoreOptions); + useAtomValue(atomReturnsUndefined, demoStoreOptions); + useAtomValue(atomWithSomeSymbol, demoStoreOptions); + useAtomValue(atomWithFunction, demoStoreOptions); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const atomsInAtomsCount = useAtomValue( + atomsInAtomsCountAtom, + demoStoreOptions, + ); + + return ( + <Box maw="500px"> + <Title size="h5">Random</Title> + <Code color="gray" block> + {count} + </Code> + + <Button + display="block" + mt={5} + onClick={React.useCallback(() => setCount((c) => c + 1), [setCount])} + size="xs" + uppercase + color="dark" + > + Add 1 + </Button> + <Divider size="sm" my="lg" /> + <Button + display="block" + mt={5} + onClick={setError} + size="xs" + uppercase + color="red.8" + > + Trigger error π₯ + </Button> + </Box> + ); +}; diff --git a/src/stories/Default/Demos/Todos.tsx b/src/stories/Default/Demos/Todos.tsx new file mode 100644 index 00000000..77a2182f --- /dev/null +++ b/src/stories/Default/Demos/Todos.tsx @@ -0,0 +1,150 @@ +import * as React from 'react'; +import { + ActionIcon, + Box, + Checkbox, + Flex, + List, + Radio, + Text, + TextInput, + Title, +} from '@mantine/core'; +import { IconX } from '@tabler/icons'; +import { useAtom, useSetAtom } from 'jotai/react'; +import { PrimitiveAtom, atom } from 'jotai/vanilla'; +import { demoStoreOptions } from './demo-store'; + +type Todo = { + title: string; + completed: boolean; +}; + +const filterAtom = atom('all'); +// filterAtom.debugLabel = "filterAtom"; + +const initialAtom = atom<Todo>({ title: 'test', completed: false }); +const todosAtom = atom<PrimitiveAtom<Todo>[]>([initialAtom]); +todosAtom.debugLabel = 'todosAtom'; + +const filteredAtom = atom<PrimitiveAtom<Todo>[]>((get) => { + const filter = get(filterAtom); + const todos = get(todosAtom); + if (filter === 'all') { + return todos; + } else if (filter === 'completed') { + return todos.filter((atom) => get(atom).completed); + } else { + return todos.filter((atom) => !get(atom).completed); + } +}); + +filteredAtom.debugLabel = 'filteredAtom'; + +type RemoveFn = (item: PrimitiveAtom<Todo>) => void; +type TodoItemProps = { + atom: PrimitiveAtom<Todo>; + remove: RemoveFn; +}; + +const TodoItem = ({ atom, remove }: TodoItemProps) => { + const [item, setItem] = useAtom(atom, demoStoreOptions); + React.useEffect(() => { + // atom.debugLabel = 'Todo Item - ' + item.title; + }, [atom]); + const toggleCompleted = () => + setItem((props) => ({ ...props, completed: !props.completed })); + return ( + <Flex justify="space-between" align="center" my={10}> + <Flex align="center"> + <Checkbox + size="xs" + onChange={toggleCompleted} + checked={item.completed} + display="block" + mr={10} + mb={-6} + /> + <Text + sx={() => ({ + textDecoration: item.completed ? 'line-through' : '', + })} + fz="md" + > + {item.title} + </Text> + </Flex> + + <ActionIcon + onClick={() => remove(atom)} + variant="outline" + color="dark" + size="sm" + > + <IconX /> + </ActionIcon> + </Flex> + ); +}; + +const Filter = () => { + const [filter, set] = useAtom(filterAtom, demoStoreOptions); + + return ( + <Radio.Group onChange={(value) => set(value)} value={filter}> + <Radio value="all" label="All" /> + <Radio value="completed" label="Completed" /> + <Radio value="incompleted" label="Incompleted" /> + </Radio.Group> + ); +}; + +type FilteredType = { + remove: RemoveFn; +}; + +const Filtered = (props: FilteredType) => { + const [todos] = useAtom(filteredAtom, demoStoreOptions); + const components = todos.map((atom, i) => ( + <TodoItem + atom={atom} + key={`todo-item${i}` + atom.toString()} + remove={props.remove} + /> + )); + + return <>{components}</>; +}; + +const TodoList = () => { + const setTodos = useSetAtom(todosAtom, demoStoreOptions); + const remove: RemoveFn = (todo) => + setTodos((prev) => prev.filter((item) => item !== todo)); + const add = (e: React.FormEvent<HTMLFormElement>) => { + e.preventDefault(); + const title = e.currentTarget.inputTitle.value; + e.currentTarget.inputTitle.value = ''; + if (title.trim()) { + setTodos((prev) => [...prev, atom<Todo>({ title, completed: false })]); + } + }; + + return ( + <form onSubmit={add}> + <Filter /> + <TextInput placeholder="Type your todo" name="inputTitle" mt="sm" /> + <List listStyleType="none"> + <Filtered remove={remove} /> + </List> + </form> + ); +}; + +export const Todos = () => { + return ( + <Box maw="500px"> + <Title size="h5">Todo list</Title> + <TodoList /> + </Box> + ); +}; diff --git a/src/stories/Default/Demos/demo-store.ts b/src/stories/Default/Demos/demo-store.ts new file mode 100644 index 00000000..c70ef17a --- /dev/null +++ b/src/stories/Default/Demos/demo-store.ts @@ -0,0 +1,8 @@ +import { createContext } from 'react'; +import { createStore } from 'jotai/vanilla'; + +export const demoStore = createStore(); +export const DemoJotaiStoreContext = + createContext<ReturnType<typeof createStore>>(demoStore); + +export const demoStoreOptions = { store: demoStore }; diff --git a/src/stories/Default/DevTools.stories.tsx b/src/stories/Default/DevTools.stories.tsx new file mode 100644 index 00000000..470511af --- /dev/null +++ b/src/stories/Default/DevTools.stories.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { Meta, StoryObj } from '@storybook/react'; +import { DevTools, DevToolsProps } from '../../DevTools'; +import { DemoApp } from './Demos/DemoApp'; + +export default { + component: DevTools, + title: 'Devtools', +} as Meta<typeof DevTools>; + +type CustomStorybookProps = DevToolsProps & { + 'options.atomValueParser': 'raw' | 'deep-nested'; + 'options.shouldShowPrivateAtoms': boolean; +}; + +type Story = StoryObj<CustomStorybookProps>; + +export const Default: Story = { + render: ({ ...args }) => { + const nextOptions = { + ...args.options, + atomValueParser: args['options.atomValueParser'], + shouldShowPrivateAtoms: args['options.shouldShowPrivateAtoms'], + }; + const props = { + ...args, + options: nextOptions, + }; + return <DemoApp {...props} />; + }, + args: { + isInitialOpen: true, + 'options.atomValueParser': 'raw', + 'options.shouldShowPrivateAtoms': false, + }, + argTypes: { + store: { + control: { + type: false, + }, + }, + options: { + control: { + type: false, + }, + }, + 'options.atomValueParser': { + label: 'Atom Value Parser', + options: ['raw', 'deep-nested'], + control: { + type: 'radio', + }, + }, + }, +}; diff --git a/src/stories/Default/Playground/Playground.stories.tsx b/src/stories/Default/Playground/Playground.stories.tsx new file mode 100644 index 00000000..2c1a0b95 --- /dev/null +++ b/src/stories/Default/Playground/Playground.stories.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import { MantineProvider } from '@mantine/core'; +import { Meta, StoryObj } from '@storybook/react'; +import { DevTools, DevToolsProps } from '../../../DevTools'; +import { Playground } from './Playground'; + +export default { + component: DevTools, + title: 'DevtoolsPlayground', + argTypes: { + store: { + control: { + type: false, + }, + }, + options: { + control: { + type: false, + }, + }, + }, +} as Meta; + +type CustomStorybookProps = DevToolsProps & { + 'options.atomValueParser': 'raw' | 'deep-nested'; + 'options.shouldShowPrivateAtoms': boolean; +}; + +type Story = StoryObj<CustomStorybookProps>; + +export const Default: Story = { + render: ({ ...args }) => { + const nextOptions = { + ...args.options, + atomValueParser: args['options.atomValueParser'], + shouldShowPrivateAtoms: args['options.shouldShowPrivateAtoms'], + }; + const props = { + ...args, + options: nextOptions, + }; + return ( + <MantineProvider + withNormalizeCSS + withGlobalStyles + theme={{ + primaryColor: 'dark', + cursorType: 'pointer', + }} + > + <DevTools {...props} /> + <Playground /> + </MantineProvider> + ); + }, + args: { + isInitialOpen: true, + 'options.atomValueParser': 'raw', + 'options.shouldShowPrivateAtoms': false, + }, + argTypes: { + store: { + control: { + type: false, + }, + }, + options: { + control: { + type: false, + }, + }, + 'options.atomValueParser': { + label: 'Atom Value Parser', + options: ['raw', 'deep-nested'], + control: { + type: 'radio', + }, + }, + }, +}; diff --git a/src/stories/Default/Playground/Playground.tsx b/src/stories/Default/Playground/Playground.tsx new file mode 100644 index 00000000..b0b48d87 --- /dev/null +++ b/src/stories/Default/Playground/Playground.tsx @@ -0,0 +1,103 @@ +import * as React from 'react'; +import { Title } from '@mantine/core'; +import { atom, useAtom, useAtomValue } from 'jotai'; +import { atomsWithQuery } from 'jotai-tanstack-query'; +import { + atomWithDefault, + atomWithObservable, + loadable, + splitAtom, + unstable_unwrap as unwrap, +} from 'jotai/vanilla/utils'; +import { interval } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { SomeComponentWithToggle } from './SomeComponent'; + +const baseCountAtom = atom(1); +baseCountAtom.debugLabel = 'baseCountAtom'; + +const countAtomWithDefaultAtom = atomWithDefault( + (get) => get(baseCountAtom) * 2, +); +countAtomWithDefaultAtom.debugLabel = 'countAtomWithDefaultAtom'; + +const counterSubject = interval(1000).pipe(map((i) => `#${i}`)); +const counterAtom = atomWithObservable(() => counterSubject); +counterAtom.debugLabel = 'counterAtom'; + +const asyncAtom = atom(async (get) => { + return new Promise((resolve) => { + const timer = window.setTimeout(() => { + clearTimeout(timer); + resolve('Resolved data'); + }, 1000); + }); +}); + +asyncAtom.debugLabel = 'asyncAtom'; + +const loadableAtom = loadable(asyncAtom); +loadableAtom.debugLabel = 'loadableAtom'; + +const someRandomArray = [ + { + id: 1, + name: 'John', + }, + { + id: 2, + name: 'Jane', + }, +]; + +const arrayAtom = atom(someRandomArray); +arrayAtom.debugLabel = 'arrayAtom'; + +const splitAtomAtom = splitAtom(arrayAtom); +splitAtomAtom.debugLabel = 'splitAtomAtom'; + +const asyncArrayAtom = atom(async () => someRandomArray); +asyncArrayAtom.debugLabel = 'asyncArrayAtom'; + +const splitAsyncAtom = splitAtom(unwrap(asyncArrayAtom, () => [])); +splitAsyncAtom.debugLabel = 'splitAsyncAtom'; + +const idAtom = atom(1); +idAtom.debugLabel = 'idAtom'; + +const [userAtom] = atomsWithQuery((get) => ({ + queryKey: ['users', get(idAtom)], + queryFn: async ({ queryKey: [, id] }) => { + const res = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`); + return res.json(); + }, +})); +userAtom.debugLabel = 'userAtom'; + +const UserData = () => { + const [data] = useAtom(userAtom); + return <div>{JSON.stringify(data)}</div>; +}; + +class CircularClass { + circular: any; + constructor() { + this.circular = this; + } +} + +const circularObject: InstanceType<typeof CircularClass> = new CircularClass(); + +const circularAtom = atom(circularObject); +circularAtom.debugLabel = 'circularAtom'; +circularAtom.debugPrivate = true; + +export const Playground = () => { + return ( + <> + <Title>Playground</Title> + {/* <UserData /> */} + <SomeComponentWithToggle /> + </> + ); +}; diff --git a/src/stories/Default/Playground/SomeComponent.tsx b/src/stories/Default/Playground/SomeComponent.tsx new file mode 100644 index 00000000..b223f1dc --- /dev/null +++ b/src/stories/Default/Playground/SomeComponent.tsx @@ -0,0 +1,53 @@ +import * as React from 'react'; +import { Title } from '@mantine/core'; +import { atom, useAtom, useAtomValue } from 'jotai'; + +const baseCountAtom = atom(1); +baseCountAtom.debugLabel = 'baseCountAtom'; + +const doubleAtom = atom( + (get) => get(baseCountAtom) * 2, + (get, set, update: number) => { + set(baseCountAtom, update / 2); + }, +); +doubleAtom.debugLabel = 'doubleAtom'; + +const initialAtom = atom((get) => ({ + a: get(baseCountAtom), +})); +initialAtom.debugLabel = 'initialAtom'; + +const arrayAtoms = atom([initialAtom]); +arrayAtoms.debugLabel = 'arrayAtoms'; + +export const SomeComponent = () => { + const [count, setCount] = useAtom(doubleAtom); + useAtomValue(arrayAtoms); + const handleOnClick = React.useCallback(() => { + setCount(count + 1); + }, [setCount, count]); + + return ( + <div> + hey there! {count} + <button onClick={handleOnClick}>Increment</button> + </div> + ); +}; + +export const SomeComponentWithToggle = () => { + const [shouldShow, setShouldShow] = React.useState(true); + + const handleOntoggle = React.useCallback(() => { + setShouldShow((s) => !s); + }, [setShouldShow]); + + return ( + <> + <Title>Toggle</Title> + {shouldShow ? <SomeComponent /> : null} + <button onClick={handleOntoggle}>Toggle</button> + </> + ); +}; diff --git a/src/stories/ProviderLess/Counter.tsx b/src/stories/ProviderLess/Counter.tsx new file mode 100644 index 00000000..42e39378 --- /dev/null +++ b/src/stories/ProviderLess/Counter.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { atom, useAtom } from 'jotai'; + +const countAtom = atom(0); +countAtom.debugLabel = 'countAtom'; + +export const Counter = () => { + const [count, setCount] = useAtom(countAtom); + + return ( + <div> + {count} + <button onClick={() => setCount((c) => c + 1)}>Increment</button> + </div> + ); +}; diff --git a/src/stories/ProviderLess/DevToolsProviderLess.stories.tsx b/src/stories/ProviderLess/DevToolsProviderLess.stories.tsx new file mode 100644 index 00000000..a82144d5 --- /dev/null +++ b/src/stories/ProviderLess/DevToolsProviderLess.stories.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Meta, StoryFn } from '@storybook/react'; +import { DevTools, DevToolsProps } from '../../DevTools'; +import { Counter } from './Counter'; + +export default { + component: DevTools, + title: 'DevtoolsProviderLess', + argTypes: { + store: { + control: { + type: false, + }, + }, + options: { + control: { + type: false, + }, + }, + }, +} as Meta; + +const Template: StoryFn<DevToolsProps> = (args) => ( + <> + <DevTools {...args} /> + <Counter /> + </> +); + +export const Default = Template.bind({}); + +Default.args = { + isInitialOpen: true, +}; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 00000000..10c3d0a3 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,21 @@ +import { useStore } from 'jotai/react'; +import type { Atom, createStore } from 'jotai/vanilla'; + +export type Store = ReturnType<typeof createStore>; + +export type Options = Parameters<typeof useStore>[0]; + +export type AnyAtomValue = unknown; +export type AnyAtom = Atom<AnyAtomValue>; +export type AtomsValues = Map<AnyAtom, AnyAtomValue>; // immutable +export type AtomsDependents = Map<AnyAtom, Set<AnyAtom>>; // immutable +export type AtomsSnapshot = Readonly<{ + values: AtomsValues; + dependents: AtomsDependents; +}>; + +export type WithInitialValue<Value = AnyAtomValue> = { + init: Value; +}; + +export type ValuesAtomTuple = [AnyAtom, AnyAtomValue]; diff --git a/src/utils/types.ts b/src/utils/types.ts index 87268f13..c822fdf5 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -1,6 +1,4 @@ import type {} from '@redux-devtools/extension'; -import type { useStore } from 'jotai/react'; -import type { Atom } from 'jotai/vanilla'; // FIXME https://github.com/reduxjs/redux-devtools/issues/1097 // This is an INTERNAL type alias. @@ -9,13 +7,3 @@ export type Message = { payload?: any; state?: any; }; - -export type Options = Parameters<typeof useStore>[0]; -export type AnyAtomValue = unknown; -export type AnyAtom = Atom<AnyAtomValue>; -export type AtomsValues = Map<AnyAtom, AnyAtomValue>; // immutable -export type AtomsDependents = Map<AnyAtom, Set<AnyAtom>>; // immutable -export type AtomsSnapshot = Readonly<{ - values: AtomsValues; - dependents: AtomsDependents; -}>; diff --git a/src/utils/useAtomsDebugValue.ts b/src/utils/useAtomsDebugValue.ts index 064866ff..aec67fcb 100644 --- a/src/utils/useAtomsDebugValue.ts +++ b/src/utils/useAtomsDebugValue.ts @@ -49,7 +49,18 @@ export const useAtomsDebugValue = (options?: Options) => { const callback = () => { setAtoms(Array.from(store.dev_get_mounted_atoms?.() || [])); }; - const unsubscribe = store.dev_subscribe_state?.(callback); + // FIXME replace this with `store.dev_subscribe_store` check after next minor Jotai 2.1.0? + let devSubscribeStore = store.dev_subscribe_state; + + if (typeof store.dev_subscribe_store !== 'function') { + console.warn( + "[DEPRECATION-WARNING] Jotai version you're using contains deprecated dev-only properties that will be removed soon. Please update to the latest version of Jotai.", + ); + } else { + devSubscribeStore = store.dev_subscribe_store; + } + + const unsubscribe = devSubscribeStore?.(callback); callback(); return unsubscribe; }, [enabled, store]); diff --git a/src/utils/useAtomsDevtools.ts b/src/utils/useAtomsDevtools.ts index f7766b60..6828898b 100644 --- a/src/utils/useAtomsDevtools.ts +++ b/src/utils/useAtomsDevtools.ts @@ -1,11 +1,6 @@ import { useEffect, useRef } from 'react'; -import { - AnyAtom, - AnyAtomValue, - AtomsSnapshot, - Message, - Options, -} from './types'; +import { AnyAtom, AnyAtomValue, AtomsSnapshot, Options } from '../types'; +import { Message } from './types'; import { useAtomsSnapshot } from './useAtomsSnapshot'; import { useGotoAtomsSnapshot } from './useGotoAtomsSnapshot'; diff --git a/src/utils/useAtomsSnapshot.ts b/src/utils/useAtomsSnapshot.ts index 15c83ea4..6d796e32 100644 --- a/src/utils/useAtomsSnapshot.ts +++ b/src/utils/useAtomsSnapshot.ts @@ -5,7 +5,7 @@ import type { AtomsSnapshot, AtomsValues, Options, -} from './types'; +} from '../types'; const isEqualAtomsValues = (left: AtomsValues, right: AtomsValues) => left.size === right.size && @@ -34,10 +34,22 @@ export function useAtomsSnapshot(options?: Options): AtomsSnapshot { })); useEffect(() => { + // FIXME replace this with `store.dev_subscribe_store` check after next minor Jotai 2.1.0? if (!store.dev_subscribe_state) return; let prevValues: AtomsValues = new Map(); let prevDependents: AtomsDependents = new Map(); + + let devSubscribeStore = store.dev_subscribe_state; + + if (typeof store?.dev_subscribe_store !== 'function') { + console.warn( + "[DEPRECATION-WARNING] Jotai version you're using contains deprecated dev-only properties that will be removed soon. Please update to the latest version of Jotai.", + ); + } else { + devSubscribeStore = store.dev_subscribe_store; + } + const callback = () => { const values: AtomsValues = new Map(); const dependents: AtomsDependents = new Map(); @@ -64,7 +76,7 @@ export function useAtomsSnapshot(options?: Options): AtomsSnapshot { prevDependents = dependents; setAtomsSnapshot({ values, dependents }); }; - const unsubscribe = store.dev_subscribe_state(callback); + const unsubscribe = devSubscribeStore?.(callback); callback(); return unsubscribe; }, [store]); diff --git a/src/utils/useGotoAtomsSnapshot.ts b/src/utils/useGotoAtomsSnapshot.ts index 51241ace..08f10891 100644 --- a/src/utils/useGotoAtomsSnapshot.ts +++ b/src/utils/useGotoAtomsSnapshot.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; import { useStore } from 'jotai/react'; -import type { AtomsSnapshot, Options } from './types'; +import type { AtomsSnapshot, Options } from '../types'; export function useGotoAtomsSnapshot(options?: Options) { const store = useStore(options); diff --git a/tsconfig.build.json b/tsconfig.build.json index 068bf80d..b6ec541e 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -12,8 +12,8 @@ "typeRoots": ["./node_modules/@types", "./types/*"], "sourceMap": true, "forceConsistentCasingInFileNames": true, - "isolatedModules": true, "exactOptionalPropertyTypes": true, + "isolatedModules": true, "baseUrl": ".", "paths": { "jotai-devtools": ["./src"], diff --git a/tsconfig.json b/tsconfig.json index 09ef1e40..854725fd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,16 @@ { "extends": "./tsconfig.build.json", + "compilerOptions": { + "skipLibCheck": true + }, "include": [ "src/**/*", "./jest.config.ts", "__tests__/**/*", "types", - "tsup.config.ts" + "tsup.config.ts", + "jest", + "@testing-library/jest-dom" ], "exclude": ["node_modules", "dist"] } diff --git a/tsup.config.ts b/tsup.config.ts index 12e75752..f010dfb6 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -9,6 +9,8 @@ const defaultOutExtension: Options['outExtension'] = ({ format }) => { const defaultEsBuildPlugins: Options['esbuildPlugins'] = [ replace({ + // FIXME - Should filter it by `include` instead of `exclude`. This doesn't seem to be working /^.*\.js$/, + exclude: /\.woff2$/, __DEV__: '(process.env.NODE_ENV!=="production")', }), ]; @@ -19,6 +21,9 @@ const baseConfig: Options = { index: 'src/index.ts', utils: 'src/utils/index.ts', }, + loader: { + '.woff2': 'dataurl', + }, sourcemap: false, // Clean output directory before each build clean: true, @@ -26,10 +31,13 @@ const baseConfig: Options = { splitting: true, tsconfig: './tsconfig.build.json', dts: true, - external: ['jotai', 'React'], + external: ['jotai', 'react', 'react-dom'], platform: 'node', outExtension: defaultOutExtension, esbuildPlugins: defaultEsBuildPlugins, + // // TSUP does not appear to be respecting tsconfig's jsx property + // // See - https://github.com/egoist/tsup/issues/792 + inject: ['./react-shim.js'], }; const cjsConfig: Options = { @@ -45,6 +53,8 @@ const mjsOutExtension: Options['outExtension'] = ({ format }) => { const mjsEsBuildPlugins: Options['esbuildPlugins'] = [ replace({ + // FIXME - Should filter it by `include` instead of `exclude`. This doesn't seem to be working /^.*\.js$/, + exclude: /\.woff2$/, __DEV__: '((import.meta.env&&import.meta.env.MODE)!=="production")', }), ]; diff --git a/types/global.d.ts b/types/global.d.ts index bae64da2..3b86e147 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -2,3 +2,9 @@ // Do not rename this file or move these types into index.d.ts // @see https://code.visualstudio.com/docs/nodejs/working-with-javascript#_global-variables-and-type-checking declare let __DEV__: boolean; + +declare module '*.png'; +declare module '*.svg'; +declare module '*.jpeg'; +declare module '*.jpg'; +declare module '*.woff2'; diff --git a/yarn.lock b/yarn.lock index 320e58f1..23cff07e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.1.0.tgz#417fef4a143f4396ad0b3b4351fee21323f15aa8" + integrity sha512-mMVJ/j/GbZ/De4ZHWbQAQO1J6iVnjtZLc9WEdkUQb8S/Bu2cAF2bETXUgMAdvMG3/ngtKmcNBe+Zms9bg6jnQQ== + "@ampproject/remapping@^2.1.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" @@ -10,19 +15,26 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": +"@aw-web-design/x-default-browser@1.4.88": + version "1.4.88" + resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.88.tgz#33d869cb2a537cd6d2a8369d4dc8ea4988d4be89" + integrity sha512-AkEmF0wcwYC2QkhK703Y83fxWARttIWXDmQN8+cof8FmFZ5BRhnNXGymeb1S73bOCLfWjYELxtujL56idCN/XA== + dependencies: + default-browser-id "3.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.20.5": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": version "7.20.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== -"@babel/core@^7.11.6", "@babel/core@^7.12.3": +"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.12", "@babel/core@^7.20.2", "@babel/core@^7.7.5": version "7.20.12" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== @@ -43,6 +55,15 @@ json5 "^2.2.2" semver "^6.3.0" +"@babel/generator@^7.12.11": + version "7.20.14" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== + dependencies: + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/generator@^7.20.7", "@babel/generator@^7.7.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" @@ -52,7 +73,22 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.20.7": +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== @@ -63,12 +99,53 @@ lru-cache "^5.1.1" semver "^6.3.0" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.12", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.2.1" + +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-function-name@^7.19.0": +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== @@ -83,14 +160,21 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-member-expression-to-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== + dependencies: + "@babel/types" "^7.20.7" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.20.11": +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== @@ -104,11 +188,40 @@ "@babel/traverse" "^7.20.10" "@babel/types" "^7.20.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + "@babel/helper-simple-access@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" @@ -116,6 +229,13 @@ dependencies: "@babel/types" "^7.20.2" +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" @@ -138,6 +258,16 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + "@babel/helpers@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce" @@ -161,6 +291,161 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== +"@babel/parser@^7.13.16": + version "7.20.15" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" + integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== + +"@babel/parser@^7.20.13": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088" + integrity sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7" + integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -175,13 +460,48 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -196,14 +516,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -217,7 +537,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -245,20 +565,468 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a" + integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-classes@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073" + integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" + +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f" + integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.19.0": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz#f950f0b0c36377503d29a712f16287cedf886cbb" + integrity sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.20.7" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz#e3581b356b8694f6ff450211fe6774eaff8d25ab" + integrity sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.20.12" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" + +"@babel/preset-flow@^7.13.13", "@babel/preset-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-flow-strip-types" "^7.18.6" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/register@^7.13.16": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/runtime@^7.12.5", "@babel/runtime@^7.20.7", "@babel/runtime@^7.9.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" @@ -275,6 +1043,22 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/traverse@^7.1.6", "@babel/traverse@^7.20.5": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.13" + "@babel/types" "^7.20.7" + debug "^4.1.0" + globals "^11.1.0" + "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7", "@babel/traverse@^7.7.2": version "7.20.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" @@ -291,7 +1075,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== @@ -300,11 +1084,21 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@base2/pretty-print-object@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@commitlint/cli@^17.4.0": version "17.4.0" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.4.0.tgz#14a5f9b713a5b60ff1a0cfce66b0bb207954c1ad" @@ -472,15 +1266,448 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@esbuild/android-arm@0.15.18": - version "0.15.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80" - integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw== +"@discoveryjs/json-ext@^0.5.3": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@emotion/babel-plugin@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" + integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.1.3" + +"@emotion/cache@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.1" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + stylis "4.1.3" + +"@emotion/css-prettifier@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/css-prettifier/-/css-prettifier-1.1.1.tgz#87f3104c057a55674ff464f9c4fdf7326847f0ea" + integrity sha512-dtiZLNN3dWP0mo/+VTPkzNrjp1wL6VRHOOSMn3XpQM4D/7xOVHEIQR6lT5Yj5Omun1REog5NFZ+5hxj+LtTIyQ== + dependencies: + "@emotion/memoize" "^0.8.0" + stylis "4.1.3" + +"@emotion/hash@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" + integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== + +"@emotion/jest@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/jest/-/jest-11.10.5.tgz#6aea1aec38e1c59e675702fa877644a6b1c18d05" + integrity sha512-LagosxybgisPlxfBGas9kGcNB5xTTX125WbjEVZiE3MEbb+dI4UYn0XIzrsilR8nUaQ5lH6yKUFrMmz7kB34vg== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/css-prettifier" "^1.1.1" + chalk "^4.1.0" + specificity "^0.4.1" + stylis "4.1.3" + +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + +"@emotion/react@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" + integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== + dependencies: + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== + +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== -"@esbuild/linux-loong64@0.15.18": - version "0.15.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239" - integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ== +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== + +"@esbuild/android-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" + integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== + +"@esbuild/android-arm64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.10.tgz#ad2ee47dd021035abdfb0c38848ff77a1e1918c4" + integrity sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g== + +"@esbuild/android-arm64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.9.tgz#d7d7231918e962475a8d538efb281a2ab95302bc" + integrity sha512-bqds/6lXsCA7JhHGKIM/R80sy3BAIBR0HWyeas0bW57QVHT3Rz5sf4oUVS4ZsmN+J+8IgNnaIT2PXZ0pnRcLKg== + +"@esbuild/android-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" + integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== + +"@esbuild/android-arm@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.10.tgz#bb5a68af8adeb94b30eadee7307404dc5237d076" + integrity sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw== + +"@esbuild/android-arm@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.9.tgz#7c2e3899715e190ace63291adc005ee8726d3ad9" + integrity sha512-efHnZVJldh2e18fK40RYzYTTRDzZ0QgL9V/73PSsAH43BauvjVwkqSHPhbcn77H0EQOUM2JPuO/XCg7jcKt94A== + +"@esbuild/android-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" + integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== + +"@esbuild/android-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.10.tgz#751d5d8ae9ece1efa9627b689c888eb85b102360" + integrity sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA== + +"@esbuild/android-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.9.tgz#9c4994df308a4f0ef753d5933871213d974d2e42" + integrity sha512-pP+MLR/k8BAYZuOqEkjAaQd9/pzbNS52pNFiXgdiCHb/16u6o7s0rPF8vPlVg+1s8ii+M6HrymL4534xYwCQCA== + +"@esbuild/darwin-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" + integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== + +"@esbuild/darwin-arm64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.10.tgz#85601ee7efb2129cd3218d5bcbe8da1173bc1e8b" + integrity sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg== + +"@esbuild/darwin-arm64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.9.tgz#7bebec932d1ac73048d804f223b46c9744eac548" + integrity sha512-Gdbnu/RCIGHE/zqLHZwujTXnHz0lBQxK9+llrbxm5tO46CMhqiOhUuA5Zt6q2imULNoPJtxmhspHSAQtcx2pkw== + +"@esbuild/darwin-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" + integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== + +"@esbuild/darwin-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.10.tgz#362c7e988c61fe72d5edef4f717e4b4fc728da98" + integrity sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ== + +"@esbuild/darwin-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.9.tgz#c0d2c3b951b186fcdd851de08be2649c9e545331" + integrity sha512-GEZsUsDjJnCTVWuaq1cJ1Y3oV9GmNj/h4j6jA29VYSip7S7nSSiAo4dQFBJg734QKZZFos8fHc4abJpoN2ebGw== + +"@esbuild/freebsd-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" + integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== + +"@esbuild/freebsd-arm64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.10.tgz#e8a85a46ede7c3a048a12f16b9d551d25adc8bb1" + integrity sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ== + +"@esbuild/freebsd-arm64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.9.tgz#b357eda2c38b17bb9f3d217a063caae51caeb637" + integrity sha512-l3v6bZdpZIG4RpNKObqNqJhDvqQO5JqQlU2S+KyMCbf0xQhYCbTuhu5kKY8hndM1oKhmqq6VfPWhOSf6P3XT/g== + +"@esbuild/freebsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" + integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== + +"@esbuild/freebsd-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.10.tgz#cd0a1b68bffbcb5b65e65b3fd542e8c7c3edd86b" + integrity sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg== + +"@esbuild/freebsd-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.9.tgz#1d2889efe8e7a824d15175081c7992f7ae8be925" + integrity sha512-o/qhS0gbIdS0AjgiT0mbdiRIyNVRD31N81c1H7NNM4p6jVkSvScqo0v9eYJ+30mPhJsL26BwSNiuFJzD/SCyuw== + +"@esbuild/linux-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" + integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== + +"@esbuild/linux-arm64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.10.tgz#13b183f432512ed9d9281cc89476caeebe9e9123" + integrity sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA== + +"@esbuild/linux-arm64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.9.tgz#838dae7c417ea76195eff90a31da78fe1b4dd43c" + integrity sha512-o3bvDJn9txfMxrCVJATbL3NeksMT9MGqSN7vTeG9g+387rDzfUiWpF5CN/L0MoI3QTicTydEDOx0PVX8/q+nCA== + +"@esbuild/linux-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" + integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== + +"@esbuild/linux-arm@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.10.tgz#dd11e0a5faa3ea94dc80278a601c3be7b4fdf1da" + integrity sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA== + +"@esbuild/linux-arm@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.9.tgz#a3a1b074a08dd9ee85b76e0ff2a8dafaf87a884b" + integrity sha512-AhSVW1uIbcXssQ1D+Mn0txGgcxU32ikvIxuqkmjLC7dUpcX0JuwkPgdqTOicuBjG06GV4WvXSHcKCBUjN+oBxA== + +"@esbuild/linux-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" + integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== + +"@esbuild/linux-ia32@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.10.tgz#4d836f87b92807d9292379963c4888270d282405" + integrity sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw== + +"@esbuild/linux-ia32@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.9.tgz#b6cf70ea799a16318fa492fcd996748f65c9b0c6" + integrity sha512-fh3Eb+jMHDJUd08vEYL8swRT7zJo4lhrcG8NYuosHVeT49XQ0Bn9xLMtgtYXjCw5aB11aphAUwnzawvDqJCqTQ== + +"@esbuild/linux-loong64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" + integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== + +"@esbuild/linux-loong64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.10.tgz#92eb2ee200c17ef12c7fb3b648231948699e7a4c" + integrity sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA== + +"@esbuild/linux-loong64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.9.tgz#5c6968022ba45b8a182889260165631959616c3c" + integrity sha512-+DvqOzQLkXonfQTHo4PTlbiTCfz0Rx6oYn3fQrUlPX2PffGOth4HjuP4jHeFbw0YFfOErhjM6n481nB4VTmmFQ== + +"@esbuild/linux-mips64el@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" + integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== + +"@esbuild/linux-mips64el@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.10.tgz#14f7d50c40fe7f7ee545a9bd07c6f6e4cba5570e" + integrity sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg== + +"@esbuild/linux-mips64el@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.9.tgz#e12f789e606b6bd239c69a56c50869b1c73bc7cb" + integrity sha512-9O0HhtxRzx9OOqavv7kIONncJXxhzrbDFmOD+cJ/3UUsy8dn52J6X2xCeUOxbmEOXYP2K+uha7b1AXG/URhF5Q== + +"@esbuild/linux-ppc64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" + integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== + +"@esbuild/linux-ppc64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.10.tgz#1ab5802e93ae511ce9783e1cb95f37df0f84c4af" + integrity sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ== + +"@esbuild/linux-ppc64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.9.tgz#95ed6f6e86b55086225356adea68f1132f0de745" + integrity sha512-tOwSTDZ0X5rcYK3OyfJVf4fFlvYLv3HGCOJxdE9gZVeRkXXd6O9CJ/A4Li1Tt9JQs9kJcFWCXxCwhY70h+t9iw== + +"@esbuild/linux-riscv64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" + integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== + +"@esbuild/linux-riscv64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.10.tgz#4fae25201ef7ad868731d16c8b50b0e386c4774a" + integrity sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ== + +"@esbuild/linux-riscv64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.9.tgz#152280429f9eb04bea9896c6855a3ac917f2035c" + integrity sha512-mmirCaZItLSPw7loFPHvdDXO0A2I+cYOQ96eerbWEjqi9V4u+vvYSoUR3Or7HLe1JUZS+T0YWN+jPUASc1hqzg== + +"@esbuild/linux-s390x@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" + integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== + +"@esbuild/linux-s390x@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.10.tgz#126254d8335bb3586918b1ca60beb4abb46e6d54" + integrity sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg== + +"@esbuild/linux-s390x@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.9.tgz#4b64f84e7fad4b42dd4cb95ec8c8525c7f2c8447" + integrity sha512-zuL5TDhxstsvxYVZ1McsnfNrO6vlpZmxiNShJmYuYPt8COBJ/4iRkwHZ5Rbf1OkEVazB3/WASNtopv1/Gq19IQ== + +"@esbuild/linux-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" + integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== + +"@esbuild/linux-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.10.tgz#7fa4667b2df81ea0538e1b75e607cf04e526ce91" + integrity sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg== + +"@esbuild/linux-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.9.tgz#0ec61046dab79be9f08df37a10b9966fd1d940b5" + integrity sha512-jVa5NKqwBmq57aNDZOSnNuRTV5GrI93HdjTlyQyRrOs7OSEQq2r9NyaGd6KmzuxLz19XTanFt4WeGoLnjFT1Ug== + +"@esbuild/netbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" + integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== + +"@esbuild/netbsd-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.10.tgz#2d24727ddc2305619685bf237a46d6087a02ee9a" + integrity sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA== + +"@esbuild/netbsd-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.9.tgz#50b1fc5a6e0d13c8ff2b29a154cd7770194489d9" + integrity sha512-BRoQyPJ7aiQ7USFCtGmmrYTbRDa9muZAwoYchfqspd+ef8n2kKcXGQ0K2OqcLEqNFOwhLpAY4y4YAl22FbP+BA== + +"@esbuild/openbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" + integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== + +"@esbuild/openbsd-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.10.tgz#bf3fc38ee6ecf028c1f0cfe11f61d53cc75fef12" + integrity sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig== + +"@esbuild/openbsd-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.9.tgz#2fd6643f99810091320b583dea0245e3b0cdc64e" + integrity sha512-gDCVw9M2k8tyA9GokQEeh+L2gl0EZeGIIj5WB5H97Mb0ADq5Ea8vWyQs2iY1Q/tebcuP8cUoOZWxkCsmlyl1NA== + +"@esbuild/sunos-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" + integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== + +"@esbuild/sunos-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.10.tgz#8deabd6dfec6256f80bb101bc59d29dbae99c69b" + integrity sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg== + +"@esbuild/sunos-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.9.tgz#fa0e4b67b6213423c7a57f2d4ecec19c6f4c3012" + integrity sha512-f89/xt0Hzp7POTDJYSJvotyFXatxXBGXJyFFTQGJW+NTYhFHaMcrrb41OB3L8sfzYi3PSlM3pZnwlEk1QiBX2g== + +"@esbuild/win32-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" + integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== + +"@esbuild/win32-arm64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.10.tgz#1ec1ee04c788c4c57a83370b6abf79587b3e4965" + integrity sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg== + +"@esbuild/win32-arm64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.9.tgz#85d396aa986f5671f151df5aea1d54fb7626979d" + integrity sha512-jrU/SBHXc3NPS5mPgYeL8pgIrBTwdrnaoLtygkQtuPzz0oBjsTyxV46tZoOctv4Q1Jq06+4zsJWkTzVaoik8FQ== + +"@esbuild/win32-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" + integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== + +"@esbuild/win32-ia32@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.10.tgz#a362528d7f3ad5d44fa8710a96764677ef92ebe9" + integrity sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ== + +"@esbuild/win32-ia32@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.9.tgz#1de54043d30ff2ada4f6316e1ce8ad097a02ec42" + integrity sha512-/oVEu7DurNFM0E6qA18R8xkbYU6xilaTnqG65rqm4XJo8ONuqTzLnj/93bQps7RJIxPI+yKPl0Zx2KifvWUa5A== + +"@esbuild/win32-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" + integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== + +"@esbuild/win32-x64@0.17.10": + version "0.17.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.10.tgz#ac779220f2da96afd480fb3f3148a292f66e7fc3" + integrity sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw== + +"@esbuild/win32-x64@0.17.9": + version "0.17.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.9.tgz#3d928444d650010b55a601f5fb225ff20487ca44" + integrity sha512-PLKuXKwlPljFrzzsUO6hHNWcYeE4a8FOX/6AJ7U7PajgKqtBGw2mGYxsfJHGb+UdfgdOapIOsYPgzMTG+SGDrg== "@eslint/eslintrc@^1.4.1": version "1.4.1" @@ -497,6 +1724,39 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@fal-works/esbuild-plugin-global-externals@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" + integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== + +"@floating-ui/core@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.1.1.tgz#cf8b4cdd8987c687329a6099561764d8a16f2f22" + integrity sha512-PL7g3dhA4dHgZfujkuD8Q+tfJJynEtnNQSPzmucCnxMvkxf4cLBJw/ZYqZUn4HCh33U3WHrAfv2R2tbi9UCSmw== + +"@floating-ui/dom@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.1.1.tgz#66aa747e15894910869bf9144fc54fc7d6e9f975" + integrity sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw== + dependencies: + "@floating-ui/core" "^1.1.0" + +"@floating-ui/react-dom@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-1.2.2.tgz#ed256992fd44fcfcddc96da68b4b92f123d61871" + integrity sha512-DbmFBLwFrZhtXgCI2ra7wXYT8L2BN4/4AMQKyu05qzsVji51tXOfF36VE2gpMB6nhJGHa85PdEg75FB4+vnLFQ== + dependencies: + "@floating-ui/dom" "^1.1.1" + +"@floating-ui/react@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.19.1.tgz#bcaeaf3856dfeea388816f7e66750cab26208376" + integrity sha512-h7hr53rLp+VVvWvbu0dOBvGsLeeZwn1DTLIllIaLYjGWw20YhAgEqegHU+nc7BJ30ttxq4Sq6hqARm0ne6chXQ== + dependencies: + "@floating-ui/react-dom" "^1.2.2" + aria-hidden "^1.1.3" + tabbable "^6.0.1" + "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" @@ -537,7 +1797,7 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== @@ -760,7 +2020,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -779,6 +2039,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -792,7 +2060,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -800,6 +2068,56 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@juggle/resize-observer@^3.3.1": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" + integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== + +"@mantine/core@^5.10.3": + version "5.10.3" + resolved "https://registry.yarnpkg.com/@mantine/core/-/core-5.10.3.tgz#9c7c0dbfada6b6ccbf9d51315d1926bad8578393" + integrity sha512-kBb8l085vg+MjAVxEDyI/koT/l2hXTBVdg6pkSJlFlMtUlhBGkp8fzqaaUiJ7C1oU//NnHAogPymHw0tjpPBgA== + dependencies: + "@floating-ui/react" "^0.19.1" + "@mantine/styles" "5.10.3" + "@mantine/utils" "5.10.3" + "@radix-ui/react-scroll-area" "1.0.2" + react-textarea-autosize "8.3.4" + +"@mantine/hooks@^5.10.3": + version "5.10.3" + resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-5.10.3.tgz#1a80a53d8f4e2ddf7da7b0912dcec6a51b55c1ae" + integrity sha512-fFDXF0A596z10QKeWAGtTZJ4QotsMxhhbjfWWRHMogY/hXHQ2S+7+GFotpF2JbzefYztpawHEJevy3eYF8cQmQ== + +"@mantine/prism@^5.10.3": + version "5.10.3" + resolved "https://registry.yarnpkg.com/@mantine/prism/-/prism-5.10.3.tgz#61aad3458aaca1f54921d6976507a037a2cead21" + integrity sha512-PvsxpFsaMHZXbjZpxSanhFZHPCvZEzLzSqHAOe537YfFUF4qHoZUAq+JTIQQ1VFfunTkvo9GURbuDPLUyKY/WA== + dependencies: + "@mantine/utils" "5.10.3" + prism-react-renderer "^1.2.1" + +"@mantine/styles@5.10.3": + version "5.10.3" + resolved "https://registry.yarnpkg.com/@mantine/styles/-/styles-5.10.3.tgz#dd073ceaf787fbefe73cc9a1e4168c2c8160809e" + integrity sha512-OpKY207BgkJd59wSNuNaZILAUbNh1b87iY5bZOVm9u49X5cOo/n4nrkaUMw2FCZIKi6psyobtW7XYCuoldrI4w== + dependencies: + clsx "1.1.1" + csstype "3.0.9" + +"@mantine/utils@5.10.3": + version "5.10.3" + resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-5.10.3.tgz#724e5076812bffdb15a23859f23b9e78c1774239" + integrity sha512-ZfR1wouA/rz3xTOb2wBnrQpIiyjLcCLLvbUo7rzaG3LhFy7UoGjZ6uqIW9qDrzs7SR4tETRfMxedYagjcoCiEg== + +"@mdx-js/react@^2.1.5": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.2.1.tgz#5a70592418d52b1b01538c37e795034601c96ec5" + integrity sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw== + dependencies: + "@types/mdx" "^2.0.0" + "@types/react" ">=16" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -934,6 +2252,21 @@ tiny-glob "^0.2.9" tslib "^2.4.0" +"@pmmmwh/react-refresh-webpack-plugin@^0.5.5": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" + integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" + source-map "^0.7.3" + "@pnpm/network.ca-file@^1.0.1": version "1.0.2" resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" @@ -949,6 +2282,96 @@ "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" +"@radix-ui/number@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.0.tgz#4c536161d0de750b3f5d55860fc3de46264f897b" + integrity sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/primitive@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" + integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-compose-refs@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" + integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-context@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" + integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-direction@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" + integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-presence@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" + integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@radix-ui/react-primitive@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" + integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.1" + +"@radix-ui/react-scroll-area@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz#26c906d351b56835c0301126b24574c9e9c7b93b" + integrity sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/number" "1.0.0" + "@radix-ui/primitive" "1.0.0" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-context" "1.0.0" + "@radix-ui/react-direction" "1.0.0" + "@radix-ui/react-presence" "1.0.0" + "@radix-ui/react-primitive" "1.0.1" + "@radix-ui/react-use-callback-ref" "1.0.0" + "@radix-ui/react-use-layout-effect" "1.0.0" + +"@radix-ui/react-slot@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" + integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + +"@radix-ui/react-use-callback-ref@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" + integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-layout-effect@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" + integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@redux-devtools/extension@^3.2.3": version "3.2.4" resolved "https://registry.yarnpkg.com/@redux-devtools/extension/-/extension-3.2.4.tgz#24fd4a98cec2cb805373accb33afa7854476b636" @@ -972,24 +2395,856 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== -"@sindresorhus/is@^5.2.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" - integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== +"@sindresorhus/is@^5.2.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" + integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== + +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@storybook/addon-a11y@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-7.0.0-beta.43.tgz#7dc90699881f2e092da031e8628b104ab0706898" + integrity sha512-+xb5mMOMPDaSKsrfISGkZGe/zsYtctOKq9wam+hGhxFpTu3qcmgG0i5Ysz67ujuCtpa18sGrgTkilDs33SC5RA== + dependencies: + "@storybook/addon-highlight" "7.0.0-beta.43" + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + axe-core "^4.2.0" + lodash "^4.17.21" + react-resize-detector "^7.1.2" + +"@storybook/addon-actions@7.0.0-beta.43", "@storybook/addon-actions@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.0-beta.43.tgz#cbbd1f11a0e1a553f59948a990d9f36ed79be7ea" + integrity sha512-cl3Vx1oyH8qASpzF3vUFsmk91v2E4D7bOJc3VR1TrCaXuPBVPO43ed0B2uUPHRU6SeMXD7uqJh+jQbyRSXBZbg== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + dequal "^2.0.2" + lodash "^4.17.21" + polished "^4.2.2" + prop-types "^15.7.2" + react-inspector "^6.0.0" + telejson "^7.0.3" + ts-dedent "^2.0.0" + uuid-browser "^3.1.0" + +"@storybook/addon-backgrounds@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-beta.43.tgz#96d3bce37ea0b2f79e6c17cc810d5dea7023dd3e" + integrity sha512-qo1C4ik1uMQ04jgpox3C5K5Sj+Li4tCgj96bFt4wAYma+qXcbzv52v7W1JBrFsrZCtgc9PObKgmKca3OgISLUA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + memoizerific "^1.11.3" + ts-dedent "^2.0.0" + +"@storybook/addon-controls@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.0.0-beta.43.tgz#988e0891c0b69bd84482864e21d4bdf9c24b2089" + integrity sha512-Q2/ecV/V6upIE+C4hLCRjd3PJsCnkm7uNk/aSpHsHRKBGjUtBX/+l6sZH6v3byt7V/T+YLAq7xfx1YD+fYwBLg== + dependencies: + "@storybook/blocks" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + lodash "^4.17.21" + ts-dedent "^2.0.0" + +"@storybook/addon-docs@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.0.0-beta.43.tgz#f7f9bf50fab71f219ef98a635b5d867340f9aae8" + integrity sha512-EBCGpaI8gSdpNRLfOqfV7C5VFxl6HROgvHG00XdUnAVJVTuJX0H6SNur2BBRK+74BuAQHXOOeFjmvGJtiGhbAg== + dependencies: + "@babel/core" "^7.20.2" + "@babel/plugin-transform-react-jsx" "^7.19.0" + "@jest/transform" "^29.3.1" + "@mdx-js/react" "^2.1.5" + "@storybook/blocks" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/csf-plugin" "7.0.0-beta.43" + "@storybook/csf-tools" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/mdx2-csf" next + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/postinstall" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + fs-extra "^11.1.0" + remark-external-links "^8.0.0" + remark-slug "^6.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-essentials@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.0.0-beta.43.tgz#48ff1c6aff93ae3c4c52e05d38b84703a33c64dd" + integrity sha512-67H7m+REcKVAh/eR30EIvMzA78ShSDAKyQp9qHDH2wmjULbO4fXa9lkxufKX3vmhLVS7dZM++VlBdZNykL3n1Q== + dependencies: + "@storybook/addon-actions" "7.0.0-beta.43" + "@storybook/addon-backgrounds" "7.0.0-beta.43" + "@storybook/addon-controls" "7.0.0-beta.43" + "@storybook/addon-docs" "7.0.0-beta.43" + "@storybook/addon-highlight" "7.0.0-beta.43" + "@storybook/addon-measure" "7.0.0-beta.43" + "@storybook/addon-outline" "7.0.0-beta.43" + "@storybook/addon-toolbars" "7.0.0-beta.43" + "@storybook/addon-viewport" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + ts-dedent "^2.0.0" + +"@storybook/addon-highlight@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.0.0-beta.43.tgz#3b0bcbfed3f44a40498edadf71115aadf919d586" + integrity sha512-XMFTqqJbDDPU3E9TAihMKJQTTV5q7yAUjWHkTlUJyG8sefgl8zyaPZ4yd7INN+ZznbtThySzz10gPR921ny0Zg== + dependencies: + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0-beta.43" + +"@storybook/addon-interactions@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-7.0.0-beta.43.tgz#ca52f9622b5fe3e734e68c40f0d6ed1ce9d36a04" + integrity sha512-/RJd6qSG+UM0Op1cywN9ZcAlCOd0CLWijoFHED07Me2RLM5LSqcSxzi+3o78qxnoXmf+mRGiBF92S8DYi1IzvQ== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/instrumenter" "7.0.0-beta.43" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + jest-mock "^27.0.6" + polished "^4.2.2" + ts-dedent "^2.2.0" + +"@storybook/addon-links@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.0.0-beta.43.tgz#331ef9374077a1b3fba29c3f693c29eb6b7fe71d" + integrity sha512-uzLE4dDBW13DYXnqpELCXnY4/bPah/3/Q081mi7bnLaHf5Z6y1DoVA6WaxSJjmTTCe8+51hlmcXsLp1cVorlNQ== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/router" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + prop-types "^15.7.2" + ts-dedent "^2.0.0" + +"@storybook/addon-measure@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.0.0-beta.43.tgz#cd14337207a9f7368bdaf5b10381d570327d45d0" + integrity sha512-IK+kTOWTbzLtnIlqxG9CzKK/EB8+DJjHBV3aLsaRCCN6+x+CP+uoNplCJcrBEW5zJ5l1BBun1Fb5Mf3RCP5BqA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + +"@storybook/addon-outline@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.0.0-beta.43.tgz#8aad90076104e2422ccc8d917b69706a0d84c765" + integrity sha512-Q8r/AqvI+m900jTjgatODHvPE+MC+/vTaz324r8xjBiNgQzrS+gp8dV8zlNqz/8YtvV4hN6qJNkFsxJCmZQytA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + ts-dedent "^2.0.0" + +"@storybook/addon-toolbars@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-beta.43.tgz#aca5542216f9df1b2d5c2d4ac16ca5bdeb059093" + integrity sha512-j5v6xuva4oezIDUu/EDlgqT++atMv8XftPMNq8CmvPMeUxI4iIu8cEnGJ7xeRedgGg/zIdSN1ttNG77E2I87bg== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + +"@storybook/addon-viewport@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.0.0-beta.43.tgz#897a464367db795cbe5ec9e3b06cc633d6e6a303" + integrity sha512-XhiS3o6M4DTkPfetad+HqSw1wZzs+69YY3WWChuQ5px3NsJ8Lp77ew0wYfQwRf8WdrhnUtx1GRKEnU0XW4dHDw== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + memoizerific "^1.11.3" + prop-types "^15.7.2" + +"@storybook/addons@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-7.0.0-beta.43.tgz#3a8250a5530b35f2d1dce6c3e89a7e6f23bcf147" + integrity sha512-6AcQuSIhEnou/Pf/Vel2MzTFupBdiK1AYTsWDgMdwv9bxZkkkXqPlfaTmi7+wSzh6UxU5lkh4FJbKlIv5Fm6Kg== + dependencies: + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + +"@storybook/api@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-7.0.0-beta.43.tgz#a5f2a4f8e6a5acc90f86951ef100220eb78729c4" + integrity sha512-vo6mEFy2d4mJxQyGd0H0xbrRqbKGFdEWEPV52nykTI/MFhUS2gXvXDCMtf9nhTioWRAQ4a272yO0UGmUgKEwpA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/manager-api" "7.0.0-beta.43" + +"@storybook/blocks@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.0.0-beta.43.tgz#66010980ddc16e916db015ab938e7501c9e507cc" + integrity sha512-9HlD3dP3zZea1RGKLRBTL9OlygH5HLaekMEMRj8mtP1yM1ZAFpGN1Yz/TiRDjljOd7iKmBRtbY1t4vYn9tyJJg== + dependencies: + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/csf" next + "@storybook/docs-tools" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/lodash" "^4.14.167" + color-convert "^2.0.1" + dequal "^2.0.2" + lodash "^4.17.21" + markdown-to-jsx "^7.1.8" + memoizerific "^1.11.3" + polished "^4.2.2" + react-colorful "^5.1.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/builder-manager@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.0.0-beta.43.tgz#f43f89049a979732a26957c01d4e2ce9d5bafe10" + integrity sha512-gsQYDgrf9Z+Y3lMKv7/ENbua/uqJHLaPa3fI+dIiGOD9aRWyZYf85YYV4P8jQICipYVmjQgzPl8XFm4M1h0zSQ== + dependencies: + "@fal-works/esbuild-plugin-global-externals" "^2.1.2" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/manager" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@types/ejs" "^3.1.1" + "@types/find-cache-dir" "^3.2.1" + "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" + browser-assert "^1.2.1" + ejs "^3.1.8" + esbuild "^0.16.4" + esbuild-plugin-alias "^0.2.1" + express "^4.17.3" + find-cache-dir "^3.0.0" + fs-extra "^11.1.0" + process "^0.11.10" + slash "^3.0.0" + util "^0.12.4" + +"@storybook/builder-webpack5@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.0.0-beta.43.tgz#f8ca39de1dd1132197f2e969add412c1250ad4d5" + integrity sha512-chGSSVsy7TzZ2nbxSKEQtvwtABbwjkr/artgN883rZ5S399XOiaYc5Jli/LlnphCCVTJTpg22BAbjNopPl6I4g== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/addons" "7.0.0-beta.43" + "@storybook/api" "7.0.0-beta.43" + "@storybook/channel-postmessage" "7.0.0-beta.43" + "@storybook/channel-websocket" "7.0.0-beta.43" + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-api" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/components" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/core-webpack" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/preview" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/router" "7.0.0-beta.43" + "@storybook/store" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@types/node" "^16.0.0" + "@types/semver" "^7.3.4" + babel-loader "^9.0.0" + babel-plugin-named-exports-order "^0.0.2" + browser-assert "^1.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.7.1" + express "^4.17.3" + fork-ts-checker-webpack-plugin "^7.2.8" + fs-extra "^11.1.0" + html-webpack-plugin "^5.5.0" + path-browserify "^1.0.1" + process "^0.11.10" + semver "^7.3.7" + slash "^3.0.0" + style-loader "^3.3.1" + terser-webpack-plugin "^5.3.1" + ts-dedent "^2.0.0" + util "^0.12.4" + util-deprecate "^1.0.2" + webpack "5" + webpack-dev-middleware "^5.3.1" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.4.3" + +"@storybook/channel-postmessage@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-beta.43.tgz#64cb5a3e80cce72fc435ab2d4d0c587f3ec70558" + integrity sha512-zBb5Rhr6uSRRVP1x8JxGqgXooYO/oZnj8OQJFAZKRX0v+N6Vbt/50WFW1q6VMbHwlSs38tTqnBvxvv5UEm1unQ== + dependencies: + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + qs "^6.10.0" + telejson "^7.0.3" + +"@storybook/channel-websocket@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-7.0.0-beta.43.tgz#9660e5624702bb9485bc218330b5815a012e74e1" + integrity sha512-n5avyOxh1jDIAxXkwl4CJ0yn6WeJtS9HUu9vPhdCaHN3VQDn32FqUh7Se4gls3rlwJKRfKbjY0OxmqcNTB1nbA== + dependencies: + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + telejson "^7.0.3" + +"@storybook/channels@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.0-beta.43.tgz#37d54f7e1d3694a4febd0479f7cd25507d37758c" + integrity sha512-fofNqgO9PwTBscYl2vE1j5a8cUi0IB+zMd6s1yec29c9A+y9pzHE5u9ncmM1PuM5VZ1ienQSBb0NKBvLmTm+jw== + +"@storybook/cli@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.0.0-beta.43.tgz#408df746ef4ae16eea8c903392916adf0016ae21" + integrity sha512-V6CBhKDQWGSCvZEvqIeOhXB3qwUmFszYhPVjsKLRCyZQA4p43f382MWgN2Z7YNpsm2lzc8KhaKVpdjZU1tVaLg== + dependencies: + "@babel/core" "^7.20.2" + "@babel/preset-env" "^7.20.2" + "@storybook/codemod" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/core-server" "7.0.0-beta.43" + "@storybook/csf-tools" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/telemetry" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/semver" "^7.3.4" + boxen "^5.1.2" + chalk "^4.1.0" + commander "^6.2.1" + cross-spawn "^7.0.3" + detect-indent "^6.1.0" + envinfo "^7.7.3" + execa "^5.0.0" + express "^4.17.3" + find-up "^5.0.0" + fs-extra "^11.1.0" + get-port "^5.1.1" + giget "^1.0.0" + globby "^11.0.2" + jscodeshift "^0.14.0" + leven "^3.1.0" + prompts "^2.4.0" + puppeteer-core "^2.1.1" + read-pkg-up "^7.0.1" + semver "^7.3.7" + shelljs "^0.8.5" + simple-update-notifier "^1.0.0" + strip-json-comments "^3.0.1" + tempy "^1.0.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/client-api@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-7.0.0-beta.43.tgz#eb033dba301a945114351c4b7b367f3c55175595" + integrity sha512-qyBUeQvlkI4QSGKxPLwFmyc8yPmDyIEsEXRW/8HWYydt5T53RMOah/NSIc/qib4yV85N3FUj+/DMG6aEfaCMHA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + +"@storybook/client-logger@7.0.0-beta.43", "@storybook/client-logger@next": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.0-beta.43.tgz#fd12ce4f3f19d44d7a0a26428490565338f53a6d" + integrity sha512-UxYT1hCewi1x/cyX0yEz70gCMvEa8D/ST2vojLDlb7lKfrMIPfiVsSuTztTNMH8whrEuQd/Yt5PASWJZCg5kCQ== + dependencies: + "@storybook/global" "^5.0.0" + +"@storybook/codemod@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.0-beta.43.tgz#022890878f4ddee124737ee310e2e7c60425dba3" + integrity sha512-pMjcObaH6kur3MED9h2Pz3I9KK/q5zLjHcK1zQMtvnEw8LrJykD2HwWy1dWZwkLqEYRCPL7GnowAnxiMTUc69w== + dependencies: + "@babel/core" "^7.20.2" + "@babel/preset-env" "^7.20.2" + "@babel/types" "^7.20.7" + "@storybook/csf" next + "@storybook/csf-tools" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + cross-spawn "^7.0.3" + globby "^11.0.2" + jscodeshift "^0.14.0" + lodash "^4.17.21" + prettier "^2.8.0" + recast "^0.23.1" + util "^0.12.4" + +"@storybook/components@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.0-beta.43.tgz#109fe7a3e88ed6d5ffdce74a70d4ed9447a53fad" + integrity sha512-jZWwCUvJFSubm+D/HWBDCACCp5ezMcvNM1EMLML1YVON+8QAbHpD2LzJK9nh4iHN8dy8cvT81ucfP+Gtm1kGqA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + memoizerific "^1.11.3" + use-resize-observer "^9.1.0" + util-deprecate "^1.0.2" + +"@storybook/core-client@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.0.0-beta.43.tgz#8cae89b24a85e659e27120788249872655ad4c03" + integrity sha512-9dkJldN7zm0JfXllSxuKPxwKRNF0o+Vc03km9hSP1Ka8ItVNEwM/DqPpfLHssZADmyBJuVmWuUj15vYPNRUg3g== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + +"@storybook/core-common@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.0.0-beta.43.tgz#ee254c7349ca52462e282d79ad224cab5623d5fb" + integrity sha512-6kNUHgK8h2N8yI4eLMupuXNH8XWxddkd3vl8FDxptSSqgi4HVuyiY8BsraCK9gUYE+fN6bk5p1LaYOSHL9CYlw== + dependencies: + "@babel/core" "^7.20.2" + "@storybook/csf-tools" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/babel__core" "^7.1.20" + "@types/express" "^4.7.0" + "@types/node" "^16.0.0" + "@types/pretty-hrtime" "^1.0.0" + chalk "^4.1.0" + esbuild "^0.16.4" + esbuild-register "^3.3.3" + express "^4.17.3" + file-system-cache "^2.0.0" + find-up "^5.0.0" + fs-extra "^11.1.0" + glob "^8.1.0" + glob-promise "^4.2.0" + handlebars "^4.7.7" + lazy-universal-dotenv "^4.0.0" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + slash "^3.0.0" + ts-dedent "^2.0.0" + +"@storybook/core-events@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.0-beta.43.tgz#9164a23c1cfd27f7e3dc75befcf32e9337d2a7f8" + integrity sha512-byuHDRhU1pugrz3wDcemOT4FtXh4MC3eUJxrXcx4hizxJ4AaZqlyVLAaiyrkT+JKv4RBUt5WcJ1SNskY2MAbOw== + +"@storybook/core-server@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.0.0-beta.43.tgz#d15026cd03e0f1e1f48ffc3ff52344c3575251a9" + integrity sha512-99QNW6qbHdHO1KF1tz3/GJyIMMr0AK97IWQBWHsSWxDi0kX4oiR54flEZv6iaFs6GsCNN5U+ksOYqrsK37Zb3A== + dependencies: + "@aw-web-design/x-default-browser" "1.4.88" + "@discoveryjs/json-ext" "^0.5.3" + "@storybook/builder-manager" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/csf" next + "@storybook/csf-tools" "7.0.0-beta.43" + "@storybook/docs-mdx" next + "@storybook/global" "^5.0.0" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/telemetry" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/detect-port" "^1.3.0" + "@types/node" "^16.0.0" + "@types/node-fetch" "^2.5.7" + "@types/pretty-hrtime" "^1.0.0" + "@types/semver" "^7.3.4" + better-opn "^2.1.1" + boxen "^5.1.2" + chalk "^4.1.0" + cli-table3 "^0.6.1" + compression "^1.7.4" + detect-port "^1.3.0" + express "^4.17.3" + fs-extra "^11.1.0" + globby "^11.0.2" + ip "^2.0.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + open "^8.4.0" + pretty-hrtime "^1.0.3" + prompts "^2.4.0" + read-pkg-up "^7.0.1" + semver "^7.3.7" + serve-favicon "^2.5.0" + slash "^3.0.0" + telejson "^7.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + watchpack "^2.2.0" + ws "^8.2.3" + +"@storybook/core-webpack@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-7.0.0-beta.43.tgz#66999d1da36eaf2df7920d56cfab186a57dcf24b" + integrity sha512-A7jEHQhF6GC8J5olML8H3/YQfzta46IGwhDZitdQ3/lmMtZGDPByIF7RLw8ZY6HO0+a6073zjIAecT3/w2kdbA== + dependencies: + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/node" "^16.0.0" + ts-dedent "^2.0.0" + +"@storybook/csf-plugin@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.0.0-beta.43.tgz#b0aea83a53c5b74db487b4e4b279cc532297540b" + integrity sha512-plrZZP0sJ+qYaygDNuv130xVoRUC3mlbl4rsx+EHR9B2XZ0CRFg32DSXW/0k9uE5g449WACzSkbmLIVvT4RR+Q== + dependencies: + "@storybook/csf-tools" "7.0.0-beta.43" + unplugin "^0.10.2" + +"@storybook/csf-tools@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.0.0-beta.43.tgz#d6831d4f92bfd2fb8f9e54b07d10f0e7df868f75" + integrity sha512-/KbLRdE36FwbpRB0HYE5BHbDbGKnkVhTqgHvVO9E+NgIGX811EOp1GVeyhrSl+oj7m73MQIqR1al0OcMd4IE8A== + dependencies: + "@babel/types" "^7.20.2" + "@storybook/csf" next + "@storybook/types" "7.0.0-beta.43" + fs-extra "^11.1.0" + recast "^0.23.1" + ts-dedent "^2.0.0" + +"@storybook/csf@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" + integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== + dependencies: + lodash "^4.17.15" + +"@storybook/csf@next": + version "0.0.2-next.8" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2-next.8.tgz#e1033032368177c0eefb4c79898641a77e5fd21d" + integrity sha512-3T6rflW7D9q1iXOR+bidwoNbd9rVUTyjYH/sqsnYjbXhb/aOXsQzGKwNeq9QqZIFVpKfg5BoOF5i7DCMtoGknQ== + dependencies: + expect-type "^0.14.2" + lodash "^4.17.15" + type-fest "^2.19.0" + +"@storybook/docs-mdx@next": + version "0.0.1-next.6" + resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.0.1-next.6.tgz#8fa2d0e30e7487101e7e286e593323b1ce750699" + integrity sha512-DjoSIXADmLJtdroXAjUotFiZlcZ2usWhqrS7aeOtZs0DVR0Ws5WQjnwtpDUXt8gryTSd+OZJ0cNsDcqg4JDEvQ== + +"@storybook/docs-tools@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.0.0-beta.43.tgz#d5516f7f1501f730f4aa3d662577835fdbe8bd22" + integrity sha512-v7hjvqP+dkxW9cTUZgBQMMoNOFBL40GULckIlBs0RqqXjYpj/AmBEZGFlICH1FiaIrm++oR7PvBJJ2tscK3VWQ== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/core-common" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/doctrine" "^0.0.3" + doctrine "^3.0.0" + lodash "^4.17.21" + +"@storybook/global@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" + integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== + +"@storybook/instrumenter@7.0.0-beta.43", "@storybook/instrumenter@next": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.0-beta.43.tgz#3938a3c71a41253f782e196112d53c03b3582e8e" + integrity sha512-z9+XroBxWLbL0yZmq34HpRjf+zsoETK56+gScBQzIgOr0ZinshAyoCQbLGueiN8dyxjcFQSLMIZjjPj2pIZ7wA== + dependencies: + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0-beta.43" + +"@storybook/manager-api@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.0-beta.43.tgz#edba40dbcb343c77d555bc5a62adfab7c62b0233" + integrity sha512-e3ST+lZdmeokT4GVTrrM02XQ4lHeiiwNg2HRjlStdtsL/3+qOqi/0YicLB5ZBcL8sqTkYT7b0V04vQY5k+sCng== + dependencies: + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/router" "7.0.0-beta.43" + "@storybook/theming" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + semver "^7.3.7" + store2 "^2.14.2" + telejson "^7.0.3" + ts-dedent "^2.0.0" + +"@storybook/manager@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.0.0-beta.43.tgz#d46d6cc9795ac64c3c24f02ec4ebb193eca896d8" + integrity sha512-4UG1bDB04Kn9gMqslIa7Ao7/814zNwvEZmiuAHjeDZ37gpkhi3CcjZqU5Xy/COb436XiXsbWYRGeg0pcHc8b+A== + +"@storybook/mdx2-csf@next": + version "1.0.0-next.5" + resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.0.0-next.5.tgz#b43b403b3a0b2ebdb3603bf6d20d7319b407e199" + integrity sha512-02w0sgGZaK1agT050yCVhJ+o4rLHANWvLKWjQjeAsYbjneLC5ITt+3GDB4jRiWwJboZ8dHW1fGSK1Vg5fA34aQ== + +"@storybook/node-logger@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.0.0-beta.43.tgz#0c76e7f38b0d13aa0805bd05661b50f31a7e14d5" + integrity sha512-/DYIT/EUYSOFwUQErGVSO7yVtcB5s/us8/bNMeps+EzbLLNZHaFnuvNml8I8c6Ghb4A6Jc+uJmz7df6qqh6cWw== + dependencies: + "@types/npmlog" "^4.1.2" + chalk "^4.1.0" + npmlog "^5.0.1" + pretty-hrtime "^1.0.3" + +"@storybook/postinstall@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.0.0-beta.43.tgz#9e4ed73aa832f82ec4beb628a91948d475a51497" + integrity sha512-wyfwhw6uUazZsxKsmquXM9uL61IhUVV6/Bmz2NQOPcNcQbKXPwWTU5CIFlYP+/Xx5eK1Mx+iqmGXqQzuCi+QPw== + +"@storybook/preset-react-webpack@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-7.0.0-beta.43.tgz#d2eb6ecdfaef1dbc7a50b412d7286d100f4dfb4f" + integrity sha512-pyrhWffv+G+LdixKzRCseZs/Nbg7RitEW1ViM1OJePMqYNQbDkWRM+cKI+K6xbPaf/bSzYMceVz9xTQ13ezKUA== + dependencies: + "@babel/preset-flow" "^7.18.6" + "@babel/preset-react" "^7.18.6" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.5" + "@storybook/core-webpack" "7.0.0-beta.43" + "@storybook/docs-tools" "7.0.0-beta.43" + "@storybook/node-logger" "7.0.0-beta.43" + "@storybook/react" "7.0.0-beta.43" + "@storybook/react-docgen-typescript-plugin" "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + "@types/node" "^16.0.0" + "@types/semver" "^7.3.4" + babel-plugin-add-react-displayname "^0.0.5" + babel-plugin-react-docgen "^4.2.1" + fs-extra "^11.1.0" + react-refresh "^0.11.0" + semver "^7.3.7" + +"@storybook/preview-api@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.0-beta.43.tgz#b8b405d8d473a0c908d2bbfd9c8764ce7cc3dfed" + integrity sha512-HlYYbVl8WYkmeSYYta3hgWiteGycvbpSb7/7InjNTplertD9G7GJUwG5DUdddBBd3q4eYLvAwrrsNgPogIOESA== + dependencies: + "@storybook/channel-postmessage" "7.0.0-beta.43" + "@storybook/channels" "7.0.0-beta.43" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-events" "7.0.0-beta.43" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/types" "7.0.0-beta.43" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + slash "^3.0.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== - dependencies: - type-detect "4.0.8" +"@storybook/preview@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.0.0-beta.43.tgz#9c6ceb40f5caadc4859614868b5ef80d01922926" + integrity sha512-JQlHPdNf4RTFb4+kD7uT2Toi0qSaEfJKSAHxOmNzaYIULueHYy8hTA3V5phPb1XSuKbD/+LedCrMsl9l4WAQlA== -"@sinonjs/fake-timers@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" - integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== +"@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": + version "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + resolved "https://registry.yarnpkg.com/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz#3103532ff494fb7dc3cf835f10740ecf6a26c0f9" + integrity sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w== dependencies: - "@sinonjs/commons" "^1.7.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.1.1" + tslib "^2.0.0" + +"@storybook/react-webpack5@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-7.0.0-beta.43.tgz#bdf832fb8b064a7437bbfac7551b21e4f8110a0f" + integrity sha512-1CPVRbB5ZVMmKerCztlGma30Xqf4oaiDBz8U7nC8WjU2p23amzYarbjHECMF0seE3h1VXK0ALWzUGxnM/dthBQ== + dependencies: + "@storybook/builder-webpack5" "7.0.0-beta.43" + "@storybook/preset-react-webpack" "7.0.0-beta.43" + "@storybook/react" "7.0.0-beta.43" + "@types/node" "^16.0.0" + +"@storybook/react@7.0.0-beta.43", "@storybook/react@^7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.0.0-beta.43.tgz#41086e28d88b6a703aa84c3a53e6d00a31eb1695" + integrity sha512-IrtOCLLf+ZS3Rtci9Ce8WnqftTJmZ3GR9DludrclmY1vI8Vj8ejmM5M44qI76SDX5EeVsvWcrQzJGqvuWj1Swg== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-client" "7.0.0-beta.43" + "@storybook/docs-tools" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0-beta.43" + "@storybook/types" "7.0.0-beta.43" + "@types/escodegen" "^0.0.6" + "@types/estree" "^0.0.51" + "@types/node" "^16.0.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + escodegen "^2.0.0" + html-tags "^3.1.0" + lodash "^4.17.21" + prop-types "^15.7.2" + react-element-to-jsx-string "^15.0.0" + ts-dedent "^2.0.0" + type-fest "^2.19.0" + util-deprecate "^1.0.2" + +"@storybook/router@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.0-beta.43.tgz#8233981b5a9f28873bb85eaafda4c33bcbe122bd" + integrity sha512-yvZ0Gx8rqVjmdRa2DqfZsEL2kqn/yqYNzUqzAj3yaTxoEznn/LqZaWGBBiBUrT3A53n6AQH6nFACiZ4bu81E/A== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + memoizerific "^1.11.3" + qs "^6.10.0" + +"@storybook/store@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/store/-/store-7.0.0-beta.43.tgz#c45cc09e48387b27a76eaf5c7afbbb22625c061f" + integrity sha512-rQDdFx3kRniGIcObeInbQ8jqklq+LGVJ3nwfWv04fdkVWBGzabzv3DLW6dnvG9Zb8pSBy0Sm9m382Da141V9eA== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/preview-api" "7.0.0-beta.43" + +"@storybook/telemetry@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.0-beta.43.tgz#99ef1cd72c737f1314cad5f685dd64ee8ea4a932" + integrity sha512-OoMUd49u1eO351Kuoyf8QzD9Uhkqay7KoBtLZSs8nc40uZWmx1Ho/9EQnI71ETpaHjYf1SPSBD/PL0fmMBtGCQ== + dependencies: + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/core-common" "7.0.0-beta.43" + chalk "^4.1.0" + detect-package-manager "^2.0.1" + fetch-retry "^5.0.2" + fs-extra "^11.1.0" + isomorphic-unfetch "^3.1.0" + nanoid "^3.3.1" + read-pkg-up "^7.0.1" + +"@storybook/testing-library@^0.0.14-next.1": + version "0.0.14-next.1" + resolved "https://registry.yarnpkg.com/@storybook/testing-library/-/testing-library-0.0.14-next.1.tgz#c8e93aea7b2a4caba4f4b60b2195e4de589f8a3c" + integrity sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw== + dependencies: + "@storybook/client-logger" next + "@storybook/instrumenter" next + "@testing-library/dom" "^8.3.0" + "@testing-library/user-event" "^13.2.1" + ts-dedent "^2.2.0" + +"@storybook/theming@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.0-beta.43.tgz#4c483364870c1bc31c0399682e72408749eebca4" + integrity sha512-+oZRoVn88vZs4/gLv6SRrz90JRtCf0PYZ+t2Dnlhp+HEBu9daiaKQxJNAcDsdnZv4n6nRtBU07QZPVWqgmJEaw== + dependencies: + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@storybook/client-logger" "7.0.0-beta.43" + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + +"@storybook/types@7.0.0-beta.43": + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.0-beta.43.tgz#6ad52e4bff5b0fd014c086c0861a0466be6fb4bd" + integrity sha512-6YJ5EvVfQ/WrQBGX3y5KQx8JRR8vHCSqpIlVwnL7vutbe1ZJZpYjAbdH5bApoiG35Prgfq3oM9RavDnDlln7Fw== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/channels" "7.0.0-beta.43" + "@types/babel__core" "^7.0.0" + "@types/express" "^4.7.0" + express "^4.17.3" + file-system-cache "^2.0.0" "@swc/core-darwin-arm64@1.3.25": version "1.3.25" @@ -1072,6 +3327,30 @@ dependencies: defer-to-connect "^2.0.1" +"@tabler/icons@^1.119.0": + version "1.119.0" + resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-1.119.0.tgz#8c590bc5a563c8673a78ccd451bedabd584b376e" + integrity sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g== + +"@tanstack/query-core@^4.24.10": + version "4.24.10" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.24.10.tgz#758e1f5b2d7faf7316d299facd272a9f64c26299" + integrity sha512-2QywqXEAGBIUoTdgn1lAB4/C8QEqwXHj2jrCLeYTk2xVGtLiPEUD8jcMoeB2noclbiW2mMt4+Fq7fZStuz3wAQ== + +"@testing-library/dom@^8.3.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" + integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + "@testing-library/dom@^8.5.0": version "8.19.1" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.1.tgz#0e2dafd281dedb930bb235eac1045470b4129d0e" @@ -1086,6 +3365,21 @@ lz-string "^1.4.4" pretty-format "^27.0.2" +"@testing-library/jest-dom@^5.16.5": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== + dependencies: + "@adobe/css-tools" "^4.0.1" + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + "@testing-library/react@^13.4.0": version "13.4.0" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" @@ -1095,6 +3389,18 @@ "@testing-library/dom" "^8.5.0" "@types/react-dom" "^18.0.0" +"@testing-library/user-event@^13.2.1": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@testing-library/user-event@^14.4.3": + version "14.4.3" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591" + integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q== + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -1130,6 +3436,17 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.20": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__core@^7.1.14": version "7.1.20" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" @@ -1163,6 +3480,99 @@ dependencies: "@babel/types" "^7.3.0" +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/detect-port@^1.3.0": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.2.tgz#8c06a975e472803b931ee73740aeebd0a2eb27ae" + integrity sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g== + +"@types/doctrine@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" + integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== + +"@types/ejs@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.1.tgz#29c539826376a65e7f7d672d51301f37ed718f6d" + integrity sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA== + +"@types/escodegen@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" + integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== + +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.7.0": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/find-cache-dir@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" + integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== + +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -1170,6 +3580,11 @@ dependencies: "@types/node" "*" +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + "@types/http-cache-semantics@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" @@ -1194,6 +3609,14 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@*": + version "29.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206" + integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@types/jest@^29.2.5": version "29.2.5" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.5.tgz#c27f41a9d6253f288d1910d3c5f09484a56b73c0" @@ -1211,7 +3634,7 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -1221,31 +3644,94 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/lodash@^4.14.167": + version "4.14.191" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + +"@types/mdx@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" + integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ== + +"@types/mime-types@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" + integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "@types/minimist@^1.2.0": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/node-fetch@^2.5.7": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*", "@types/node@^18.11.18": version "18.11.18" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@^16.0.0": + version "16.18.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.12.tgz#e3bfea80e31523fde4292a6118f19ffa24fd6f65" + integrity sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/npmlog@^4.1.2": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" + integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prettier@^2.1.5": version "2.7.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== +"@types/pretty-hrtime@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" + integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== + "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== +"@types/qs@*", "@types/qs@^6.9.5": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "@types/react-dom@^18.0.0", "@types/react-dom@^18.0.10": version "18.0.10" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" @@ -1262,26 +3748,55 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@>=16": + version "18.0.27" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.27.tgz#d9425abe187a00f8a5ec182b010d4fd9da703b71" + integrity sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -"@types/semver@^7.3.12": +"@types/semver@^7.3.12", "@types/semver@^7.3.4": version "7.3.13" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== + dependencies: + "@types/mime" "*" + "@types/node" "*" + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.5" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" + integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== + dependencies: + "@types/jest" "*" + "@types/tough-cookie@*": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== +"@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -1334,6 +3849,14 @@ "@typescript-eslint/types" "5.48.0" "@typescript-eslint/visitor-keys" "5.48.0" +"@typescript-eslint/scope-manager@5.48.2": + version "5.48.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz#bb7676cb78f1e94921eaab637a4b5d596f838abc" + integrity sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw== + dependencies: + "@typescript-eslint/types" "5.48.2" + "@typescript-eslint/visitor-keys" "5.48.2" + "@typescript-eslint/type-utils@5.48.0": version "5.48.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz#40496dccfdc2daa14a565f8be80ad1ae3882d6d6" @@ -1349,6 +3872,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.0.tgz#d725da8dfcff320aab2ac6f65c97b0df30058449" integrity sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw== +"@typescript-eslint/types@5.48.2": + version "5.48.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.2.tgz#635706abb1ec164137f92148f06f794438c97b8e" + integrity sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA== + "@typescript-eslint/typescript-estree@5.48.0": version "5.48.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz#a7f04bccb001003405bb5452d43953a382c2fac2" @@ -1362,6 +3890,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.48.2": + version "5.48.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz#6e206b462942b32383582a6c9251c05021cc21b0" + integrity sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg== + dependencies: + "@typescript-eslint/types" "5.48.2" + "@typescript-eslint/visitor-keys" "5.48.2" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.48.0", "@typescript-eslint/utils@^5.10.0": version "5.48.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.0.tgz#eee926af2733f7156ad8d15e51791e42ce300273" @@ -1376,6 +3917,20 @@ eslint-utils "^3.0.0" semver "^7.3.7" +"@typescript-eslint/utils@^5.45.0": + version "5.48.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.2.tgz#3777a91dcb22b8499a25519e06eef2e9569295a3" + integrity sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.48.2" + "@typescript-eslint/types" "5.48.2" + "@typescript-eslint/typescript-estree" "5.48.2" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" + "@typescript-eslint/visitor-keys@5.48.0": version "5.48.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz#4446d5e7f6cadde7140390c0e284c8702d944904" @@ -1384,6 +3939,152 @@ "@typescript-eslint/types" "5.48.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.48.2": + version "5.48.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz#c247582a0bcce467461d7b696513bf9455000060" + integrity sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ== + dependencies: + "@typescript-eslint/types" "5.48.2" + eslint-visitor-keys "^3.3.0" + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": + version "3.0.0-rc.15" + resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" + integrity sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA== + dependencies: + tslib "^2.4.0" + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -1397,6 +4098,14 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + acorn-globals@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" @@ -1405,17 +4114,32 @@ acorn-globals@^7.0.0: acorn "^8.1.0" acorn-walk "^8.0.2" -acorn-jsx@^5.3.2: +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.0, acorn@^8.8.0, acorn@^8.8.1: +acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.1.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.1: version "8.8.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== @@ -1425,6 +4149,16 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1440,7 +4174,26 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1450,7 +4203,7 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.11.0: +ajv@^8.0.0, ajv@^8.11.0, ajv@^8.8.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -1460,7 +4213,7 @@ ajv@^8.11.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-align@^3.0.1: +ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== @@ -1481,6 +4234,11 @@ ansi-escapes@^6.0.0: dependencies: type-fest "^3.0.0" +ansi-html-community@0.0.8, ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1528,6 +4286,24 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" + integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -1545,6 +4321,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.1.3: + version "1.2.2" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.2.tgz#8c4f7cc88d73ca42114106fdf6f47e68d31475b8" + integrity sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA== + dependencies: + tslib "^2.0.0" + aria-query@^5.0.0: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -1552,6 +4335,11 @@ aria-query@^5.0.0: dependencies: deep-equal "^2.0.5" +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" @@ -1620,6 +4408,30 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== +as-table@^1.0.36: + version "1.0.55" + resolved "https://registry.yarnpkg.com/as-table/-/as-table-1.0.55.tgz#dc984da3937745de902cea1d45843c01bdbbec4f" + integrity sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ== + dependencies: + printable-characters "^1.0.42" + +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + ast-types@^0.13.2: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -1627,11 +4439,30 @@ ast-types@^0.13.2: dependencies: tslib "^2.0.1" +ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + async-retry@1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -1639,6 +4470,11 @@ async-retry@1.3.3: dependencies: retry "0.13.1" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1649,6 +4485,16 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +axe-core@^4.2.0: + version "4.6.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" + integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + babel-jest@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" @@ -1662,6 +4508,29 @@ babel-jest@^29.3.1: graceful-fs "^4.2.9" slash "^3.0.0" +babel-loader@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-loader@^9.0.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c" + integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA== + dependencies: + find-cache-dir "^3.3.2" + schema-utils "^4.0.0" + +babel-plugin-add-react-displayname@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" + integrity sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw== + babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -1683,6 +4552,53 @@ babel-plugin-jest-hoist@^29.2.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-exports-order@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" + integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +babel-plugin-react-docgen@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" + integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== + dependencies: + ast-types "^0.14.2" + lodash "^4.17.15" + react-docgen "^5.0.0" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -1724,6 +4640,23 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== +better-opn@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== + dependencies: + open "^7.0.3" + +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -1738,6 +4671,43 @@ bl@^5.0.0: inherits "^2.0.4" readable-stream "^3.4.0" +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + boxen@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.0.1.tgz#cd84db4364a8bae65f1f016ce94a21ec2c832c16" @@ -1752,6 +4722,13 @@ boxen@^7.0.0: widest-line "^4.0.1" wrap-ansi "^8.0.1" +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1760,6 +4737,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1767,7 +4751,12 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.3: +browser-assert@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" + integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== + +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -1784,6 +4773,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -1797,18 +4791,41 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -bundle-require@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-3.1.2.tgz#1374a7bdcb8b330a7ccc862ccbf7c137cc43ad27" - integrity sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA== +bundle-require@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.1.tgz#2cc1ad76428043d15e0e7f30990ee3d5404aa2e3" + integrity sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ== dependencies: - load-tsconfig "^0.2.0" + load-tsconfig "^0.2.3" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +c8@^7.6.0: + version "7.12.0" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.12.0.tgz#402db1c1af4af5249153535d1c84ad70c5c96b14" + integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.3" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" + test-exclude "^6.0.0" + v8-to-istanbul "^9.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.9" + cac@^6.7.12: version "6.7.14" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" @@ -1845,6 +4862,14 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -1874,6 +4899,11 @@ caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz#40337f1cf3be7c637b061e2f78582dc1daec0614" integrity sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow== +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + chalk@5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.1.2.tgz#d957f370038b75ac572471e83be4c5ca9f8e8c45" @@ -1888,7 +4918,15 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1916,7 +4954,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.5.1: +chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1931,6 +4969,16 @@ chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.2" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + ci-info@^3.2.0: version "3.7.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f" @@ -1941,11 +4989,23 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== +clean-css@^5.2.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-boxes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" @@ -1970,6 +5030,15 @@ cli-spinners@^2.6.1: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== +cli-table3@^0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -2009,11 +5078,25 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +clsx@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2048,7 +5131,12 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.19: +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^2.0.10, colorette@^2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== @@ -2060,16 +5148,41 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + commander@^9.4.1: version "9.4.1" resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -2078,11 +5191,41 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -2112,6 +5255,23 @@ configstore@^6.0.0: write-file-atomic "^3.0.3" xdg-basedir "^5.0.1" +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12: version "5.0.13" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" @@ -2279,7 +5439,7 @@ conventional-recommended-bump@^6.1.0: meow "^8.0.0" q "^1.5.1" -convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -2289,6 +5449,35 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copy-anything@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.3.tgz#206767156f08da0e02efd392f71abcdf79643559" + integrity sha512-fpW2W/BqEzqPp29QS+MwwfisHCQZtiduTe/m8idFo0xbti9fIZ2WVhAsCv4ggFVH3AgCkVdpoOCtQC6gBrdhjw== + dependencies: + is-what "^4.1.8" + +core-js-compat@^3.25.1: + version "3.27.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.27.2.tgz#607c50ad6db8fd8326af0b2883ebb987be3786da" + integrity sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg== + dependencies: + browserslist "^4.21.4" + +core-js-pure@^3.23.3: + version "3.27.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.27.2.tgz#47e9cc96c639eefc910da03c3ece26c5067c7553" + integrity sha512-Cf2jqAbXgWH3VVzjyaaFkY1EBazxugUepGymDoeteyYr9ByX51kD2jdHZlsEF/xnJMyN3Prua7mQuzwMg6Zc9A== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -2309,12 +5498,23 @@ cosmiconfig@8.0.0, cosmiconfig@^8.0.0: parse-json "^5.0.0" path-type "^4.0.0" +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2323,6 +5523,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + crypto-random-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" @@ -2330,6 +5535,46 @@ crypto-random-string@^4.0.0: dependencies: type-fest "^1.0.1" +css-loader@^6.7.1: + version "6.7.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" + integrity sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.19" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.8" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + cssom@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" @@ -2347,6 +5592,11 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +csstype@3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" + integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== + csstype@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" @@ -2362,6 +5612,11 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz#d296973d5a4897a5dbe31716d118211921f04770" + integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA== + data-uri-to-buffer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" @@ -2381,6 +5636,13 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +debug@2.6.9, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -2388,13 +5650,6 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -2470,6 +5725,14 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-browser-id@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + defaults@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -2495,6 +5758,11 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +defu@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" + integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== + degenerator@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" @@ -2505,11 +5773,30 @@ degenerator@^3.0.2: esprima "^4.0.0" vm2 "^3.9.8" +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -2520,11 +5807,41 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== + dependencies: + execa "^5.1.1" + +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + diff-sequences@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" @@ -2556,11 +5873,37 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-accessibility-api@^0.5.6: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + dom-accessibility-api@^0.5.9: version "0.5.15" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.15.tgz#357e74338704f36fada8b2e01a4bfc11ef436ac9" integrity sha512-8o+oVqLQZoruQPYy3uAAQtc6YbtSiRq5aPJBhJ82YTJRHvI6ofhYAkC81WmjFTnfUbqg6T3aCglIpU9p/5e7Cw== +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + domexception@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" @@ -2568,6 +5911,30 @@ domexception@^4.0.0: dependencies: webidl-conversions "^7.0.0" +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -2582,11 +5949,33 @@ dot-prop@^6.0.1: dependencies: is-obj "^2.0.0" +dotenv-expand@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + +dotenv@^16.0.0: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + electron-to-chromium@^1.4.251: version "1.4.284" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" @@ -2607,6 +5996,25 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +endent@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" + integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.5" + enhanced-resolve@^5.10.0: version "5.12.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" @@ -2615,11 +6023,21 @@ enhanced-resolve@^5.10.0: graceful-fs "^4.2.4" tapable "^2.2.0" +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + entities@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2627,6 +6045,13 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + es-abstract@^1.19.0, es-abstract@^1.20.4: version "1.21.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.0.tgz#dd1b69ea5bfc3c27199c9753efd4de015102c252" @@ -2699,6 +6124,11 @@ es-get-iterator@^1.1.2: is-string "^1.0.5" isarray "^2.0.5" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es-set-tostringtag@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -2724,85 +6154,15 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5" - integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA== - -esbuild-android-arm64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04" - integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ== - -esbuild-darwin-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410" - integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg== - -esbuild-darwin-arm64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337" - integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA== - -esbuild-freebsd-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2" - integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA== - -esbuild-freebsd-arm64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635" - integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA== - -esbuild-linux-32@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce" - integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg== - -esbuild-linux-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c" - integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw== - -esbuild-linux-arm64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d" - integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug== - -esbuild-linux-arm@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc" - integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA== - -esbuild-linux-mips64le@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb" - integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ== - -esbuild-linux-ppc64le@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507" - integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w== - -esbuild-linux-riscv64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6" - integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg== - -esbuild-linux-s390x@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb" - integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ== - -esbuild-netbsd-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998" - integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg== - -esbuild-openbsd-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8" - integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ== +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== + +esbuild-plugin-alias@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" + integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== esbuild-plugin-replace@^1.3.0: version "1.3.0" @@ -2811,53 +6171,96 @@ esbuild-plugin-replace@^1.3.0: dependencies: magic-string "^0.25.7" -esbuild-sunos-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971" - integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw== - -esbuild-windows-32@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3" - integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ== - -esbuild-windows-64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0" - integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw== - -esbuild-windows-arm64@0.15.18: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7" - integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ== - -esbuild@^0.15.1: - version "0.15.18" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d" - integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q== +esbuild-register@^3.3.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" + integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== + dependencies: + debug "^4.3.4" + +esbuild@^0.16.4: + version "0.16.17" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" + integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== + optionalDependencies: + "@esbuild/android-arm" "0.16.17" + "@esbuild/android-arm64" "0.16.17" + "@esbuild/android-x64" "0.16.17" + "@esbuild/darwin-arm64" "0.16.17" + "@esbuild/darwin-x64" "0.16.17" + "@esbuild/freebsd-arm64" "0.16.17" + "@esbuild/freebsd-x64" "0.16.17" + "@esbuild/linux-arm" "0.16.17" + "@esbuild/linux-arm64" "0.16.17" + "@esbuild/linux-ia32" "0.16.17" + "@esbuild/linux-loong64" "0.16.17" + "@esbuild/linux-mips64el" "0.16.17" + "@esbuild/linux-ppc64" "0.16.17" + "@esbuild/linux-riscv64" "0.16.17" + "@esbuild/linux-s390x" "0.16.17" + "@esbuild/linux-x64" "0.16.17" + "@esbuild/netbsd-x64" "0.16.17" + "@esbuild/openbsd-x64" "0.16.17" + "@esbuild/sunos-x64" "0.16.17" + "@esbuild/win32-arm64" "0.16.17" + "@esbuild/win32-ia32" "0.16.17" + "@esbuild/win32-x64" "0.16.17" + +esbuild@^0.17.10: + version "0.17.10" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.10.tgz#3be050561b34c5dc05b46978f4e1f326d5cc9437" + integrity sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A== + optionalDependencies: + "@esbuild/android-arm" "0.17.10" + "@esbuild/android-arm64" "0.17.10" + "@esbuild/android-x64" "0.17.10" + "@esbuild/darwin-arm64" "0.17.10" + "@esbuild/darwin-x64" "0.17.10" + "@esbuild/freebsd-arm64" "0.17.10" + "@esbuild/freebsd-x64" "0.17.10" + "@esbuild/linux-arm" "0.17.10" + "@esbuild/linux-arm64" "0.17.10" + "@esbuild/linux-ia32" "0.17.10" + "@esbuild/linux-loong64" "0.17.10" + "@esbuild/linux-mips64el" "0.17.10" + "@esbuild/linux-ppc64" "0.17.10" + "@esbuild/linux-riscv64" "0.17.10" + "@esbuild/linux-s390x" "0.17.10" + "@esbuild/linux-x64" "0.17.10" + "@esbuild/netbsd-x64" "0.17.10" + "@esbuild/openbsd-x64" "0.17.10" + "@esbuild/sunos-x64" "0.17.10" + "@esbuild/win32-arm64" "0.17.10" + "@esbuild/win32-ia32" "0.17.10" + "@esbuild/win32-x64" "0.17.10" + +esbuild@^0.17.6: + version "0.17.9" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.9.tgz#d4ff32649d503989e7c2623c239901f7f26b3417" + integrity sha512-m3b2MR76QkwKPw/KQBlBJVaIncfQhhXsDMCFPoyqEOIziV+O7BAKqOYT1NbHsnFUX0/98CLWxUfM5stzh4yq4Q== optionalDependencies: - "@esbuild/android-arm" "0.15.18" - "@esbuild/linux-loong64" "0.15.18" - esbuild-android-64 "0.15.18" - esbuild-android-arm64 "0.15.18" - esbuild-darwin-64 "0.15.18" - esbuild-darwin-arm64 "0.15.18" - esbuild-freebsd-64 "0.15.18" - esbuild-freebsd-arm64 "0.15.18" - esbuild-linux-32 "0.15.18" - esbuild-linux-64 "0.15.18" - esbuild-linux-arm "0.15.18" - esbuild-linux-arm64 "0.15.18" - esbuild-linux-mips64le "0.15.18" - esbuild-linux-ppc64le "0.15.18" - esbuild-linux-riscv64 "0.15.18" - esbuild-linux-s390x "0.15.18" - esbuild-netbsd-64 "0.15.18" - esbuild-openbsd-64 "0.15.18" - esbuild-sunos-64 "0.15.18" - esbuild-windows-32 "0.15.18" - esbuild-windows-64 "0.15.18" - esbuild-windows-arm64 "0.15.18" + "@esbuild/android-arm" "0.17.9" + "@esbuild/android-arm64" "0.17.9" + "@esbuild/android-x64" "0.17.9" + "@esbuild/darwin-arm64" "0.17.9" + "@esbuild/darwin-x64" "0.17.9" + "@esbuild/freebsd-arm64" "0.17.9" + "@esbuild/freebsd-x64" "0.17.9" + "@esbuild/linux-arm" "0.17.9" + "@esbuild/linux-arm64" "0.17.9" + "@esbuild/linux-ia32" "0.17.9" + "@esbuild/linux-loong64" "0.17.9" + "@esbuild/linux-mips64el" "0.17.9" + "@esbuild/linux-ppc64" "0.17.9" + "@esbuild/linux-riscv64" "0.17.9" + "@esbuild/linux-s390x" "0.17.9" + "@esbuild/linux-x64" "0.17.9" + "@esbuild/netbsd-x64" "0.17.9" + "@esbuild/openbsd-x64" "0.17.9" + "@esbuild/sunos-x64" "0.17.9" + "@esbuild/win32-arm64" "0.17.9" + "@esbuild/win32-ia32" "0.17.9" + "@esbuild/win32-x64" "0.17.9" escalade@^3.1.1: version "3.1.1" @@ -2869,6 +6272,11 @@ escape-goat@^4.0.0: resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -3010,7 +6418,17 @@ eslint-plugin-react@^7.31.11: semver "^6.3.0" string.prototype.matchall "^4.0.8" -eslint-scope@^5.1.1: +eslint-plugin-storybook@^0.6.10: + version "0.6.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.10.tgz#a5844b15bb8dd864896b0b023e710218d9d0f274" + integrity sha512-3DKXRey06EhwnTKaG6fgMqGTy4C3z6Ikyv6VVixO5BvaExWQe3yGWIAufrC2Et0OaAMIaMwx9KWjqb/Wq+JxPg== + dependencies: + "@storybook/csf" "^0.0.1" + "@typescript-eslint/utils" "^5.45.0" + requireindex "^1.1.0" + ts-dedent "^2.2.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -3097,7 +6515,7 @@ espree@^9.4.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -3126,11 +6544,30 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-to-babel@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" + integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== + dependencies: + "@babel/traverse" "^7.1.6" + "@babel/types" "^7.2.0" + c8 "^7.6.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + execa@6.1.0, execa@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" @@ -3166,6 +6603,11 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== +expect-type@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-0.14.2.tgz#3924d0e596455a9b27af48e8a99c582cdd4506eb" + integrity sha512-ed3+tr5ujbIYXZ8Pl/VgIphwJQ0q5tBLGGdn7Zvwt1WyPBRX83xjT5pT77P/GkuQbctx0K2ZNSSan7eruJqTCQ== + expect@^29.0.0, expect@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" @@ -3177,6 +6619,48 @@ expect@^29.0.0, expect@^29.3.1: jest-message-util "^29.3.1" jest-util "^29.3.1" +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -3186,6 +6670,16 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +extract-zip@^1.6.6: + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -3207,6 +6701,11 @@ fast-glob@^3.2.11, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== + fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -3231,6 +6730,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + fetch-blob@^3.1.2, fetch-blob@^3.1.4: version "3.2.0" resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" @@ -3239,6 +6745,11 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: node-domexception "^1.0.0" web-streams-polyfill "^3.0.3" +fetch-retry@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.3.tgz#edfa3641892995f9afee94f25b168827aa97fe3d" + integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw== + figures@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-5.0.0.tgz#126cd055052dea699f8a54e8c9450e6ecfc44d5f" @@ -3254,11 +6765,26 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-system-cache@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.0.2.tgz#6b51d58c5786302146fa883529e0d7f88896e948" + integrity sha512-lp4BHO4CWqvRyx88Tt3quZic9ZMf4cJyquYq7UI8sH42Bm2ArlBBjKQAalZOo+UfaBassb7X123Lik5qZ/tSAA== + dependencies: + fs-extra "^11.1.0" + ramda "^0.28.0" + file-uri-to-path@2: version "2.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -3266,6 +6792,42 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.0.0, find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -3273,6 +6835,13 @@ find-up@^2.0.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -3302,6 +6871,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flow-parser@0.*: + version "0.199.1" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.199.1.tgz#d2e37d3ccd3a4301738a429079a41320a54ada57" + integrity sha512-Mt+GFUQYij3miM7Z6o8E3aHTGXZKSOhvlCFgdQRoi6fkWfhyijnoX51zpOxM5PmZuiV6gallWhDZzwOsWxRutg== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3309,11 +6883,46 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + +fork-ts-checker-webpack-plugin@^7.2.8: + version "7.3.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.3.0.tgz#a9c984a018493962360d7c7e77a67b44a2d5f3aa" + integrity sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA== + dependencies: + "@babel/code-frame" "^7.16.7" + chalk "^4.1.2" + chokidar "^3.5.3" + cosmiconfig "^7.0.1" + deepmerge "^4.2.2" + fs-extra "^10.0.0" + memfs "^3.4.1" + minimatch "^3.0.4" + node-abort-controller "^3.0.1" + schema-utils "^3.1.1" + semver "^7.3.5" + tapable "^2.2.1" + form-data-encoder@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -3330,7 +6939,26 @@ formdata-polyfill@^4.0.10: dependencies: fetch-blob "^3.1.2" -fs-extra@^11.0.0: +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.0.0, fs-extra@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== @@ -3348,6 +6976,18 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-monkey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3386,6 +7026,21 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3420,6 +7075,19 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-source@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/get-source/-/get-source-2.0.12.tgz#0b47d57ea1e53ce0d3a69f4f3d277eb8047da944" + integrity sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w== + dependencies: + data-uri-to-buffer "^2.0.0" + source-map "^0.6.1" + get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -3450,6 +7118,19 @@ get-uri@3: fs-extra "^8.1.0" ftp "^0.3.10" +giget@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/giget/-/giget-1.0.0.tgz#fdd7e61a84996b19e00d2d4a6a65c60cc1f61c3d" + integrity sha512-KWELZn3Nxq5+0So485poHrFriK9Bn3V/x9y+wgqrHkbmnGbjfLmZ685/SVA/ovW+ewoqW0gVI47pI4yW/VNobQ== + dependencies: + colorette "^2.0.19" + defu "^6.1.1" + https-proxy-agent "^5.0.1" + mri "^1.2.0" + node-fetch-native "^1.0.1" + pathe "^1.0.0" + tar "^6.1.12" + git-raw-commits@^2.0.0, git-raw-commits@^2.0.8: version "2.0.11" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" @@ -3499,6 +7180,11 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" +github-slugger@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3513,6 +7199,18 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-promise@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -3537,6 +7235,17 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -3586,7 +7295,7 @@ globby@13.1.2: merge2 "^1.4.1" slash "^4.0.0" -globby@^11.0.3, globby@^11.1.0: +globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -3638,7 +7347,7 @@ got@12.5.3, got@^12.1.0: p-cancelable "^3.0.0" responselike "^3.0.0" -graceful-fs@4.2.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@4.2.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -3704,6 +7413,11 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + has-yarn@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" @@ -3716,6 +7430,18 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -3735,11 +7461,55 @@ html-encoding-sniffer@^3.0.0: dependencies: whatwg-encoding "^2.0.0" +html-entities@^2.1.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-tags@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== + +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -3790,6 +7560,14 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: agent-base "6" debug "4" +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -3819,6 +7597,11 @@ iconv-lite@0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -3933,7 +7716,17 @@ ip@^2.0.0: resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -is-arguments@^1.1.0, is-arguments@^1.1.1: +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-arguments@^1.0.4, is-arguments@^1.1.0, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -4028,6 +7821,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -4053,6 +7853,14 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -4080,6 +7888,11 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -4090,11 +7903,18 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-object@^5.0.0: +is-plain-object@5.0.0, is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -4158,7 +7978,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.10" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== @@ -4199,7 +8019,12 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" -is-wsl@^2.2.0: +is-what@^4.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.8.tgz#0e2a8807fda30980ddb2571c79db3d209b14cbe4" + integrity sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA== + +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -4231,6 +8056,19 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -4265,7 +8103,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.1.3: +istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: version "3.1.5" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== @@ -4286,6 +8124,16 @@ iterate-value@^1.0.2: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-changed-files@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" @@ -4476,6 +8324,14 @@ jest-message-util@^29.3.1: slash "^3.0.0" stack-utils "^2.0.3" +jest-mock@^27.0.6: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" @@ -4654,6 +8510,15 @@ jest-watcher@^29.0.0, jest-watcher@^29.3.1: jest-util "^29.3.1" string-length "^4.0.1" +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest-worker@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b" @@ -4674,10 +8539,15 @@ jest@^29.3.1: import-local "^3.0.2" jest-cli "^29.3.1" -jotai@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.0.0.tgz#3938ad0166130417811bb57ec2de8abeb24bd948" - integrity sha512-04G0CRZQgp3xrFAezd6X14psZ2TRGekHeYMBcbDJ/BR8ZJQPS+j0YkMTxUxyG58HJnN2+adfj5sWQWoqgtp1XQ== +jotai-tanstack-query@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jotai-tanstack-query/-/jotai-tanstack-query-0.5.0.tgz#d6d5e3efbd9704f4c4c5c381f8b46f635e62d062" + integrity sha512-UXfI+I+bdrYL3R1o+OrADY9diizQD8/yqi+DJswOisKGzvNJs1FUIXi9ugtWVR9cjAfRuroG6fQzJhuNyUJ70g== + +jotai@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.0.3.tgz#3b67cda9f6d5feb70a14db0b842a9873aacda8b5" + integrity sha512-MMjhSPAL3RoeZD9WbObufRT2quThEAEknHHridf2ma8Ml7ZVQmUiHk0ssdbR3F0h3kcwhYqSGJ59OjhPge7RRg== joycon@^3.0.1: version "3.1.1" @@ -4709,6 +8579,31 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + jsdom@^20.0.0: version "20.0.3" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" @@ -4746,6 +8641,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -4756,7 +8656,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -4788,7 +8688,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.2.2: +json5@^2.1.2, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -4834,7 +8734,7 @@ keyv@^4.5.2: dependencies: json-buffer "3.0.1" -kind-of@^6.0.3: +kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -4851,6 +8751,15 @@ latest-version@^7.0.0: dependencies: package-json "^8.1.0" +lazy-universal-dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" + integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== + dependencies: + app-root-dir "^1.0.2" + dotenv "^16.0.0" + dotenv-expand "^10.0.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -4925,11 +8834,25 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -load-tsconfig@^0.2.0: +load-tsconfig@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.3.tgz#08af3e7744943caab0c75f8af7f1703639c3ef1f" integrity sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ== +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -4938,6 +8861,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -4957,6 +8888,11 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.isfunction@^3.0.9: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" @@ -5012,7 +8948,7 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21: +lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5042,6 +8978,13 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lowercase-keys@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" @@ -5078,7 +9021,15 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -make-dir@^3.0.0: +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -5107,6 +9058,47 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== + +markdown-to-jsx@^7.1.8: + version "7.1.9" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.1.9.tgz#1ffae0cda07c189163d273bd57a5b8f8f8745586" + integrity sha512-x4STVIKIJR0mGgZIZ5RyAeQD7FEZd5tS8m/htbcVGlex32J+hlSLj+ExrHCxP6nRKF1EKbcO7i6WhC1GtOpBlA== + +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-to-string@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.1, memfs@^3.4.3: + version "3.4.13" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.13.tgz#248a8bd239b3c240175cd5ec548de5227fc4f345" + integrity sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg== + dependencies: + fs-monkey "^1.0.3" + +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== + dependencies: + map-or-similar "^1.5.0" + meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -5124,6 +9116,11 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -5134,7 +9131,12 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4, micromatch@^4.0.5: +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -5142,18 +9144,28 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@2.1.35, mime-types@^2.1.12: +mime-types@2.1.35, mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -5179,13 +9191,20 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -5200,22 +9219,66 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.0.tgz#7cebb0f9fa7d56f0c5b17853cbe28838a8dbbd3b" + integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.4: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== +mri@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5234,6 +9297,11 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nanoid@^3.3.1, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -5244,7 +9312,12 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.0: +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -5261,11 +9334,36 @@ new-github-release-url@2.0.0: dependencies: type-fest "^2.5.1" +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-abort-controller@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-dir@^0.1.10, node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== +node-fetch-native@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.0.1.tgz#1dfe78f57545d07e07016b7df4c0cb9d2ff416c7" + integrity sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg== + node-fetch@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.0.tgz#37e71db4ecc257057af828d523a7243d651d91e4" @@ -5275,6 +9373,13 @@ node-fetch@3.3.0: fetch-blob "^3.1.4" formdata-polyfill "^4.0.10" +node-fetch@^2.6.1: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^2.6.7: version "2.6.8" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" @@ -5336,6 +9441,23 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + nwsapi@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" @@ -5351,7 +9473,7 @@ object-inspect@^1.12.2, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -object-is@^1.1.5: +object-is@^1.0.1, object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -5409,6 +9531,23 @@ object.values@^1.1.5, object.values@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" +objectorarray@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" + integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -5439,6 +9578,14 @@ open@8.4.0, open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" +open@^7.0.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -5503,7 +9650,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -5524,6 +9671,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -5589,6 +9743,14 @@ package-json@^8.1.0: registry-url "^6.0.0" semver "^7.3.7" +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -5635,6 +9797,24 @@ parse5@^7.0.0, parse5@^7.1.1: dependencies: entities "^4.4.0" +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -5665,6 +9845,11 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -5677,12 +9862,22 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.0.tgz#e2e13f6c62b31a3289af4ba19886c230f295ec03" + integrity sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -5702,25 +9897,101 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -pirates@^4.0.1, pirates@^4.0.4: +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -pkg-dir@^4.2.0: +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + +polished@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== + dependencies: + "@babel/runtime" "^7.17.8" + postcss-load-config@^3.0.1: version "3.1.4" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.19: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" prelude-ls@^1.2.1: version "1.2.1" @@ -5739,11 +10010,24 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" +prettier@^2.8.0: + version "2.8.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.3.tgz#ab697b1d3dd46fb4626fbe2f543afe0cc98d8632" + integrity sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw== + prettier@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -5762,11 +10046,36 @@ pretty-format@^29.0.0, pretty-format@^29.3.1: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + +printable-characters@^1.0.42: + version "1.0.42" + resolved "https://registry.yarnpkg.com/printable-characters/-/printable-characters-1.0.42.tgz#3f18e977a9bd8eb37fcc4ff5659d7be90868b3d8" + integrity sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ== + +prism-react-renderer@^1.2.1: + version "1.3.5" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" + integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise.allsettled@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.6.tgz#8dc8ba8edf429feb60f8e81335b920e109c94b6e" @@ -5779,7 +10088,7 @@ promise.allsettled@1.0.6: get-intrinsic "^1.1.3" iterate-value "^1.0.2" -prompts@^2.0.1: +prompts@^2.0.1, prompts@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -5787,7 +10096,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.8.1: +prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -5806,6 +10115,14 @@ protocols@^2.0.0, protocols@^2.0.1: resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + proxy-agent@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" @@ -5842,11 +10159,34 @@ pupa@^3.1.0: dependencies: escape-goat "^4.0.0" +puppeteer-core@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-2.1.1.tgz#e9b3fbc1237b4f66e25999832229e9db3e0b90ed" + integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== + dependencies: + "@types/mime-types" "^2.1.0" + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + mime-types "^2.1.25" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" + q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== +qs@6.11.0, qs@^6.10.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -5867,7 +10207,24 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -raw-body@^2.2.0: +ramda@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" + integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1, raw-body@^2.2.0: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== @@ -5887,6 +10244,32 @@ rc@1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-colorful@^5.1.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" + integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== + +react-docgen-typescript@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" + integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== + +react-docgen@^5.0.0: + version "5.4.3" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.3.tgz#7d297f73b977d0c7611402e5fc2a168acf332b26" + integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== + dependencies: + "@babel/core" "^7.7.5" + "@babel/generator" "^7.12.11" + "@babel/runtime" "^7.7.6" + ast-types "^0.14.2" + commander "^2.19.0" + doctrine "^3.0.0" + estree-to-babel "^3.1.0" + neo-async "^2.6.1" + node-dir "^0.1.10" + strip-indent "^3.0.0" + react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -5895,7 +10278,33 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-is@^16.13.1: +react-element-to-jsx-string@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" + integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== + dependencies: + "@base2/pretty-print-object" "1.0.1" + is-plain-object "5.0.0" + react-is "18.1.0" + +react-error-boundary@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + dependencies: + "@babel/runtime" "^7.12.5" + +react-inspector@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.1.tgz#1a37f0165d9df81ee804d63259eaaeabe841287d" + integrity sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg== + +react-is@18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -5910,6 +10319,32 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-resizable-panels@^0.0.35: + version "0.0.35" + resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-0.0.35.tgz#ac8c8918c957bbd5c37b4b93ca50a40b5c012e6a" + integrity sha512-8HFm5w4AG13aUN2+JWM/3unYP+QVmW0xs9iWM7Sa+HvIGCQhdvLEEx3lFmUyEiWPYmsBnPZaq6o/4pAi2dt4yQ== + +react-resize-detector@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-7.1.2.tgz#8ef975dd8c3d56f9a5160ac382ef7136dcd2d86c" + integrity sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw== + dependencies: + lodash "^4.17.21" + +react-textarea-autosize@8.3.4: + version "8.3.4" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" + integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== + dependencies: + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -5963,7 +10398,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5972,7 +10407,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~2.3.6: +readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5992,6 +10427,27 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +recast@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.1.tgz#ee415a5561d2f99f02318ea8db81ad3a2267a6ff" + integrity sha512-RokaBcoxSjXUDzz1TXSZmZsSW6ZpLmlA3GGqJ8uuTrQ9hZhEz+4Tpsc+gRvYRJ2BU4H+ZyUlg91eSGDw7bwy7g== + dependencies: + assert "^2.0.0" + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -6014,11 +10470,30 @@ redux@^4.2.0: dependencies: "@babel/runtime" "^7.9.2" +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" @@ -6033,6 +10508,18 @@ regexpp@^3.2.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +regexpu-core@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsgen "^0.7.1" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + registry-auth-token@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.1.tgz#5e6cd106e6c251135a046650c58476fc03e92833" @@ -6047,6 +10534,23 @@ registry-url@^6.0.0: dependencies: rc "1.2.8" +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + release-it@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/release-it/-/release-it-15.6.0.tgz#db6c35088c29e5ca9d2c6d26cdce1010e49e30e7" @@ -6079,6 +10583,37 @@ release-it@^15.6.0: wildcard-match "5.1.2" yargs-parser "21.1.1" +remark-external-links@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" + integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== + dependencies: + extend "^3.0.0" + is-absolute-url "^3.0.0" + mdast-util-definitions "^4.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" + +remark-slug@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" + integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== + dependencies: + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^2.0.0" + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -6089,11 +10624,21 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +requireindex@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -6128,7 +10673,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -6184,6 +10729,13 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6191,6 +10743,13 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rollup@^3.2.5: version "3.9.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011" @@ -6210,19 +10769,24 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.5.7: +rxjs@^7.5.7, rxjs@^7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== dependencies: tslib "^2.1.0" -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6255,6 +10819,34 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + semver-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" @@ -6262,28 +10854,92 @@ semver-diff@^4.0.0: dependencies: semver "^7.3.5" -"semver@2 || 3 || 4 || 5": +"semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.3.8, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@7.3.8, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-favicon@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" + integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== + dependencies: + etag "~1.8.1" + fresh "0.5.2" + ms "2.1.1" + parseurl "~1.3.2" + safe-buffer "5.1.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -6314,11 +10970,18 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-update-notifier@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" + integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== + dependencies: + semver "~7.0.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -6387,6 +11050,11 @@ socks@^2.3.3: ip "^2.0.0" smart-buffer "^4.2.0" +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -6395,6 +11063,14 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.16, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@0.8.0-beta.0: version "0.8.0-beta.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" @@ -6402,16 +11078,31 @@ source-map@0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -6438,6 +11129,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== + split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -6464,6 +11160,19 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktracey@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/stacktracey/-/stacktracey-2.1.8.tgz#bf9916020738ce3700d1323b32bd2c91ea71199d" + integrity sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw== + dependencies: + as-table "^1.0.36" + get-source "^2.0.12" + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -6476,6 +11185,18 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +store2@^2.14.2: + version "2.14.2" + resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" + integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== + +storybook@^7.0.0-beta.43: + version "7.0.0-beta.43" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.0.0-beta.43.tgz#9528c1f1402bc332b956c4341325779261751b9a" + integrity sha512-fanmqfAK6wZSDIaR9ijzfCpTQ6xyIJP4DhqsaqVllN3HS5OVrGX5y2EV3AqiHSHNLY4eIzQqkk2aBu8WaySjHQ== + dependencies: + "@storybook/cli" "7.0.0-beta.43" + string-argv@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -6497,7 +11218,7 @@ string-length@^5.0.1: char-regex "^2.0.0" strip-ansi "^7.0.1" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6607,7 +11328,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -6617,6 +11338,16 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + +stylis@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== + sucrase@^3.20.3: version "3.29.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d" @@ -6629,6 +11360,13 @@ sucrase@^3.20.3: pirates "^4.0.1" ts-interface-checker "^0.1.9" +superjson@^1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.12.2.tgz#072471f1e6add2d95a38b77fef8c7a199d82103a" + integrity sha512-ugvUo9/WmvWOjstornQhsN/sR9mnGtWGYeTxFuqLb4AiT4QdUavjGFRALCPKWWnAiUJ4HTpytj5e0t5HoMRkXg== + dependencies: + copy-anything "^3.0.2" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -6660,6 +11398,11 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synchronous-promise@^2.0.15: + version "2.0.17" + resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" + integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== + synckit@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" @@ -6668,11 +11411,89 @@ synckit@^0.8.4: "@pkgr/utils" "^2.3.1" tslib "^2.4.0" -tapable@^2.2.0: +tabbable@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.0.1.tgz#427a09b13c83ae41eed3e88abb76a4af28bde1a6" + integrity sha512-SYJSIgeyXW7EuX1ytdneO5e8jip42oHWg9xl/o3oTYhmXusZVgiA+VlPvjIN+kHii9v90AmzTZEBcsEvuAY+TA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar@^6.1.12: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +telejson@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.0.4.tgz#2e88c0af9566b4f687622ed490588312b2bec186" + integrity sha512-J4QEuCnYGXAI9KSN7RXK0a0cOW2ONpjc4IQbInGZ6c3stvplLAYyZjTnScrRd8deXVjNCFV1wXcLC7SObDuQYA== + dependencies: + memoizerific "^1.11.3" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +tempy@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" + integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: + version "5.3.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" + integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.14" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.14.1" + +terser@^5.10.0: + version "5.16.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.3.tgz#3266017a9b682edfe019b8ecddd2abaae7b39c6b" + integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +terser@^5.14.1: + version "5.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" + integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -6802,6 +11623,11 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-dedent@^2.0.0, ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -6841,21 +11667,21 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== -tsup@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.5.0.tgz#1be97481b7a56385b7c40d01bdabb4196f3649cf" - integrity sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA== +tsup@^6.6.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.6.3.tgz#f6f975a8656cfd9b8e115f33b1aa0f0fd4df78e2" + integrity sha512-OLx/jFllYlVeZQ7sCHBuRVEQBBa1tFbouoc/gbYakyipjVQdWy/iQOvmExUA/ewap9iQ7tbJf9pW0PgcEFfJcQ== dependencies: - bundle-require "^3.1.2" + bundle-require "^4.0.0" cac "^6.7.12" chokidar "^3.5.1" debug "^4.3.1" - esbuild "^0.15.1" + esbuild "^0.17.6" execa "^5.0.0" globby "^11.0.3" joycon "^3.0.1" @@ -6892,6 +11718,11 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -6922,7 +11753,7 @@ type-fest@^1.0.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== -type-fest@^2.13.0, type-fest@^2.5.1: +type-fest@^2.13.0, type-fest@^2.19.0, type-fest@^2.5.1: version "2.19.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== @@ -6932,6 +11763,14 @@ type-fest@^3.0.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.5.1.tgz#9555ae435f560c1b4447b70bdd195bb2c86c6c92" integrity sha512-70T99cpILFk2fzwuljwWxmazSphFrdOe3gRHbp6bqs71pxFBbJwFqnmkLO2lQL6aLHxHmYAnP/sL+AJWpT70jA== +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -6973,6 +11812,41 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + unique-string@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" @@ -6980,6 +11854,28 @@ unique-string@^3.0.0: dependencies: crypto-random-string "^4.0.0" +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -7000,11 +11896,26 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +unplugin@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.10.2.tgz#0f7089c3666f592cc448d746e39e7f41e9afb01a" + integrity sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA== + dependencies: + acorn "^8.8.0" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.4.5" + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + update-browserslist-db@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" @@ -7053,17 +11964,67 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + +use-resize-observer@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" + integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== + dependencies: + "@juggle/resize-observer" "^3.3.1" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.12.0, util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" + integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-to-istanbul@^9.0.1: +v8-to-istanbul@^9.0.0, v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== @@ -7080,6 +12041,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + vm2@^3.9.8: version "3.9.13" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.13.tgz#774a1a3d73b9b90b1aa45bcc5f25e349f2eef649" @@ -7102,6 +12068,14 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +watchpack@^2.2.0, watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -7129,6 +12103,66 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-hot-middleware@^2.25.1: + version "2.25.3" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#be343ce2848022cfd854dd82820cd730998c6794" + integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA== + dependencies: + ansi-html-community "0.0.8" + html-entities "^2.1.0" + strip-ansi "^6.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.4.3, webpack-virtual-modules@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== + +webpack@5, webpack@^5.75.0: + version "5.75.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" + integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + whatwg-encoding@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" @@ -7187,7 +12221,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.9: +which-typed-array@^1.1.2, which-typed-array@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== @@ -7206,6 +12240,20 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + widest-line@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" @@ -7267,6 +12315,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -7285,11 +12342,23 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" +ws@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + ws@^8.11.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== +ws@^8.2.3: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== + xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" @@ -7330,7 +12399,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.2: +yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -7345,7 +12414,7 @@ yargs-parser@21.1.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -7376,6 +12445,14 @@ yargs@^17.0.0, yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.1.1" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"