diff --git a/modules/code-builder/package.json b/modules/code-builder/package.json index 26132ddf..81387764 100644 --- a/modules/code-builder/package.json +++ b/modules/code-builder/package.json @@ -16,6 +16,8 @@ "react-dom": "~18.x" }, "dependencies": { - "@sugarlabs/musicblocks-v4-lib": "^0.2.0" + "@sugarlabs/musicblocks-v4-lib": "^0.2.0", + "react-aria": "^3.26.0", + "zustand": "^4.3.9" } } diff --git a/modules/code-builder/playground/index.tsx b/modules/code-builder/playground/index.tsx index 288860a6..181d4e21 100644 --- a/modules/code-builder/playground/index.tsx +++ b/modules/code-builder/playground/index.tsx @@ -2,12 +2,17 @@ import { createRoot } from 'react-dom/client'; import { createBrowserRouter, Navigate, RouterProvider } from 'react-router-dom'; import PageCollision from './pages/Collision'; +import WorkSpace from './pages/WorkSpace'; const router = createBrowserRouter([ { path: '/collision', element: , }, + { + path: '/workspace', + element: , + }, { path: '/', element: , diff --git a/modules/code-builder/playground/pages/WorkSpace/BrickFactory.tsx b/modules/code-builder/playground/pages/WorkSpace/BrickFactory.tsx new file mode 100644 index 00000000..dcb20494 --- /dev/null +++ b/modules/code-builder/playground/pages/WorkSpace/BrickFactory.tsx @@ -0,0 +1,185 @@ +import { useState } from 'react'; +import { useMove } from 'react-aria'; +import { BrickBlock, BrickData, BrickExpression, BrickStatement } from '@/brick'; +import { useBricksCoords } from './BricksCoordsStore'; +import { WORKSPACES_DATA } from './data'; +import type { Brick } from './data'; +import { getBelowBricksIds } from './utils'; + +const BrickFactory = ({ brickData }: { brickData: Brick }) => { + const CONTAINER_SIZE_X = 800; + const CONTAINER_SIZE_Y = 700; + const BRICK_HEIGHT = brickData.instance.bBoxBrick.extent.height; + const BRICK_WIDTH = brickData.instance.bBoxBrick.extent.width; + const { getCoords, setCoords } = useBricksCoords(); + const brickCoords = getCoords(brickData.id)!; + const [color, setColor] = useState(brickData.instance.colorBg as string); + + const clampX = (pos: number) => Math.min(Math.max(pos, 0), CONTAINER_SIZE_X - BRICK_WIDTH * 2); + const clampY = (pos: number) => Math.min(Math.max(pos, 0), CONTAINER_SIZE_Y - BRICK_HEIGHT * 2); + + const { moveProps } = useMove({ + onMoveStart(e) { + console.log(`move start with pointerType = ${e.pointerType}`); + setColor('white'); + }, + onMove(e) { + const newX = brickCoords.x + e.deltaX; + const newY = brickCoords.y + e.deltaY; + setCoords(brickData.id, { x: clampX(newX), y: clampY(newY) }); + + brickData.childBricks.forEach((childBrick) => { + const childBrickCoords = getCoords(childBrick)!; + setCoords(childBrick, { + x: childBrickCoords.x + e.deltaX, + y: childBrickCoords.y + e.deltaY, + }); + }); + + const belowBrickIds = getBelowBricksIds(WORKSPACES_DATA[0].data, brickData.id); + belowBrickIds.forEach((belowBrickId) => { + const belowBrickCoords = getCoords(belowBrickId)!; + setCoords(belowBrickId, { + x: belowBrickCoords.x + e.deltaX, + y: belowBrickCoords.y + e.deltaY, + }); + }); + + // Normally, we want to allow the user to continue + // dragging outside the box such that they need to + // drag back over the ball again before it moves. + // This is handled below by clamping during render. + // If using the keyboard, however, we need to clamp + // here so that dragging outside the container and + // then using the arrow keys works as expected. + // if (e.pointerType === 'keyboard') { + // x = clamp(x); + // y = clamp(y); + // } + + // setEvents((events) => [ + // `move with pointerType = ${e.pointerType}, deltaX = ${e.deltaX}, deltaY = ${e.deltaY}`, + // ...events, + // ]); + }, + onMoveEnd(e) { + console.log(`move end with pointerType = ${e.pointerType}`); + setColor(brickData.instance.colorBg as string); + }, + }); + + const VisualIndicators = () => ( + <> + {/* Right args bounding box */} + {'bBoxArgs' in brickData.instance && ( + <> + {Object.keys(brickData.instance.bBoxArgs).map((name, i) => { + if ('bBoxArgs' in brickData.instance) { + const arg = brickData.instance.bBoxArgs[name]; + + return ( + + ); + } + })} + + )} + + {/* Top instruction notch bounding box */} + {'bBoxNotchInsTop' in brickData.instance && ( + + )} + + {/* Bottom instruction notch bounding box */} + {'bBoxNotchInsBot' in brickData.instance && ( + + )} + + {/* Top instruction notch inside nesting bounding box */} + {'bBoxNotchInsNestTop' in brickData.instance && ( + + )} + + ); + + const getBrick = () => { + switch (brickData.type) { + case 'data': + return ( + + ); + case 'expression': + return ( + + ); + case 'statement': + return ( + + ); + case 'block': + return ( + + ); + default: + return <>; + } + }; + + return ( + <> + + {/* {getBrick()} */} + + ); +}; + +export default BrickFactory; diff --git a/modules/code-builder/playground/pages/WorkSpace/BricksCoordsStore.ts b/modules/code-builder/playground/pages/WorkSpace/BricksCoordsStore.ts new file mode 100644 index 00000000..94d3b73e --- /dev/null +++ b/modules/code-builder/playground/pages/WorkSpace/BricksCoordsStore.ts @@ -0,0 +1,50 @@ +import { create } from 'zustand'; + +type CoordsState = { + allCoords: { + brickId: string; + coords: { + x: number; + y: number; + }; + }[]; + setCoords: (brickId: string, coords: { x: number; y: number }) => void; + getCoords: (brickId: string) => { x: number; y: number } | undefined; +}; + +const useBricksCoordsStore = create((set, get) => ({ + allCoords: [ + { brickId: '1', coords: { x: 50, y: 50 } }, + { brickId: '2', coords: { x: 68, y: 92 } }, + { brickId: '3', coords: { x: 68, y: 134 } }, + { brickId: '4', coords: { x: 68, y: 176 } }, + { brickId: '5', coords: { x: 86, y: 218 } }, + { brickId: '6', coords: { x: 68, y: 302 } }, + ], + setCoords: (brickId: string, coords: { x: number; y: number }) => + set( + (state: { + allCoords: { + brickId: string; + coords: { + x: number; + y: number; + }; + }[]; + }) => ({ + allCoords: state.allCoords.map((item) => + item.brickId === brickId ? { brickId, coords } : item, + ), + }), + ), + getCoords: (brickId: string) => + get().allCoords.find((item) => item.brickId === brickId)?.coords, +})); + +export const useBricksCoords = () => { + const allCoords = useBricksCoordsStore((state) => state.allCoords); + const setCoords = useBricksCoordsStore((state) => state.setCoords); + const getCoords = useBricksCoordsStore((state) => state.getCoords); + + return { allCoords, setCoords, getCoords }; +}; diff --git a/modules/code-builder/playground/pages/WorkSpace/data.ts b/modules/code-builder/playground/pages/WorkSpace/data.ts new file mode 100644 index 00000000..b29701c4 --- /dev/null +++ b/modules/code-builder/playground/pages/WorkSpace/data.ts @@ -0,0 +1,230 @@ +import { ModelBrickBlock, ModelBrickStatement } from '@/brick'; +import type { + TBrickType, + TBrickCoords, + TBrickArgDataType, + IBrickData, + IBrickExpression, + IBrickStatement, + IBrickBlock, +} from '@/@types/brick'; + +type InstanceMap = { + data: IBrickData; + expression: IBrickExpression; + statement: IBrickStatement; + block: IBrickBlock; +}; + +export type Brick = { + id: string; + type: TBrickType; + instance: InstanceMap[TBrickType]; + surroundingBricks: { above: string; below: string }; + childBricks: string[]; + coords: TBrickCoords; + children?: Brick[]; +}; + +export const WORKSPACES_DATA: { id: string; data: Brick[] }[] = [ + { + id: 'workspace1', + data: [ + { + id: '1', + type: 'block', + instance: new ModelBrickBlock({ + label: 'Block', + args: Object.fromEntries( + [].map< + [string, { label: string; dataType: TBrickArgDataType; meta: unknown }] + >((name) => [name, { label: name, dataType: 'any', meta: undefined }]), + ), + colorBg: 'yellow', + colorFg: 'black', + outline: 'red', + scale: 2, + glyph: '', + connectAbove: true, + connectBelow: true, + name: '', + nestLengthY: 125, + }), + surroundingBricks: { above: '', below: '' }, + childBricks: ['2', '3', '4', '5', '6'], + coords: { x: 50, y: 50 }, + children: [ + { + id: '2', + type: 'statement', + instance: new ModelBrickStatement({ + label: 'Statement', + args: Object.fromEntries( + [].map< + [ + string, + { + label: string; + dataType: TBrickArgDataType; + meta: unknown; + }, + ] + >((name) => [ + name, + { label: name, dataType: 'any', meta: undefined }, + ]), + ), + colorBg: 'lightblue', + colorFg: 'black', + outline: 'blue', + scale: 2, + glyph: '', + connectAbove: true, + connectBelow: true, + name: '', + }), + surroundingBricks: { above: '1', below: '3' }, + childBricks: [], + coords: { x: 68, y: 92 }, + }, + { + id: '3', + type: 'statement', + instance: new ModelBrickStatement({ + label: 'Statement', + args: Object.fromEntries( + [].map< + [ + string, + { + label: string; + dataType: TBrickArgDataType; + meta: unknown; + }, + ] + >((name) => [ + name, + { label: name, dataType: 'any', meta: undefined }, + ]), + ), + colorBg: 'lightgreen', + colorFg: 'black', + outline: 'green', + scale: 2, + glyph: '', + connectAbove: true, + connectBelow: true, + name: '', + }), + surroundingBricks: { above: '2', below: '4' }, + childBricks: [], + coords: { x: 68, y: 134 }, + }, + { + id: '4', + type: 'block', + instance: new ModelBrickBlock({ + label: 'Block', + args: Object.fromEntries( + [].map< + [ + string, + { + label: string; + dataType: TBrickArgDataType; + meta: unknown; + }, + ] + >((name) => [ + name, + { label: name, dataType: 'any', meta: undefined }, + ]), + ), + colorBg: 'orange', + colorFg: 'black', + outline: 'grey', + scale: 2, + glyph: '', + connectAbove: true, + connectBelow: true, + name: '', + nestLengthY: 17, + }), + surroundingBricks: { above: '3', below: '6' }, + childBricks: ['5'], + coords: { x: 68, y: 176 }, + children: [ + { + id: '5', + type: 'statement', + instance: new ModelBrickStatement({ + label: 'Statement', + args: Object.fromEntries( + [].map< + [ + string, + { + label: string; + dataType: TBrickArgDataType; + meta: unknown; + }, + ] + >((name) => [ + name, + { label: name, dataType: 'any', meta: undefined }, + ]), + ), + colorBg: 'lightpink', + colorFg: 'black', + outline: 'deeppink', + + scale: 2, + glyph: '', + connectAbove: true, + connectBelow: true, + name: '', + }), + surroundingBricks: { above: '', below: '' }, + childBricks: [], + coords: { x: 86, y: 218 }, + }, + ], + }, + { + id: '6', + type: 'statement', + instance: new ModelBrickStatement({ + label: 'Statement', + args: Object.fromEntries( + [].map< + [ + string, + { + label: string; + dataType: TBrickArgDataType; + meta: unknown; + }, + ] + >((name) => [ + name, + { label: name, dataType: 'any', meta: undefined }, + ]), + ), + colorBg: 'lightgreen', + colorFg: 'black', + outline: 'green', + scale: 2, + glyph: '', + connectAbove: true, + connectBelow: true, + name: '', + }), + surroundingBricks: { above: '4', below: '' }, + childBricks: [], + coords: { x: 68, y: 302 }, + }, + ], + }, + ], + }, +]; diff --git a/modules/code-builder/playground/pages/WorkSpace/index.tsx b/modules/code-builder/playground/pages/WorkSpace/index.tsx new file mode 100644 index 00000000..5958e93e --- /dev/null +++ b/modules/code-builder/playground/pages/WorkSpace/index.tsx @@ -0,0 +1,37 @@ +import BrickFactory from './BrickFactory'; +import { WORKSPACES_DATA } from './data'; +import type { Brick } from './data'; + +function RenderBricks({ brickData }: { brickData: Brick }) { + return ( + <> + + {brickData.children && + brickData.children?.length > 0 && + brickData.children.map((child) => )} + + ); +} + +function WorkSpace() { + return ( +
+ {WORKSPACES_DATA.map((workspace) => ( + + {workspace.data.map((brick) => { + return ; + })} + + ))} +
+ ); +} + +export default WorkSpace; diff --git a/modules/code-builder/playground/pages/WorkSpace/utils.ts b/modules/code-builder/playground/pages/WorkSpace/utils.ts new file mode 100644 index 00000000..8adb28d5 --- /dev/null +++ b/modules/code-builder/playground/pages/WorkSpace/utils.ts @@ -0,0 +1,23 @@ +import type { Brick } from './data'; + +export function getBelowBricksIds(arr: Brick[], item: string): string[] { + let result: string[] = []; + + function recursiveSearch(arr: Brick[], item: string) { + arr.forEach((element, index) => { + if (element.id === item) { + arr.slice(index + 1, arr.length).map((el) => { + result = result.concat(el.childBricks); + result = result.concat(el.id); + }); + return; + } + if (Array.isArray(element.children)) { + recursiveSearch(element.children, item); + } + }); + } + + recursiveSearch(arr, item); + return result; +} diff --git a/modules/code-builder/src/@types/brick.d.ts b/modules/code-builder/src/@types/brick.d.ts index ffff1fe4..7a9e7e5b 100644 --- a/modules/code-builder/src/@types/brick.d.ts +++ b/modules/code-builder/src/@types/brick.d.ts @@ -83,10 +83,16 @@ export interface IBrickArgs { * State properties associated with bricks that can take arguments. */ export interface IBrickArgsState { - /** map of argument ID to corresponding bounding box dimensions */ - get argsExtent(): Record; - /** map of argument ID to co-ordinates of the argument connections relative to the brick */ - get argsCoords(): Record; + /** Map of argument ID to corresponding extent and coords */ + get bBoxArgs(): Record< + string, + { + /** Bounding box dimensions */ + extent: TBrickExtent; + /** Co-ordinates of the argument connections relative to the brick */ + coords: TBrickCoords; + } + >; } /** @@ -110,11 +116,11 @@ export interface IBrick extends IBrickStyle { // states /** whether brick is highlighted */ highlighted: boolean; - /** bounding box dimensions of the brick */ - get extent(): IBrickExtent; + /** Bounding box dimensions and coords of the brick */ + get bBoxBrick(): { extent: TBrickExtent; coords: TBrickCoords }; /** SVG string for the brick based on defining properties and current state */ - get SVGpaths(): string[]; + get SVGpath(): string; } /** @@ -124,6 +130,14 @@ export interface IBrick extends IBrickStyle { export interface IBrickArgument extends IBrick { /** data type returned by an argument brick */ get dataType(): TBrickArgDataType; + + /** Bounding box dimensions and coords of the left notch */ + get bBoxNotchArg(): { + /** Bounding box dimensions of the left notch */ + extent: TBrickExtent; + /** Co-ordinates of the left notch relative to the brick */ + coords: TBrickCoords; + }; } /** @@ -136,6 +150,22 @@ export interface IBrickInstruction extends IBrick, IBrickArgs, IBrickArgsState { get connectAbove(): boolean; /** is connection allowed below the brick */ get connectBelow(): boolean; + + /** Bounding box dimensions and coords of the top instruction notch */ + get bBoxNotchInsTop(): { + /** Bounding box dimensions of the top instruction notch */ + extent: TBrickExtent; + /** Co-ordinates of the top instruction notch relative to the brick */ + coords: TBrickCoords; + }; + + /** Bounding box dimensions and coords of the bottom instruction notch */ + get bBoxNotchInsBot(): { + /** Bounding box dimensions of the bottom instruction notch */ + extent: TBrickExtent; + /** Co-ordinates of the bottom instruction notch relative to the brick */ + coords: TBrickCoords; + }; } /** @@ -173,10 +203,18 @@ export interface IBrickStatement extends IBrickInstruction { * @interface * Type definition of a block brick. */ -export interface IBrickBlock extends IBrickInstruction { +export interface IBrickBlock extends IBrickInstruction, IBrickNotchInsNestTopState { // state /** combined bounding box of the instructions nested within the brick */ - get nestExtent(): IBrickExtent; + get nestExtent(): TBrickExtent; /** whether brick nesting is hidden */ collapsed: boolean; + + /** Bounding box dimensions and coords of the top instruction notch of the nesting */ + get bBoxNotchInsNestTop(): { + /** Bounding box dimensions of the top instruction notch of the nesting */ + extent: TBrickExtent; + /** Co-ordinates of the top instruction notch of the nesting relative to the brick */ + coords: TBrickCoords; + }; } diff --git a/modules/code-builder/src/brick/design0/BrickBlock.ts b/modules/code-builder/src/brick/design0/BrickBlock.ts index 393f015d..07d8dcbc 100644 --- a/modules/code-builder/src/brick/design0/BrickBlock.ts +++ b/modules/code-builder/src/brick/design0/BrickBlock.ts @@ -10,6 +10,8 @@ import { generatePath } from './utils/path'; * Final class that defines a block brick. */ export default class BrickBlock extends BrickModelBlock { + readonly _pathResults: ReturnType; + constructor(params: { // intrinsic name: string; @@ -30,36 +32,59 @@ export default class BrickBlock extends BrickModelBlock { scale: number; connectAbove: boolean; connectBelow: boolean; + nestLengthY?: number; }) { super(params); + const argsKeys = Object.keys(this._args); + this._pathResults = generatePath({ + hasNest: true, + hasNotchArg: false, + hasNotchInsTop: this._connectAbove, + hasNotchInsBot: this._connectBelow, + scale: this._scale, + nestLengthY: params.nestLengthY ?? 17, + innerLengthX: 100, + argHeights: Array.from({ length: argsKeys.length }, () => 17), + }); } - public get extent(): TBrickExtent { - return { width: 0, height: 0 }; + public get SVGpath(): string { + return this._pathResults.path; } - public get argsCoords(): Record { - return {}; + public get bBoxBrick(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxBrick; } - public get SVGpaths(): string[] { - const argsLength = Object.keys(this._args).length; - let result: string[] = []; + public get bBoxArgs(): Record { + const argsKeys = Object.keys(this._args); + const result: Record = {}; - const path = generatePath({ - hasNest: true, - hasNotchNest: true, - hasNotchArg: true, - hasNotchInsTop: this._connectAbove, - hasNotchInsBot: this._connectBelow, - scale: this._scale, - nestLengthY: 30, - innerLengthX: 100, - argHeights: Array.from({ length: argsLength }, () => 17), - }).path; + argsKeys.forEach((key, index) => { + result[key] = { extent: { width: 0, height: 0 }, coords: { x: 0, y: 0 } }; + const argX = this._pathResults.bBoxArgs.coords[index].x; + const argY = this._pathResults.bBoxArgs.coords[index].y; - result.push(path); + result[key].extent = this._pathResults.bBoxArgs.extent; + result[key].coords = { x: argX, y: argY }; + }); return result; } + + public get bBoxNotchArg(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchArg!; + } + + public get bBoxNotchInsTop(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchInsTop!; + } + + public get bBoxNotchInsBot(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchInsBot!; + } + + public get bBoxNotchInsNestTop(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchInsNestTop!; + } } diff --git a/modules/code-builder/src/brick/design0/BrickData.ts b/modules/code-builder/src/brick/design0/BrickData.ts index 194c6069..3a36002c 100644 --- a/modules/code-builder/src/brick/design0/BrickData.ts +++ b/modules/code-builder/src/brick/design0/BrickData.ts @@ -1,4 +1,4 @@ -import type { TBrickArgDataType, TBrickColor, TBrickExtent } from '@/@types/brick'; +import type { TBrickArgDataType, TBrickColor, TBrickCoords, TBrickExtent } from '@/@types/brick'; import { BrickModelData } from '../model'; import { generatePath } from './utils/path'; @@ -10,6 +10,8 @@ import { generatePath } from './utils/path'; * Final class that defines a data brick. */ export default class BrickData extends BrickModelData { + readonly _pathResults: ReturnType; + constructor(params: { // intrinsic name: string; @@ -26,16 +28,7 @@ export default class BrickData extends BrickModelData { scale: number; }) { super(params); - } - - public get extent(): TBrickExtent { - return { width: 0, height: 0 }; - } - - public get SVGpaths(): string[] { - let result: string[] = []; - - const path = generatePath({ + this._pathResults = generatePath({ hasNest: false, hasNotchArg: true, hasNotchInsTop: false, @@ -43,10 +36,18 @@ export default class BrickData extends BrickModelData { scale: this._scale, innerLengthX: 100, argHeights: [], - }).path; + }); + } - result.push(path); + public get SVGpath(): string { + return this._pathResults.path; + } + + public get bBoxBrick(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxBrick; + } - return result; + public get bBoxNotchArg(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchArg!; } } diff --git a/modules/code-builder/src/brick/design0/BrickExpression.ts b/modules/code-builder/src/brick/design0/BrickExpression.ts index a9fcee02..a45247a1 100644 --- a/modules/code-builder/src/brick/design0/BrickExpression.ts +++ b/modules/code-builder/src/brick/design0/BrickExpression.ts @@ -10,6 +10,8 @@ import { generatePath } from './utils/path'; * Final class that defines a expression brick. */ export default class BrickExpression extends BrickModelExpression { + readonly _pathResults: ReturnType; + constructor(params: { // intrinsic name: string; @@ -31,32 +33,43 @@ export default class BrickExpression extends BrickModelExpression { scale: number; }) { super(params); + const argsKeys = Object.keys(this._args); + this._pathResults = generatePath({ + hasNest: false, + hasNotchArg: true, + hasNotchInsTop: false, + hasNotchInsBot: false, + scale: this._scale, + innerLengthX: 100, + argHeights: Array.from({ length: argsKeys.length }, () => 17), + }); } - public get extent(): TBrickExtent { - return { width: 0, height: 0 }; + public get SVGpath(): string { + return this._pathResults.path; } - public get argsCoords(): Record { - return {}; + public get bBoxBrick(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxBrick; } - public get SVGpaths(): string[] { - const argsLength = Object.keys(this._args).length; - let result: string[] = []; + public get bBoxArgs(): Record { + const argsKeys = Object.keys(this._args); + const result: Record = {}; - const path = generatePath({ - hasNest: false, - hasNotchArg: true, - hasNotchInsTop: false, - hasNotchInsBot: false, - scale: this._scale, - innerLengthX: 100, - argHeights: Array.from({ length: argsLength }, () => 17), - }).path; + argsKeys.forEach((key, index) => { + result[key] = { extent: { width: 0, height: 0 }, coords: { x: 0, y: 0 } }; + const argX = this._pathResults.bBoxArgs.coords[index].x; + const argY = this._pathResults.bBoxArgs.coords[index].y; - result.push(path); + result[key].extent = this._pathResults.bBoxArgs.extent; + result[key].coords = { x: argX, y: argY }; + }); return result; } + + public get bBoxNotchArg(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchArg!; + } } diff --git a/modules/code-builder/src/brick/design0/BrickStatement.ts b/modules/code-builder/src/brick/design0/BrickStatement.ts index 100b6f41..43fba3a8 100644 --- a/modules/code-builder/src/brick/design0/BrickStatement.ts +++ b/modules/code-builder/src/brick/design0/BrickStatement.ts @@ -10,6 +10,8 @@ import { generatePath } from './utils/path'; * Final class that defines a statement brick. */ export default class BrickStatement extends BrickModelStatement { + readonly _pathResults: ReturnType; + constructor(params: { // intrinsic name: string; @@ -32,32 +34,47 @@ export default class BrickStatement extends BrickModelStatement { connectBelow: boolean; }) { super(params); + const argsKeys = Object.keys(this._args); + this._pathResults = generatePath({ + hasNest: false, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: this._scale, + innerLengthX: 100, + argHeights: Array.from({ length: argsKeys.length }, () => 17), + }); } - public get extent(): TBrickExtent { - return { width: 0, height: 0 }; + public get SVGpath(): string { + return this._pathResults.path; } - public get argsCoords(): Record { - return {}; + public get bBoxBrick(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxBrick; } - public get SVGpaths(): string[] { - const argsLength = Object.keys(this._args).length; - let result: string[] = []; + public get bBoxArgs(): Record { + const argsKeys = Object.keys(this._args); + const result: Record = {}; - const path = generatePath({ - hasNest: false, - hasNotchArg: false, - hasNotchInsTop: true, - hasNotchInsBot: true, - scale: this._scale, - innerLengthX: 100, - argHeights: Array.from({ length: argsLength }, () => 17), - }).path; + argsKeys.forEach((key, index) => { + result[key] = { extent: { width: 0, height: 0 }, coords: { x: 0, y: 0 } }; + const argX = this._pathResults.bBoxArgs.coords[index].x; + const argY = this._pathResults.bBoxArgs.coords[index].y; - result.push(path); + result[key].extent = this._pathResults.bBoxArgs.extent; + result[key].coords = { x: argX, y: argY }; + }); return result; } + + public get bBoxNotchInsTop(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchInsTop!; + } + + public get bBoxNotchInsBot(): { extent: TBrickExtent; coords: TBrickCoords } { + return this._pathResults.bBoxNotchInsBot!; + } } diff --git a/modules/code-builder/src/brick/design0/components/BrickBlock.tsx b/modules/code-builder/src/brick/design0/components/BrickBlock.tsx index 2eb915dd..2a9d15b2 100644 --- a/modules/code-builder/src/brick/design0/components/BrickBlock.tsx +++ b/modules/code-builder/src/brick/design0/components/BrickBlock.tsx @@ -1,18 +1,31 @@ -import type { IBrickBlock } from '@/@types/brick'; +import type { DOMAttributes, JSX } from 'react'; +import type { Brick } from 'playground/pages/WorkSpace/data'; // ------------------------------------------------------------------------------------------------- -export default function (props: { instance: IBrickBlock }): JSX.Element { - const { instance } = props; - +export default function ({ + brickData, + moveProps, + coords, + color, +}: { + brickData: Brick; + moveProps: DOMAttributes; + coords: { x: number; y: number }; + color: string; +}): JSX.Element { return ( - + ; + coords: { x: number; y: number }; + color: string; +}): JSX.Element { return ( - + ; + coords: { x: number; y: number }; + color: string; +}): JSX.Element { return ( - + ; + coords: { x: number; y: number }; + color: string; +}): JSX.Element { return ( - + Math.max(argSectionLengthYMin, sectionLengthY)) + .reduce((a, b) => a + b, 0); + + let height = + strokeWidth + + (argsLength !== 0 ? argsLength : 2 * cornerRadius + notchArgLengthY) + + strokeWidth; + + if (_hasNest) { + height += _nestLengthY + strokeWidth * 4 + 2 * cornerRadius + notchArgLengthY; + } + return { extent: { - width: _innerLengthX, - height: _argsLengthY.reduce((a, b) => a + b, 0), + width: strokeWidth + _innerLengthX + strokeWidth, + height: height, }, coords: { - x: 0, + x: _hasNotchArg ? notchArgLengthX : 0, y: 0, }, }; @@ -357,12 +372,12 @@ function _getBBoxNotchArg(): { } { return { extent: { - width: notchArgLengthX, - height: notchArgLengthY - 2, + width: _hasNotchArg ? notchArgLengthX : 0, + height: _hasNotchArg ? strokeWidth + 8 + strokeWidth : 0, }, coords: { x: 0, - y: 0, + y: _hasNotchArg ? 6 : 0, }, }; } @@ -378,11 +393,16 @@ function _getBBoxNotchInsTop(): { } { return { extent: { - width: notchInsLengthX, + width: notchInsLengthX - 2 * strokeWidth, height: notchInsLengthY, }, coords: { - x: 0, + x: + strokeWidth + + (_hasNotchArg ? notchArgLengthX : 0) + + cornerRadius + + notchInsOffsetX + + strokeWidth, y: 0, }, }; @@ -399,12 +419,17 @@ function _getBBoxNotchInsBot(): { } { return { extent: { - width: notchInsLengthX, - height: notchInsLengthY, + width: notchInsLengthX - 2 * strokeWidth, + height: strokeWidth + notchInsLengthY - strokeWidth, }, coords: { - x: 0, - y: 0, + x: + strokeWidth + + (_hasNotchArg ? notchArgLengthX : 0) + + cornerRadius + + notchInsOffsetX + + strokeWidth, + y: _getBBoxBrick().extent.height, }, }; } @@ -418,14 +443,30 @@ function _getBBoxNotchInsNestTop(): { extent: { width: number; height: number }; coords: { x: number; y: number }; } { + const argSectionLengthYMin = cornerRadius * 2 + notchArgLengthY; + const argsLength = _argsLengthY + .map((sectionLengthY) => Math.max(argSectionLengthYMin, sectionLengthY)) + .reduce((a, b) => a + b, 0); + + const offsetY = + strokeWidth + + (argsLength !== 0 ? argsLength : 2 * cornerRadius + notchArgLengthY) + + strokeWidth; + return { extent: { - width: notchInsLengthX, + width: notchInsLengthX - 2 * strokeWidth, height: notchInsLengthY, }, coords: { - x: 0, - y: 0, + x: + strokeWidth + + (_hasNotchArg ? notchArgLengthX : 0) + + cornerRadius + + notchInsOffsetX + + notchInsLengthX - + strokeWidth, + y: offsetY, }, }; } @@ -439,17 +480,31 @@ function _getBBoxArgs(): { extent: { width: number; height: number }; coords: { x: number; y: number }[]; } { + const offsetX = + strokeWidth + + (_hasNotchArg ? notchArgLengthX : 0) + + _innerLengthX - + notchArgLengthX + + strokeWidth; + const firstOffsetY = strokeWidth + cornerRadius + 1 + strokeWidth; + const argSectionLengthYMin = cornerRadius * 2 + notchArgLengthY; + const argsLength = _argsLengthY.map((sectionLengthY) => + Math.max(argSectionLengthYMin, sectionLengthY), + ); + return { extent: { width: notchArgLengthX, - height: notchArgLengthY, + height: 10 - 2 * strokeWidth, }, - coords: [ - { - x: 0, - y: 0, - }, - ], + coords: _argsLengthY.map((_, index) => { + return { + x: offsetX, + y: + firstOffsetY + + (index === 0 ? 0 : argsLength.slice(0, index).reduce((a, b) => a + b, 0)), + }; + }), }; } diff --git a/modules/code-builder/src/brick/design0/utils/spec/path.spec.ts b/modules/code-builder/src/brick/design0/utils/spec/path.spec.ts index 09322eaf..044ed24e 100644 --- a/modules/code-builder/src/brick/design0/utils/spec/path.spec.ts +++ b/modules/code-builder/src/brick/design0/utils/spec/path.spec.ts @@ -376,20 +376,154 @@ describe('Code Builder: Brick > Design 0 > Utility: Path', () => { }); describe('Bounding Box Calculation', () => { - it.todo('evaluates brick bounding box for brick with no argument notch'); + it('evaluates brick bounding box for brick with no argument notch', () => { + const { bBoxBrick } = generatePath({ + hasNest: false, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxBrick.extent.height).toBe(21); + expect(bBoxBrick.extent.width).toBe(101); + expect(bBoxBrick.coords.x).toBe(0); + expect(bBoxBrick.coords.y).toBe(0); + }); - it.todo('evaluates brick bounding box for brick with argument notch'); + it('evaluates brick bounding box for brick with argument notch', () => { + const { bBoxBrick } = generatePath({ + hasNest: false, + hasNotchArg: true, + hasNotchInsTop: false, + hasNotchInsBot: false, + scale: 1, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxBrick.extent.height).toBe(21); + expect(bBoxBrick.extent.width).toBe(101); + expect(bBoxBrick.coords.x).toBe(8); + expect(bBoxBrick.coords.y).toBe(0); + }); - it.todo('evaluates argument notch bounding box for brick'); + it('evaluates argument notch bounding box for brick', () => { + const { bBoxNotchArg } = generatePath({ + hasNest: false, + hasNotchArg: true, + hasNotchInsTop: false, + hasNotchInsBot: false, + scale: 1, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxNotchArg?.extent.height).toBe(9); + expect(bBoxNotchArg?.extent.width).toBe(8); + expect(bBoxNotchArg?.coords.x).toBe(0); + expect(bBoxNotchArg?.coords.y).toBe(6); + }); + + it('evaluates top instruction notch bounding box', () => { + const { bBoxNotchInsTop } = generatePath({ + hasNest: false, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxNotchInsTop?.extent.height).toBe(2); + expect(bBoxNotchInsTop?.extent.width).toBe(9); + expect(bBoxNotchInsTop?.coords.x).toBe(9); + expect(bBoxNotchInsTop?.coords.y).toBe(0); + }); - it.todo('evaluates top instruction notch bounding box'); + it('evaluates bottom instruction notch bounding box for non-nesting brick', () => { + const { bBoxNotchInsBot } = generatePath({ + hasNest: false, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxNotchInsBot?.extent.height).toBe(2); + expect(bBoxNotchInsBot?.extent.width).toBe(9); + expect(bBoxNotchInsBot?.coords.x).toBe(9); + expect(bBoxNotchInsBot?.coords.y).toBe(21); + }); - it.todo('evaluates bottom instruction notch bounding box for non-nesting brick'); + it('evaluates bottom instruction notch bounding box for nesting brick', () => { + const { bBoxNotchInsBot } = generatePath({ + hasNest: true, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + nestLengthY: 30, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxNotchInsBot?.extent.height).toBe(2); + expect(bBoxNotchInsBot?.extent.width).toBe(9); + expect(bBoxNotchInsBot?.coords.x).toBe(9); + expect(bBoxNotchInsBot?.coords.y).toBe(73); + }); - it.todo('evaluates bottom instruction notch bounding box for nesting brick'); + it('evaluates inner top instruction notch bounding box for nesting brick', () => { + const { bBoxNotchInsNestTop } = generatePath({ + hasNest: true, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + nestLengthY: 30, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxNotchInsNestTop?.extent.height).toBe(2); + expect(bBoxNotchInsNestTop?.extent.width).toBe(9); + expect(bBoxNotchInsNestTop?.coords.x).toBe(18); + expect(bBoxNotchInsNestTop?.coords.y).toBe(21); + }); - it.todo('evaluates inner top instruction notch bounding box for nesting brick'); + it('evaluates inner top instruction notch bounding box for nesting brick', () => { + const { bBoxNotchInsNestTop } = generatePath({ + hasNest: true, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + nestLengthY: 30, + innerLengthX: 100, + argHeights: [], + }); + expect(bBoxNotchInsNestTop?.extent.height).toBe(2); + expect(bBoxNotchInsNestTop?.extent.width).toBe(9); + expect(bBoxNotchInsNestTop?.coords.x).toBe(18); + expect(bBoxNotchInsNestTop?.coords.y).toBe(21); + }); - it.todo('evaluates bounding boxes for arguments'); + it('evaluates bounding boxes for arguments', () => { + const { bBoxArgs } = generatePath({ + hasNest: false, + hasNotchArg: false, + hasNotchInsTop: true, + hasNotchInsBot: true, + scale: 1, + innerLengthX: 100, + argHeights: [17, 30, 40], + }); + expect(bBoxArgs.extent.height).toBe(9); + expect(bBoxArgs.extent.width).toBe(8); + expect(bBoxArgs.coords).toStrictEqual([ + { x: 93, y: 6 }, + { x: 93, y: 26 }, + { x: 93, y: 56 }, + ]); + }); }); }); diff --git a/modules/code-builder/src/brick/model.ts b/modules/code-builder/src/brick/model.ts index f86569d1..cfadd568 100644 --- a/modules/code-builder/src/brick/model.ts +++ b/modules/code-builder/src/brick/model.ts @@ -101,9 +101,9 @@ abstract class BrickModel implements IBrick { return this._scale; } - public abstract get extent(): TBrickExtent; + public abstract get bBoxBrick(): { extent: TBrickExtent; coords: TBrickCoords }; - public abstract get SVGpaths(): string[]; + public abstract get SVGpath(): string; } /** @@ -135,6 +135,8 @@ abstract class BrickModelArgument extends BrickModel implements IBrickArgument { public get dataType(): TBrickArgDataType { return this._dataType; } + + public abstract get bBoxNotchArg(): { extent: TBrickExtent; coords: TBrickCoords }; } /** @@ -155,8 +157,6 @@ abstract class BrickModelInstruction extends BrickModel implements IBrickInstruc protected _connectAbove: boolean; protected _connectBelow: boolean; - public argsExtent: Record = {}; - constructor(params: { // intrinsic name: string; @@ -205,7 +205,11 @@ abstract class BrickModelInstruction extends BrickModel implements IBrickInstruc return this._connectBelow; } - public abstract get argsCoords(): Record; + public abstract get bBoxNotchInsTop(): { extent: TBrickExtent; coords: TBrickCoords }; + + public abstract get bBoxNotchInsBot(): { extent: TBrickExtent; coords: TBrickCoords }; + + public abstract get bBoxArgs(): Record; } // -- public classes ------------------------------------------------------------------------------- @@ -270,8 +274,6 @@ export abstract class BrickModelExpression extends BrickModelArgument implements } >; - public argsExtent: Record = {}; - constructor(params: { // intrinsic name: string; @@ -308,7 +310,7 @@ export abstract class BrickModelExpression extends BrickModelArgument implements return this._args; } - public abstract get argsCoords(): Record; + public abstract get bBoxArgs(): Record; } /** @@ -374,4 +376,6 @@ export abstract class BrickModelBlock extends BrickModelInstruction implements I }) { super({ ...params, type: 'block' }); } + + public abstract get bBoxNotchInsNestTop(): { extent: TBrickExtent; coords: TBrickCoords }; } diff --git a/modules/code-builder/src/brick/stories/components/BrickBlock.tsx b/modules/code-builder/src/brick/stories/components/BrickBlock.tsx index 406b4f8c..516bb38e 100644 --- a/modules/code-builder/src/brick/stories/components/BrickBlock.tsx +++ b/modules/code-builder/src/brick/stories/components/BrickBlock.tsx @@ -1,11 +1,11 @@ -import type { IBrickBlock, TBrickArgDataType, TBrickColor } from '@/@types/brick'; - import BrickWrapper from './BrickWrapper'; +import type { JSX } from 'react'; +import type { IBrickBlock, TBrickArgDataType, TBrickColor } from '@/@types/brick'; // ------------------------------------------------------------------------------------------------- export default function (props: { - Component: (props: { instance: IBrickBlock }) => JSX.Element; + Component: (props: { instance: IBrickBlock; visualIndicators?: JSX.Element }) => JSX.Element; prototype: new (params: { name: string; label: string; @@ -52,9 +52,71 @@ export default function (props: { name: '', }); + const VisualIndicators = () => ( + <> + {/* Overall Bounding Box of the Brick */} + + + {/* Right args bounding box */} + {Object.keys(instance.bBoxArgs).map((name, i) => { + const arg = instance.bBoxArgs[name]; + + return ( + + ); + })} + + {/* Top instruction notch bounding box */} + + + {/* Bottom instruction notch bounding box */} + + + {/* Top instruction notch inside nesting bounding box */} + + + ); + return ( + ); } diff --git a/modules/code-builder/src/brick/stories/components/BrickData.tsx b/modules/code-builder/src/brick/stories/components/BrickData.tsx index c8d4f7b4..217aa774 100644 --- a/modules/code-builder/src/brick/stories/components/BrickData.tsx +++ b/modules/code-builder/src/brick/stories/components/BrickData.tsx @@ -1,11 +1,11 @@ -import type { IBrickData, TBrickArgDataType, TBrickColor } from '@/@types/brick'; - import BrickWrapper from './BrickWrapper'; +import type { JSX } from 'react'; +import type { IBrickData, TBrickArgDataType, TBrickColor } from '@/@types/brick'; // ------------------------------------------------------------------------------------------------- export default function (props: { - Component: (props: { instance: IBrickData }) => JSX.Element; + Component: (props: { instance: IBrickData; visualIndicators?: JSX.Element }) => JSX.Element; prototype: new (params: { name: string; label: string; @@ -39,9 +39,34 @@ export default function (props: { name: '', }); + const VisualIndicators = () => ( + <> + {/* Overall Bounding Box of the Brick */} + + + {/* Left notch bounding box */} + + + ); + return ( + ); } diff --git a/modules/code-builder/src/brick/stories/components/BrickExpression.tsx b/modules/code-builder/src/brick/stories/components/BrickExpression.tsx index 396468f8..8d1a1b69 100644 --- a/modules/code-builder/src/brick/stories/components/BrickExpression.tsx +++ b/modules/code-builder/src/brick/stories/components/BrickExpression.tsx @@ -1,11 +1,11 @@ -import type { IBrickExpression, TBrickArgDataType, TBrickColor } from '@/@types/brick'; - import BrickWrapper from './BrickWrapper'; +import type { JSX } from 'react'; +import type { IBrickExpression, TBrickArgDataType, TBrickColor } from '@/@types/brick'; // ------------------------------------------------------------------------------------------------- export default function (props: { - Component: (props: { instance: IBrickExpression }) => JSX.Element; + Component: (props: { instance: IBrickExpression; visualIndicators?: JSX.Element }) => JSX.Element; prototype: new (params: { name: string; label: string; @@ -50,9 +50,51 @@ export default function (props: { name: '', }); + const VisualIndicators = () => ( + <> + {/* Overall Bounding Box of the Brick */} + + + {/* Right args bounding box */} + {Object.keys(instance.bBoxArgs).map((name, i) => { + const arg = instance.bBoxArgs[name]; + + return ( + + ); + })} + + {/* Left notch bounding box */} + + + ); + return ( + ); } diff --git a/modules/code-builder/src/brick/stories/components/BrickStatement.tsx b/modules/code-builder/src/brick/stories/components/BrickStatement.tsx index 0e53fff7..b68c3969 100644 --- a/modules/code-builder/src/brick/stories/components/BrickStatement.tsx +++ b/modules/code-builder/src/brick/stories/components/BrickStatement.tsx @@ -1,11 +1,11 @@ -import type { IBrickStatement, TBrickArgDataType, TBrickColor } from '@/@types/brick'; - import BrickWrapper from './BrickWrapper'; +import type { JSX } from 'react'; +import type { IBrickStatement, TBrickArgDataType, TBrickColor } from '@/@types/brick'; // ------------------------------------------------------------------------------------------------- export default function (props: { - Component: (props: { instance: IBrickStatement }) => JSX.Element; + Component: (props: { instance: IBrickStatement; visualIndicators?: JSX.Element }) => JSX.Element; prototype: new (params: { name: string; label: string; @@ -52,9 +52,61 @@ export default function (props: { name: '', }); + const VisualIndicators = () => ( + <> + {/* Overall Bounding Box of the Brick */} + + + {/* Right args bounding box */} + {Object.keys(instance.bBoxArgs).map((name, i) => { + const arg = instance.bBoxArgs[name]; + + return ( + + ); + })} + + {/* Top instruction notch bounding box */} + + + {/* Bottom instruction notch bounding box */} + + + ); + return ( + ); } diff --git a/modules/singer/playground/pages/Voice.tsx b/modules/singer/playground/pages/Voice.tsx index 94ab7ff4..b94b744f 100644 --- a/modules/singer/playground/pages/Voice.tsx +++ b/modules/singer/playground/pages/Voice.tsx @@ -1,7 +1,7 @@ import { Voice } from '@/core/voice'; import SynthUtils from '@/core/synthUtils'; import * as Tone from 'tone'; -import { _state, noteValueToSeconds, _defaultSynth, _polySynth } from '@/singer'; +// import { _state, noteValueToSeconds, _defaultSynth, _polySynth } from '@/singer'; import { setupSynthUtils } from '@/core/synthUtils'; import { injected } from '@/index'; @@ -18,26 +18,27 @@ await (async () => { 'audio.piano': getAsset('audio.piano')!, 'audio.snare': getAsset('audio.snare')!, }; - })(); function _getSynth(synthType: string) { - switch (synthType) { - case 'polysynth': - return _polySynth; - } - return _defaultSynth; + synthType; + + // switch (synthType) { + // case 'polysynth': + // return _polySynth; + // } + // return _defaultSynth; } async function playSynth(synthType: string) { await Tone.start(); - const synth = _getSynth(synthType); - _state.notesPlayed = 0; + // const synth = _getSynth(synthType); + // _state.notesPlayed = 0; console.log('playing c4 using', synthType); - const now = Tone.now(); - let offset = noteValueToSeconds(_state.notesPlayed); - synth.triggerAttackRelease('c4', '4n', now + offset); - _state.notesPlayed += 4; + // const now = Tone.now(); + // let offset = noteValueToSeconds(_state.notesPlayed); + // synth.triggerAttackRelease('c4', '4n', now + offset); + // _state.notesPlayed += 4; } async function voice() { @@ -61,7 +62,6 @@ async function voice() { // } // }).toDestination(); - // _state.notesPlayed = 0; // const now = Tone.now(); // let offset = noteValueToSeconds(_state.notesPlayed); diff --git a/package-lock.json b/package-lock.json index 88f0289d..8e2766f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -141,7 +141,9 @@ "name": "@sugarlabs/mb4-module-code-builder", "version": "4.2.0", "dependencies": { - "@sugarlabs/musicblocks-v4-lib": "^0.2.0" + "@sugarlabs/musicblocks-v4-lib": "^0.2.0", + "react-aria": "^3.26.0", + "zustand": "^4.3.9" }, "peerDependencies": { "react": "~18.x", @@ -2969,6 +2971,50 @@ "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", "dev": true }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.0.tgz", + "integrity": "sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==", + "dependencies": { + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.6.0.tgz", + "integrity": "sha512-yT6at0qc0DANw9qM/TU8RZaCtfDXtj4pZM/IC2WnVU80yAcliS3KVDiuUt4jSQAeFL9JS5bc2hARnFmjPdA6qw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.17.0", + "@formatjs/icu-skeleton-parser": "1.6.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.6.0.tgz", + "integrity": "sha512-eMmxNpoX/J1IPUjPGSZwo0Wh+7CEvdEMddP2Jxg1gQJXfGfht/FdW2D5XDFj3VMbOTUQlDIdZJY7uC6O6gjPoA==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.17.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.4.0.tgz", + "integrity": "sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -3017,6 +3063,39 @@ "node": ">=6.9.0" } }, + "node_modules/@internationalized/date": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.3.0.tgz", + "integrity": "sha512-qfRd7jCIgUjabI8RxeAsxhLDRS1u8eUPX96GB5uBp1Tpm6YY6dVveE7YwsTEV6L4QOp5LKFirFHHGsL/XQwJIA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.1.tgz", + "integrity": "sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.2.1.tgz", + "integrity": "sha512-hK30sfBlmB1aIe3/OwAPg9Ey0DjjXvHEiGVhNaOiBJl31G0B6wMaX8BN3ibzdlpyRNE9p7X+3EBONmxtJO9Yfg==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.1.1.tgz", + "integrity": "sha512-fvSr6YRoVPgONiVIUhgCmIAlifMVCeej/snPZVzbzRPxGpHl3o1GRe+d/qh92D8KhgOciruDUH8I5mjdfdjzfA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -5110,230 +5189,1601 @@ "integrity": "sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg==", "dev": true, "dependencies": { - "nx": "15.9.4" + "nx": "15.9.4" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", + "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", + "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "dev": true, + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", + "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.41.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", + "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", + "dev": true, + "dependencies": { + "@octokit/types": "^8.1.1", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "dev": true + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", + "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", + "dev": true, + "dependencies": { + "@octokit/core": "^4.0.0", + "@octokit/plugin-paginate-rest": "^3.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.3.tgz", + "integrity": "sha512-rmkApAflZm7Finn3vxLGv7MbsMaPo5Bn7/lf8GBztNfzmLWP/dAA5bgvi1sj1T6sWJOuFJT8u04ImUwBCLh8cQ==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/link": "^3.5.2", + "@react-aria/utils": "^3.18.0", + "@react-types/breadcrumbs": "^3.6.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/button": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.8.0.tgz", + "integrity": "sha512-QdvXTQgn+QEWOHoMbUIPXSBIN5P2r1zthRvqDJMTCzuT0I6LbNAq7RoojEbRrcn0DbTa/nZPzOOYsZXjgteRdw==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/toggle": "^3.6.0", + "@react-types/button": "^3.7.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.4.0.tgz", + "integrity": "sha512-Ly+9KsOXWZTlOYDZeIYCWNuMZg7ZiJC497Z4U3SqaWmDsZaqwU8ZnLmZ1xUWq1cYvK9rnWPnnpby1JUgttY9RA==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/utils": "^3.18.0", + "@react-stately/calendar": "^3.3.0", + "@react-types/button": "^3.7.3", + "@react-types/calendar": "^3.3.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.9.2.tgz", + "integrity": "sha512-gpvC+EnrxcQ9wupnoXsIDUmhSeBpxWtfRIYYypn6Ta6NY9Ubkh4H/8xE9/27nhJltHf5rzEcLfKg4QlEftab/w==", + "dependencies": { + "@react-aria/label": "^3.6.0", + "@react-aria/toggle": "^3.6.2", + "@react-aria/utils": "^3.18.0", + "@react-stately/checkbox": "^3.4.3", + "@react-stately/toggle": "^3.6.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.6.2.tgz", + "integrity": "sha512-SWbA2vH26zcrZDbXdPJtZNR6ywYPdf4LU8/7IKLs1Iv7mrlICr9Cmeywiu2RuFRosuR1hGSy1hibBTgPO6V/sw==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/listbox": "^3.10.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/menu": "^3.10.0", + "@react-aria/overlays": "^3.15.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/textfield": "^3.10.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/collections": "^3.9.0", + "@react-stately/combobox": "^3.5.2", + "@react-stately/layout": "^3.12.2", + "@react-types/button": "^3.7.3", + "@react-types/combobox": "^3.6.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.5.0.tgz", + "integrity": "sha512-oUfLbfFwe5XgS2Womx0t0gA8797mGQjjxZAGa9lGSNGFx26NOfhWBh24lAYQzQnZ5ot/DxDSJmzLjN6WEWv9pQ==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@internationalized/number": "^3.2.1", + "@internationalized/string": "^3.1.1", + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/spinbutton": "^3.5.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/datepicker": "^3.5.0", + "@react-types/button": "^3.7.3", + "@react-types/calendar": "^3.3.0", + "@react-types/datepicker": "^3.4.0", + "@react-types/dialog": "^3.5.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.3.tgz", + "integrity": "sha512-wXpAqnt6TtR4X/5Xk5HCTBM0qyPcF2bXFQ5z2gSwl1olgoQ5znZEgMqMLbMmwb4dsWGGtAueULs6fVZk766ygA==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/overlays": "^3.15.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/overlays": "^3.6.0", + "@react-types/dialog": "^3.5.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/dnd": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.3.0.tgz", + "integrity": "sha512-rk46inb6XdVR5cIFzuMoqUfdqgqb+GHOIFGDiwhHYONeCdvQKD31ztQZ78yITORmPOmjrnn6r2V3GQ6Oz54WSQ==", + "dependencies": { + "@internationalized/string": "^3.1.1", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/overlays": "^3.15.0", + "@react-aria/utils": "^3.18.0", + "@react-aria/visually-hidden": "^3.8.2", + "@react-stately/dnd": "^3.2.2", + "@react-types/button": "^3.7.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.13.0.tgz", + "integrity": "sha512-9DW7RqgbFWiImZmkmTIJGe9LrQBqEeLYwlKY+F1FTVXerIPiCCQ3JO3ESEa4lFMmkaHoueFLUrq2jkYjRNqoTw==", + "dependencies": { + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0", + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.8.0.tgz", + "integrity": "sha512-7z1xFAbLPgUPROrXwuJk94STQPQ/K8rCLshhwTAg70uFVCPNnrm3jxQ6vE/lddPB+yss9Ee33GwSCrEXdzJkTw==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/collections": "^3.9.0", + "@react-stately/grid": "^3.7.0", + "@react-stately/selection": "^3.13.2", + "@react-stately/virtualizer": "^3.6.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/grid": "^3.1.8", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/gridlist": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.5.0.tgz", + "integrity": "sha512-xBCWyTtJNdUKSSUWXPMEi4lTnM1NRUlEJNi0eTNPIQVZOwQ7AgkEOD6uI+C6mgBL8q0oJwyIAfhK3zdwUCQSPg==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/grid": "^3.8.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/list": "^3.9.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.8.0.tgz", + "integrity": "sha512-zeohg7d66zPLnGQl1rJuVJJ/gP7GmUMxEKIFRwE+rg2u02ldKxJMSb8QKGo605QpFWqo7CuuWYvKJP5Mj+Em/w==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@internationalized/message": "^3.1.1", + "@internationalized/number": "^3.2.1", + "@internationalized/string": "^3.1.1", + "@react-aria/ssr": "^3.7.0", + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.16.0.tgz", + "integrity": "sha512-vXANFKVd6ONqNw8U+ZWbSA8lrduCOXw7cWsYosTa5dZ24ZJfRfbhlvRe8CaAKMhB/rOOmvTLaAwdIPia6JtLDg==", + "dependencies": { + "@react-aria/ssr": "^3.7.0", + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/label": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.6.0.tgz", + "integrity": "sha512-o6Z9YAbvywj/b995HOl7fS9vf8FVmhWiJkKwFyCi/M1A7FXBqgtPcdPDNHaaKOhvQcwnLs4iMVMJwZdn/dLVDA==", + "dependencies": { + "@react-aria/utils": "^3.18.0", + "@react-types/label": "^3.7.4", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/link": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.5.2.tgz", + "integrity": "sha512-CCFP11Uietro6TUZpWBoq3Ql/6qss/ODC5XM6oNxckj72IHruFIj8V7Y0tL5x0aE6h38hlKcDf8NCxkQqz2edg==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-types/link": "^3.4.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.10.0.tgz", + "integrity": "sha512-4NelMDZAPoy2W4uoKZsMpdrC6XJQiZU+vpuhnzUT1eWTneDsEHKHSHQFtymoe8VrUEPrCV16EeMk1vRVvjCfAw==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/collections": "^3.9.0", + "@react-stately/list": "^3.9.0", + "@react-types/listbox": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.3.1.tgz", + "integrity": "sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.10.0.tgz", + "integrity": "sha512-zOOOXvx21aGSxZsXvLa3NV48hLk0jBC/zu5WZHT0Mo/wAe0+43f8p/U3AT8Gc4WnxYbIestcdLaIwgeagSoLtQ==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/overlays": "^3.15.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/collections": "^3.9.0", + "@react-stately/menu": "^3.5.3", + "@react-stately/tree": "^3.7.0", + "@react-types/button": "^3.7.3", + "@react-types/menu": "^3.9.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/meter": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.3.tgz", + "integrity": "sha512-1RUr93cNfMqTfyGtQ+SqFYLqlOqza6TEmXmtdCExPuZVRUZRjQRkqPoYuL8CPwHKlU4sbSlLiNeUu/HhV6pyTg==", + "dependencies": { + "@react-aria/progress": "^3.4.3", + "@react-types/meter": "^3.3.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/numberfield": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.6.0.tgz", + "integrity": "sha512-LbtRS/JciPicYLjqAP87gufInzZ2rlOQlKu0tQK8l/Hwc2cPOWUldDXbrGgxrXwbMxfEASmfI6qYz8uhTGmIyw==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/spinbutton": "^3.5.0", + "@react-aria/textfield": "^3.10.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/numberfield": "^3.5.0", + "@react-types/button": "^3.7.3", + "@react-types/numberfield": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@react-types/textfield": "^3.7.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.15.0.tgz", + "integrity": "sha512-MeLn74GvXZfi881NSx5sSd5eTduki/PMk4vPvMNp2Xm+9nGHm0FbGu2GMIGgarYy5JC7l/bOO7H01YrS4AozPg==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/ssr": "^3.7.0", + "@react-aria/utils": "^3.18.0", + "@react-aria/visually-hidden": "^3.8.2", + "@react-stately/overlays": "^3.6.0", + "@react-types/button": "^3.7.3", + "@react-types/overlays": "^3.8.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.3.tgz", + "integrity": "sha512-u8aUrnnQGsRZWx5vBfBhf70TeGeN/gEJzcthef5YDUQZG8O2IDhzR1GLqBmn1RvdcSDvBdhRSpMXd+6bL1WzGw==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/label": "^3.6.0", + "@react-aria/utils": "^3.18.0", + "@react-types/progress": "^3.4.1", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.6.2.tgz", + "integrity": "sha512-R7vyh0G2HaUe0+SGa/LDMYuGnNC/15L6yfuljpP8ZUDPw9bR/6BuE1BDCI0ov1EXQ1lQ/vcvZMbf78OC72vPrg==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/radio": "^3.8.2", + "@react-types/radio": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/searchfield": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.5.3.tgz", + "integrity": "sha512-OqkXTZrjesqRxBR0WIOh0cezwmuXDQpsdua9nnGj0+8BIGCHuxvUOpw1HA3eTsf4AbZfygngC7pMT1lOR21upg==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/textfield": "^3.10.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/searchfield": "^3.4.3", + "@react-types/button": "^3.7.3", + "@react-types/searchfield": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/select": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.11.0.tgz", + "integrity": "sha512-UEYhw7wK4XoPMVbTa3UykPcri9GIV777WvXeKEykS1nMbJzu1I1LUE5py4ymhaI7DbpZ+gWZPTA0iot8IYQOWQ==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/listbox": "^3.10.0", + "@react-aria/menu": "^3.10.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-aria/visually-hidden": "^3.8.2", + "@react-stately/select": "^3.5.2", + "@react-types/button": "^3.7.3", + "@react-types/select": "^3.8.1", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.16.0.tgz", + "integrity": "sha512-qQ4X0+wtLz0+qjsoj1T0hVehA0CbZdu0Ax+lCzWmj+ZDivtdeNpVQl+K0yj9p95MnzLgIbnY7zU2zDQrYqKDOQ==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/collections": "^3.9.0", + "@react-stately/selection": "^3.13.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/separator": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.3.3.tgz", + "integrity": "sha512-kBGEXSSUiJLPS9foS5/7jgzpdp3/Yb1aMvVuvRGuNxDUsPAmvaYUT3qZ44Zf3hoxKfRFb4452KcoZ03w3Jfcvg==", + "dependencies": { + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.5.0.tgz", + "integrity": "sha512-7qvzWZzwSww/+kLiSC8UJo4csHo8ndFzpzE2jUOom+hKMFomg5gIF4vqJI3ieWwF6rm6bbLmhxN4GvmNebVMwA==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/radio": "^3.8.2", + "@react-stately/slider": "^3.4.0", + "@react-types/radio": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@react-types/slider": "^3.5.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.5.0.tgz", + "integrity": "sha512-WWLPiJd2nbv17dSbcbOm+TXlLO9ZIEA86ft/CTkvRYRG48kDn++4f16QcA0Gr+7dKdLQGbKkCf61jMJ3q8t5Hw==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/utils": "^3.18.0", + "@react-types/button": "^3.7.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.7.0.tgz", + "integrity": "sha512-bfufjg4ESE5giN+Fxj1XIzS5f/YIhqcGc+Ve+vUUKU8xZ8t/Xtjlv8F3kjqDBQdk//n3mluFY7xG1wQVB9rMLQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.5.2.tgz", + "integrity": "sha512-mhV4Ip3t241s7gp4ETDe61AsSDox5TZXkiWt8add65p/LMESYBju9hGtbrxkMNCW62AuYCTAIadHoEOpy9HIIg==", + "dependencies": { + "@react-aria/toggle": "^3.6.2", + "@react-stately/toggle": "^3.6.0", + "@react-types/switch": "^3.3.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/table": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.10.0.tgz", + "integrity": "sha512-N42Ill9fdjeWKC/516fPMpPa79B0c+teFJ/fhcROLFrlwotgLKwndIG/InkE1L6FKeiJ8JL33FgUnxfRGafa8Q==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/grid": "^3.8.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/live-announcer": "^3.3.1", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-aria/visually-hidden": "^3.8.2", + "@react-stately/collections": "^3.9.0", + "@react-stately/table": "^3.10.0", + "@react-stately/virtualizer": "^3.6.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/grid": "^3.1.8", + "@react-types/shared": "^3.18.1", + "@react-types/table": "^3.7.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.6.1.tgz", + "integrity": "sha512-P/P3HA+b1Q917hVvXn1kzFl3dQnMTwYR8JKY5gjfjLQsAAEfJzSO3wLR0vNSp6Cz2FTAVCH4yzwP1G+bRLZVnw==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/list": "^3.9.0", + "@react-stately/tabs": "^3.5.0", + "@react-types/shared": "^3.18.1", + "@react-types/tabs": "^3.3.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tag": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.1.0.tgz", + "integrity": "sha512-N3h34k23jK7xuMh4eMDJoUG1xsNUw6zz+r9mmSMMLCxU38w+RH27ywEpKheW25M7LhfggqTjbjnPOpPpBnrENQ==", + "dependencies": { + "@react-aria/gridlist": "^3.5.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/list": "^3.9.0", + "@react-types/button": "^3.7.3", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.10.0.tgz", + "integrity": "sha512-TYFgDTlxrljakD0TGOkoSCvot9BfVCZSrTKy3+/PICSTkPIzXThLIQmpX6yObLMXQSNW6SvBCl6CMetJMJHcbw==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/label": "^3.6.0", + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@react-types/textfield": "^3.7.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.6.2.tgz", + "integrity": "sha512-bRz/ybajeLEsJLt1ARRL7CtWs6bwvkNLWy/wpJnH2TJ3+lMpH+EKbWBVJoAP7wQ5jIVVpxKJLhpf6w6x8ZLtdw==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/toggle": "^3.6.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/shared": "^3.18.1", + "@react-types/switch": "^3.3.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.6.0.tgz", + "integrity": "sha512-D38C7M58ZXWmY2+TXDczbbYRj9/KhIDyE/rLI0KhZR/iXDOJvmB9DT8HZuZLPsntq4Wl6mpmfPggT/R91nvR2Q==", + "dependencies": { + "@react-aria/focus": "^3.13.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/tooltip": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@react-types/tooltip": "^3.4.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.18.0.tgz", + "integrity": "sha512-eLs0ExzXx/D3P9qe6ophJ87ZFcI1oRTyRa51M59pCad7grrpk0gWcYrBjMwcR457YWOQQWCeLuq8QJl2QxCW6Q==", + "dependencies": { + "@react-aria/ssr": "^3.7.0", + "@react-stately/utils": "^3.7.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0", + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.2.tgz", + "integrity": "sha512-MFTqqSvPfc8u3YlzNfQ3ITX4eVQpZDiSqLPKj3Zyr86CKlba5iG8WGqjiJhD2GNHlvmcF/mITXTsNzm0KxFE7g==", + "dependencies": { + "@react-aria/interactions": "^3.16.0", + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0", + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.3.0.tgz", + "integrity": "sha512-fnqdxCTlkikgldEyW8ciPNUWhqaUsQKTx6X6XGob6VCwK59k0LmdlgZX+dXj0q2ezC+w4lnvz8TzpoRQ7GY8lw==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@react-stately/utils": "^3.7.0", + "@react-types/calendar": "^3.3.0", + "@react-types/datepicker": "^3.4.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.4.3.tgz", + "integrity": "sha512-TEd50vrUTHZWt8qO7ySLG2MlWJbsCvyx+pA1VhLJw6hRfjqorAjmCcpV2sEdu3EkLG7hA/Jw+7iBmGPlxmBN6A==", + "dependencies": { + "@react-stately/toggle": "^3.6.0", + "@react-stately/utils": "^3.7.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.9.0.tgz", + "integrity": "sha512-CBpXSKmCpbIFpIToVFlzo2R1/Cj+dcU8gWw2KfPyyJX+2wHKkDIvtK01EAytDLX/vkE8O+fD5a7qMZ3pf8gpeA==", + "dependencies": { + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.5.2.tgz", + "integrity": "sha512-vMp3/xWv9a3DglTvvcQsJup3zZkmIANbf799j21Kc6Z4DXs+ohU81Qg5q9Z/5QuTEPsJFFv7vKXtb+VlP/TK2g==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/list": "^3.9.0", + "@react-stately/menu": "^3.5.3", + "@react-stately/select": "^3.5.2", + "@react-stately/utils": "^3.7.0", + "@react-types/combobox": "^3.6.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.5.0.tgz", + "integrity": "sha512-GPscIz4jP9hDa1ChgMAWAt8g8mCpjILmSgfyuIZXegPZfa3ryKuQutYU/JGJrBom1xablAgeHIN1AWpve+4f1w==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@internationalized/string": "^3.1.1", + "@react-stately/overlays": "^3.6.0", + "@react-stately/utils": "^3.7.0", + "@react-types/datepicker": "^3.4.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/dnd": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.2.2.tgz", + "integrity": "sha512-1Eb4ZGh2xzTLDBV/Y+c/UoOvd2A9rglj+5o1Vo7HuIVWWc8tDJXq499B7rp/5JPcfQspF5OI4h08OWZFlPd/Ig==", + "dependencies": { + "@react-stately/selection": "^3.13.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.7.0.tgz", + "integrity": "sha512-3eb7+7p9Xh/+luUOyieY2bM4CsARA8WnRB7c2++gh4dh9AEpZV4VGICGTe35+dJYr+9pbYQqVMEcEFUOaJJzZw==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/selection": "^3.13.2", + "@react-types/grid": "^3.1.8", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/layout": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-3.12.2.tgz", + "integrity": "sha512-9AGA11G5+Uo/mQoJR90lbqTR4+UFSl13jQMtqom/BYxkFGrHh3gWSUWEmg2h+n1Qa1q+oJjgaeQ9bxqlrR/wpQ==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/table": "^3.10.0", + "@react-stately/virtualizer": "^3.6.0", + "@react-types/grid": "^3.1.8", + "@react-types/shared": "^3.18.1", + "@react-types/table": "^3.7.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/list": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.9.0.tgz", + "integrity": "sha512-9DNV02zFEkJG38AtHyhvGMfpJQGwV0KMyMObs+KEujzCh+rmHdTu1rWdjzLw1ve+ecESK8UMsF4Kt6wwO0Qi6g==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/selection": "^3.13.2", + "@react-stately/utils": "^3.7.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.5.3.tgz", + "integrity": "sha512-RFgwVD/4BgTtJkexi1WaHpAEkQWZPvpyri0LQUgXWVqBf9PpjB8wigF3XBLMDNkL+YXE0QtzQZBNS1nJECf7rg==", + "dependencies": { + "@react-stately/overlays": "^3.6.0", + "@react-stately/utils": "^3.7.0", + "@react-types/menu": "^3.9.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/numberfield": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.5.0.tgz", + "integrity": "sha512-2R39hXQpQzoVDl1r3TZDKUEKf6lHbhiOpcBOYTPOne+YJOyMXQ6PnXAOTVuIcgTNdagukhXQVoDYH2B/1FvJOA==", + "dependencies": { + "@internationalized/number": "^3.2.1", + "@react-stately/utils": "^3.7.0", + "@react-types/numberfield": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/overlays": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.0.tgz", + "integrity": "sha512-0Bgy4xwCXKM+jkHAGJMN19ZFXNgKstf6qJozfH79j3E5erY30ZStwT7gbAnwv112zFUQLHBKo+3wJTGWuHgs8Q==", + "dependencies": { + "@react-stately/utils": "^3.7.0", + "@react-types/overlays": "^3.8.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.8.2.tgz", + "integrity": "sha512-tjlXask1IEGzzXwdc495K+wsHhyVhtaMhAeTbrdTD1a1fdg2g/jA0vWhN/KGO/CpnZT4vXGjJcY686Rmlrt9EQ==", + "dependencies": { + "@react-stately/utils": "^3.7.0", + "@react-types/radio": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/searchfield": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.4.3.tgz", + "integrity": "sha512-mTdbWGpOA7foZJwkiR0AP5beh66I1feHMQ9/7/3lR4ETqLQ29vVXte+jc3+RrlFy+Adup0Ziwzs3DMfMZ0rN8Q==", + "dependencies": { + "@react-stately/utils": "^3.7.0", + "@react-types/searchfield": "^3.4.2", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/select": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.5.2.tgz", + "integrity": "sha512-hIDAXFNg+q8rGQy5YKEaOz4NoWsckoQoi18vY8u6VsFUIhfYaYL76x6zKbTwekZLYuroifH7Fv81tBvRZmXikQ==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/list": "^3.9.0", + "@react-stately/menu": "^3.5.3", + "@react-stately/selection": "^3.13.2", + "@react-stately/utils": "^3.7.0", + "@react-types/select": "^3.8.1", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.13.2.tgz", + "integrity": "sha512-rVnseneG9XWuS0+JEsa0EhRfTZsupm9JiEuZHZ19YeLewjVdFpjgBMDZb8ZYoyilNXVjyUwaoq94FsOXotsg9w==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/utils": "^3.7.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/slider": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.4.0.tgz", + "integrity": "sha512-VvGJ1XkFIIEXP0eg9xqK/NztimBCSRmEqLgqlwzeDJAtuFXZzPRgJGrodGnqGmhoLsTFaY8YleLh/1hgf6rO0g==", + "dependencies": { + "@react-aria/i18n": "^3.8.0", + "@react-aria/utils": "^3.18.0", + "@react-stately/utils": "^3.7.0", + "@react-types/shared": "^3.18.1", + "@react-types/slider": "^3.5.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/table": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.10.0.tgz", + "integrity": "sha512-LDF97lZIkCDYNFw5Yz1eREedO9QerPDchxXUXlPVyjwLiZ4ADlhz6W/NTq6gm2PgrHljY/0+Kd5zEgVySLMTEw==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/grid": "^3.7.0", + "@react-stately/selection": "^3.13.2", + "@react-types/grid": "^3.1.8", + "@react-types/shared": "^3.18.1", + "@react-types/table": "^3.7.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tabs": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.5.0.tgz", + "integrity": "sha512-N6B0+ZyW6mbmY/kHl0GKGj/i7MtA141A7yYJFSLDdvq1Hb2x7V1Y6gfl40FkSW4W9y3oQtKU+rTxV0EyjEJMWQ==", + "dependencies": { + "@react-stately/list": "^3.9.0", + "@react-stately/utils": "^3.7.0", + "@react-types/shared": "^3.18.1", + "@react-types/tabs": "^3.3.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.6.0.tgz", + "integrity": "sha512-w+Aqh78H9MLs0FDUYTjAzYhrHQWaDJ2zWjyg2oYcSvERES0+D0obmPvtJLWsFrJ8fHJrTmxd7ezVFBY9BbPeFQ==", + "dependencies": { + "@react-stately/utils": "^3.7.0", + "@react-types/checkbox": "^3.4.4", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tooltip": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.2.tgz", + "integrity": "sha512-tDkoYyEfdo44a3CoeiF794TFTs36d9faX0QvbR1QZ2KksjCMceOL5+26MlQjnhjEydYqw1X1YlTZbtMeor4uQw==", + "dependencies": { + "@react-stately/overlays": "^3.6.0", + "@react-stately/utils": "^3.7.0", + "@react-types/tooltip": "^3.4.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.7.0.tgz", + "integrity": "sha512-oXOjJwy/o3XSJyBkudiEvnjWzto2jy48kmGjHCJ+B7Hv+WcbN9o7iAaHv11lOqMXRSpuF9gqox4ZZCASG+smIQ==", + "dependencies": { + "@react-stately/collections": "^3.9.0", + "@react-stately/selection": "^3.13.2", + "@react-stately/utils": "^3.7.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.7.0.tgz", + "integrity": "sha512-VbApRiUV2rhozOfk0Qj9xt0qjVbQfLTgAzXLdrfeZSBnyIgo1bFRnjDpnDZKZUUCeGQcJJI03I9niaUtY+kwJQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.6.0.tgz", + "integrity": "sha512-f78BQT9ZSD5Hpqf6axRoNQJFqV+JjMSV2VixMfhIAcqi/fn8rEN2j3g4SPdFzTtFf2FR3+AKdBFu5tsgtk1Tgw==", + "dependencies": { + "@react-aria/utils": "^3.18.0", + "@react-types/shared": "^3.18.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.6.0.tgz", + "integrity": "sha512-EnZk/f59yMQUmH2DW21uo3ajQ7nLEZ/sIMSfEZYP69CFe1by0RKi9aFRjJSrYjxRC0PSHTVPTjIG72KeBSsUGA==", + "dependencies": { + "@react-types/link": "^3.4.3", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/button": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.7.3.tgz", + "integrity": "sha512-Fz1t/kYinHDunmct3tADD2h3UDBPZUfRE+zCzYiymz0g+v/zYHTAqnkWToTF9ptf8HIB5L2Z2VFYpeUHFfpWzg==", + "dependencies": { + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.3.0.tgz", + "integrity": "sha512-5Qga+eixj+PembMwzcJmQlxif4XhSJJ54JcoyYHVf6mYLw3aE81Jc52OBi1FEWBJOW9YVOTk7VbWPFFF/oBI8A==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.4.4.tgz", + "integrity": "sha512-rJNhbW4R9HTvdbF2oTZmqGiZ/WVP3/XsU4gae7tfdhSYjG+5T5h9zau1vRhz++zwKn57wfcyNn6a83GDhhgkVw==", + "dependencies": { + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.6.2.tgz", + "integrity": "sha512-qitu/W3Z3/ihyqocy+8n4HZKRXF5JTMHl1ug3rKps5yCNnVdkWwjPFPM6w180c9QjquThNY3o947LZ1v59qJ4A==", + "dependencies": { + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.4.0.tgz", + "integrity": "sha512-gQmbeNdVPXpaX8XsvxQb6nRLQZNlsMnDLVVpagVno7bifz2cdbthLfMe124nNT/Xr+JXolP+BtlYlZ7IRQVxdA==", + "dependencies": { + "@internationalized/date": "^3.3.0", + "@react-types/calendar": "^3.3.0", + "@react-types/overlays": "^3.8.0", + "@react-types/shared": "^3.18.1" }, - "bin": { - "tao": "index.js" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", - "dev": true, - "engines": { - "node": ">= 14" + "node_modules/@react-types/dialog": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.3.tgz", + "integrity": "sha512-iTdg+UZiJpJe7Rnu9eILf8Hcd9li0Kg2eg8ba8dIc1O++ymqPmrdPWj9wj1JB9cl94E2Yg4w3W5YINiLXkdoeA==", + "dependencies": { + "@react-types/overlays": "^3.8.0", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", - "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", - "dev": true, + "node_modules/@react-types/grid": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.1.8.tgz", + "integrity": "sha512-NKk4pDbW2QXJOYnDSAYhta81CGwXOc/9tVw2WFs+1wacvxeKmh1Q+n36uAFcIdQOvVRqeGTJaYiqLFmF3fC3tA==", "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dev": true, + "node_modules/@react-types/label": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.7.4.tgz", + "integrity": "sha512-SfTqPRI39GE3GFD5ZGYEeX9jXQrNqDeaaI36PJhnbgGVFz96oVVkhy9t9c2bMHcbhLLENYIHMzxrvVqXS07e7A==", "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/graphql": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", - "dev": true, + "node_modules/@react-types/link": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.4.3.tgz", + "integrity": "sha512-opKfkcaeV0cir64jPcy7DS0BrmdfuWMjua+MSeNv7FfT/b65rFgPfAOKZcvLWDsaxT5HYb7pivYPBfjKqHsQKw==", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" + "@react-aria/interactions": "^3.16.0", + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true - }, - "node_modules/@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", - "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", - "dev": true, + "node_modules/@react-types/listbox": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.4.2.tgz", + "integrity": "sha512-qg980T+tl15pqgfuK8V6z+vsvsIrJEEPxcupQXP3T1O0LxWxJDakZHF0lV9qwfyB9XlnVSMZfkjDiZp9Wgf8QQ==", "dependencies": { - "@octokit/types": "^6.41.0" - }, - "engines": { - "node": ">= 14" + "@react-types/shared": "^3.18.1" }, "peerDependencies": { - "@octokit/core": ">=4" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true + "node_modules/@react-types/menu": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.2.tgz", + "integrity": "sha512-OIuEOGqo8gHaP4k3Ua+RvuPN2/3Sgcl30dNFIGaK7hra4eWxOUu8TTC+/Quy6xozR/SvFhqCLCoMKixy6MblWQ==", + "dependencies": { + "@react-types/overlays": "^3.8.0", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, + "node_modules/@react-types/meter": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.3.2.tgz", + "integrity": "sha512-o21Zz+3LNjvBueMap+q2otGp5t2Xeb/lIMM4Y+v8j5XO+bLcHaAjdQB/TgKRe8iYFm3IqwpVtV9A38IWDtpLRQ==", "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "@react-types/progress": "^3.4.1", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, + "node_modules/@react-types/numberfield": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.4.2.tgz", + "integrity": "sha512-SGzuuFf5wCSRPvpV+bnykiXSIt8pkpBBVp8tlygB66pQSBV7VLdUvWGohaayPSM+3Z+WkU+osgzYtGq5wh+C3Q==", + "dependencies": { + "@react-types/shared": "^3.18.1" + }, "peerDependencies": { - "@octokit/core": ">=3" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", - "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", - "dev": true, + "node_modules/@react-types/overlays": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.0.tgz", + "integrity": "sha512-0JxwUW3xwXjsT+nVI5dVE1KUm8QKxnQj9vjqgsazX213+klRd/QdeuFJgcbxzCVFOS/mLkP4o/ATjxt4+1eQsA==", "dependencies": { - "@octokit/types": "^8.1.1", - "deprecation": "^2.3.1" + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/progress": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.4.1.tgz", + "integrity": "sha512-Y6cTvvJjbfFBeB7Zb3PizhhO3+YLWXpIP8opto15RWu11ktgZVMUgsnlsJgE3dFeoZ7UHwXdCYf8JOzBw5VPHA==", + "dependencies": { + "@react-types/shared": "^3.18.1" }, "peerDependencies": { - "@octokit/core": ">=3" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", - "dev": true + "node_modules/@react-types/radio": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.4.2.tgz", + "integrity": "sha512-SE6sjZjZbyuJMJNNdlhoutVr+QFRt1Vz7DZj4UaOswW5SD/Xb+xFdW8i6ETKdRN17am/5SC89ltWe0R3q0pVkA==", + "dependencies": { + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", - "dev": true, + "node_modules/@react-types/searchfield": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.4.2.tgz", + "integrity": "sha512-HQm++hIXVfEbjbRey6hYV/5hLEO6gtwt4Mft3u5I5BiT7yoQqQAD/8z9S8aUXDUU9KTrAKfL1DwrFQSkOsCWJA==", "dependencies": { - "@octokit/openapi-types": "^14.0.0" + "@react-types/shared": "^3.18.1", + "@react-types/textfield": "^3.7.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dev": true, + "node_modules/@react-types/select": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.8.1.tgz", + "integrity": "sha512-ByVKKwgpE3d08jI+Ibuom/qphlBiDKpVMwXgFgVZRAN2YvVrsix8arSo7kmXtzekz91qqDBqtt7DBCfT0E1WKw==", "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dev": true, + "node_modules/@react-types/shared": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.18.1.tgz", + "integrity": "sha512-OpTYRFS607Ctfd6Tmhyk6t6cbFyDhO5K+etU35X50pMzpypo1b7vF0mkngEeTc0Xwl0e749ONZNPZskMyu5k8w==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/slider": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.5.1.tgz", + "integrity": "sha512-8+AMNexx7q7DqfAtQKC5tgnZdG/tIwG2tcEbFCfAQA09Djrt/xiMNz+mc7SsV1PWoWwVuSDFH9QqKPodOrJHDg==", "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/rest": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", - "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", - "dev": true, + "node_modules/@react-types/switch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.3.2.tgz", + "integrity": "sha512-L0XF4J43Q7HCAJXqseAk6RMteK6k1jQ0zrG05r6lSCkxaS9fGUlgLTCiFUsf07x0ADH1Xyc7PwpfJjyEr5A4tA==", "dependencies": { - "@octokit/core": "^4.0.0", - "@octokit/plugin-paginate-rest": "^3.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + "@react-types/checkbox": "^3.4.4", + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dev": true, + "node_modules/@react-types/table": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.7.0.tgz", + "integrity": "sha512-tUSJPdU2eNjH/CRHs5pOCKDyQxzq8b1rJZHldvRK/GCW+B98debFOueYgw4+YGQ1E33IyzAwid+FXgY3wlZlHg==", "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "@react-types/grid": "^3.1.8", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@parcel/watcher": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", - "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", - "dev": true, - "hasInstallScript": true, + "node_modules/@react-types/tabs": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.0.tgz", + "integrity": "sha512-uXDVXBBppb+9S8bhxF7LZhgptrF5ll25SX8/jrpnXOR0jpihq6K3fkSe5M/OBnGsybuyVGN7+Np5v7UUYrM5SQ==", "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "@react-types/shared": "^3.18.1" }, - "engines": { - "node": ">= 10.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/textfield": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.7.2.tgz", + "integrity": "sha512-TsZTf1+4Ve9QHm6mbXr26uLOA4QtZPgyjYgYclL2nHoOl67algeQIFxIVfdlNIKFFMOw5BtC6Mer0I3KUWtbOQ==", + "dependencies": { + "@react-types/shared": "^3.18.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" + "node_modules/@react-types/tooltip": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.2.tgz", + "integrity": "sha512-jkuhT4KsU3ePfVrLeQv3Z2Vt0SwZmFNUoVIlK6Q1QR8H/TuWG+SDKjbwNLcCdeVfAXcJLbEfPDT2zyGeQTwNEA==", + "dependencies": { + "@react-types/overlays": "^3.8.0", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, "node_modules/@remix-run/router": { @@ -7839,6 +9289,14 @@ "sourcemap-codec": "^1.4.8" } }, + "node_modules/@swc/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@testing-library/dom": { "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", @@ -10796,6 +12254,14 @@ "node": ">=0.10.0" } }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/cmd-shim": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", @@ -15075,6 +16541,17 @@ "node": ">= 0.10" } }, + "node_modules/intl-messageformat": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.0.tgz", + "integrity": "sha512-AvojYuOaRb6r2veOKfTVpxH9TrmjSdc5iR9R5RgBwrDZYSmAAFVT+QLbW3C4V7Qsg0OguMp67Q/EoUkxZzXRGw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.17.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.6.0", + "tslib": "^2.4.0" + } + }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -21876,6 +23353,53 @@ "node": ">=0.10.0" } }, + "node_modules/react-aria": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.26.0.tgz", + "integrity": "sha512-G+dh25hEdDLfAGbKyahzasnyxXhd99y6xlMZjNtHoWB7wXod/9M3P3W6mdANvCEogxU28ATRdV1bv6A2JbuSYg==", + "dependencies": { + "@react-aria/breadcrumbs": "^3.5.3", + "@react-aria/button": "^3.8.0", + "@react-aria/calendar": "^3.4.0", + "@react-aria/checkbox": "^3.9.2", + "@react-aria/combobox": "^3.6.2", + "@react-aria/datepicker": "^3.5.0", + "@react-aria/dialog": "^3.5.3", + "@react-aria/dnd": "^3.3.0", + "@react-aria/focus": "^3.13.0", + "@react-aria/gridlist": "^3.5.0", + "@react-aria/i18n": "^3.8.0", + "@react-aria/interactions": "^3.16.0", + "@react-aria/label": "^3.6.0", + "@react-aria/link": "^3.5.2", + "@react-aria/listbox": "^3.10.0", + "@react-aria/menu": "^3.10.0", + "@react-aria/meter": "^3.4.3", + "@react-aria/numberfield": "^3.6.0", + "@react-aria/overlays": "^3.15.0", + "@react-aria/progress": "^3.4.3", + "@react-aria/radio": "^3.6.2", + "@react-aria/searchfield": "^3.5.3", + "@react-aria/select": "^3.11.0", + "@react-aria/selection": "^3.16.0", + "@react-aria/separator": "^3.3.3", + "@react-aria/slider": "^3.5.0", + "@react-aria/ssr": "^3.7.0", + "@react-aria/switch": "^3.5.2", + "@react-aria/table": "^3.10.0", + "@react-aria/tabs": "^3.6.1", + "@react-aria/tag": "^3.1.0", + "@react-aria/textfield": "^3.10.0", + "@react-aria/tooltip": "^3.6.0", + "@react-aria/utils": "^3.18.0", + "@react-aria/visually-hidden": "^3.8.2", + "@react-types/shared": "^3.18.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, "node_modules/react-colorful": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", @@ -25300,6 +26824,14 @@ "react-dom": "16.8.0 - 18" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -26902,6 +28434,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zustand": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.9.tgz", + "integrity": "sha512-Tat5r8jOMG1Vcsj8uldMyqYKC5IZvQif8zetmLHs9WoZlntTHmIoNM8TpLRY31ExncuUvUOXehd0kvahkuHjDw==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "immer": ">=9.0", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "node_modules/zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",