moved to ID pages for table editor

This commit is contained in:
Jonathan Summers-Muir committed 2024-06-24 13:32:24 +08:00
1 parent 065fd934e0
commit 72b71c8a94
11 files changed
+452 -17

No files matched your search

+1
View File
@@ -16,6 +16,7 @@
"next-themes": "^0.3.0",
"react": "^18",
"react-dom": "^18",
"react-hotkeys-hook": "^4.5.0",
"ui": "*"
},
"devDependencies": {
@@ -25,13 +25,7 @@ export default function SideNavMenuIcon({ product }: { product: any }) {
<Link
key={product.name}
href={overrideHref || `/${org}${product.href}`}
className={cn(
'relative',
'w-full',
'group/nav-item-anchor',
'flex flex-col items-center'
// isActive ? 'text-foreground' : 'text-foreground-50'
)}
className={cn('relative', 'w-full', 'group/nav-item-anchor', 'flex flex-col items-center')}
aria-current={isActive ? 'page' : undefined}
>
<div
@@ -39,7 +33,6 @@ export default function SideNavMenuIcon({ product }: { product: any }) {
'absolute top-1/2 transform -translate-y-1/2 h-2 w-[3px] rounded-r-full duration-500',
'group-hover/nav-item-anchor:bg-foreground-muted group-hover/nav-item-anchor:left-0',
isActive ? '!bg-foreground left-0 w-[5px] duration-100' : '-left-1',
'transition-all'
)}
></div>
@@ -0,0 +1,5 @@
'use client'
export default function EditorIdRender() {
return <div className="flex flex-col grow h-full"></div>
}
@@ -1,3 +1,4 @@
import TabHeader from './tab-header'
import TableEditorItemsPanel from './table-editor-items-panel'
export default function TableEditorLayout({
@@ -8,7 +9,10 @@ export default function TableEditorLayout({
return (
<div className="flex h-full w-full">
<TableEditorItemsPanel />
{children}
<div className="grow">
<TabHeader />
{children}
</div>
</div>
)
}
@@ -1,7 +1,8 @@
import TabHeader from './tab-header'
export default function TableEditorPage() {
return (
<div className="flex flex-col grow">
<div className="w-full bg-surface-100 h-8 border-b"></div>
<span>table editor</span>
</div>
)
@@ -0,0 +1,48 @@
'use client'
import { useConfig } from '@/src/hooks/use-config'
import { PanelLeftClose, PanelLeftOpen } from 'lucide-react'
import { cn } from 'ui'
export default function TabHeader() {
const [config, setConfig] = useConfig()
return (
<div className="w-full bg-surface-100 h-8 border-b items-center flex px-3">
{config.tableEditor.sidePanelOpen ? (
<PanelLeftClose
size={16}
strokeWidth={1.5}
className={cn(
'text-foreground-muted hover:text-foreground-light transition-colors cursor-pointer'
)}
onClick={() =>
setConfig({
...config,
tableEditor: {
...config.tableEditor,
sidePanelOpen: false,
},
})
}
/>
) : (
<PanelLeftOpen
size={16}
strokeWidth={1.5}
className={cn(
'text-foreground-muted hover:text-foreground-light transition-colors cursor-pointer'
)}
onClick={() =>
setConfig({
...config,
tableEditor: {
...config.tableEditor,
sidePanelOpen: true,
},
})
}
/>
)}
</div>
)
}
@@ -1,24 +1,42 @@
'use client'
import { useConfig } from '@/src/hooks/use-config'
import useShortcut from '@/src/hooks/use-shortcut'
import { useParams, usePathname } from 'next/navigation'
import { cn } from 'ui'
import { useHotkeys } from 'react-hotkeys-hook'
export default function TableEditorItemsPanel() {
const { org } = useParams()
const pathname = usePathname()
const isActive = pathname === `/${org}/table-editor`
const [config, setConfig] = useConfig()
const isActive = config.tableEditor.sidePanelOpen
useHotkeys(
'meta+b',
() =>
setConfig((prev) => ({
...prev,
tableEditor: {
...prev.tableEditor,
sidePanelOpen: !prev.tableEditor.sidePanelOpen,
},
})),
[config.tableEditor.sidePanelOpen]
)
return (
<div
className={cn(
'h-full',
'bg-dash-sidebar',
//
isActive ? 'w-[300px]' : 'w-[0px]',
isActive &&
`
border-r
`,
'duration-500',
'duration-200',
'ease-out',
'transition-all'
)}
@@ -5,12 +5,18 @@ type Config = {
radius: number
organization?: string
project?: string
tableEditor: {
sidePanelOpen: boolean
}
}
const configAtom = atomWithStorage<Config>('config', {
radius: 0.5,
organization: 'Summers-Muir',
project: 'Sonsing',
tableEditor: {
sidePanelOpen: true,
},
})
export function useConfig() {
@@ -0,0 +1,50 @@
import { useEffect, useState } from 'react'
const useShortcut = (shortcutKeys: string[], callback: (event: KeyboardEvent) => void) => {
const [pressedKeys, setPressedKeys] = useState(new Set<string>())
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
const key = event.key.toLowerCase()
const keys = shortcutKeys.map((key) => key.toLowerCase())
// Add key to pressedKeys
setPressedKeys((prevKeys) => new Set(prevKeys).add(key))
// Check if all keys are pressed
const allKeysPressed = keys.every((key) => {
if (key === 'meta') return event.metaKey
if (key === 'control') return event.ctrlKey
if (key === 'shift') return event.shiftKey
if (key === 'alt') return event.altKey
return pressedKeys.has(key)
})
if (allKeysPressed) {
event.preventDefault()
callback(event)
}
}
const handleKeyUp = (event: KeyboardEvent) => {
const key = event.key.toLowerCase()
setPressedKeys((prevKeys) => {
const newKeys = new Set(prevKeys)
newKeys.delete(key)
return newKeys
})
}
window.addEventListener('keydown', handleKeyDown)
window.addEventListener('keyup', handleKeyUp)
return () => {
window.removeEventListener('keydown', handleKeyDown)
window.removeEventListener('keyup', handleKeyUp)
}
}, [shortcutKeys, callback, pressedKeys])
return null
}
export default useShortcut
+1
View File
@@ -6,6 +6,7 @@ module.exports = config({
'./src/pages/**/*.{js,ts,jsx,tsx,mdx}',
'./src/components/**/*.{js,ts,jsx,tsx,mdx}',
'./src/app/**/*.{js,ts,jsx,tsx,mdx}',
'./src/config/**/*.{js,ts,jsx,tsx,mdx}',
'./components/**/*.{js,ts,jsx,tsx}',
'./registry/**/*.{js,ts,jsx,tsx}',
// purge styles from grid library
+313 -5
View File
@@ -1363,13 +1363,18 @@
"apps/studio-prototype": {
"version": "0.1.0",
"dependencies": {
"@glideapps/glide-data-grid": "^6.0.3",
"icons": "*",
"jotai": "^2.8.0",
"lodash": "^4.17.21",
"lucide-react": "^0.338.0",
"marked": "^13.0.0",
"next": "14.2.4",
"next-themes": "^0.3.0",
"react": "^18",
"react-dom": "^18",
"react-hotkeys-hook": "^4.5.0",
"react-responsive-carousel": "^3.2.23",
"ui": "*"
},
"devDependencies": {
@@ -1384,6 +1389,17 @@
"typescript": "^5"
}
},
"apps/studio-prototype/node_modules/marked": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-13.0.0.tgz",
"integrity": "sha512-VTeDCd9txf4KLLljUZ0nljE/Incb9SrWuueE44QVuU0pkOdh4sfCeW1Z6lPcxyDRSVY6rm8db/0OPaN75RNUmw==",
"bin": {
"marked": "bin/marked.js"
},
"engines": {
"node": ">= 18"
}
},
"apps/studio/node_modules/@heroicons/react": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.3.tgz",
@@ -4131,6 +4147,22 @@
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/plugin-proposal-export-namespace-from": {
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
"integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
"deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.",
"dependencies": {
"@babel/helper-plugin-utils": "^7.18.9",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/plugin-proposal-private-property-in-object": {
"version": "7.21.0-placeholder-for-preset-env.2",
"dev": true,
@@ -4194,7 +4226,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -4206,7 +4237,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
"integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.3"
},
@@ -4795,7 +4825,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz",
"integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==",
"dev": true,
"dependencies": {
"@babel/helper-module-transforms": "^7.24.7",
"@babel/helper-plugin-utils": "^7.24.7",
@@ -6297,6 +6326,23 @@
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
"dev": true
},
"node_modules/@glideapps/glide-data-grid": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@glideapps/glide-data-grid/-/glide-data-grid-6.0.3.tgz",
"integrity": "sha512-YXKggiNOaEemf0jP0jORq2EQKz+zXms+6mGzZc+q0mLMjmgzzoGLOQC1uYcynXSj1R61bd27JcPFsoH+Gj37Vg==",
"dependencies": {
"@linaria/react": "^4.5.3",
"canvas-hypertxt": "^1.0.3",
"react-number-format": "^5.0.0"
},
"peerDependencies": {
"lodash": "^4.17.19",
"marked": "^4.0.10",
"react": "^16.12.0 || 17.x || 18.x",
"react-dom": "^16.12.0 || 17.x || 18.x",
"react-responsive-carousel": "^3.2.7"
}
},
"node_modules/@graphiql/react": {
"version": "0.19.4",
"license": "MIT",
@@ -7599,6 +7645,143 @@
"@lezer/common": "^1.0.0"
}
},
"node_modules/@linaria/core": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/@linaria/core/-/core-4.5.4.tgz",
"integrity": "sha512-vMs/5iU0stxjfbBCxobIgY+wSQx4G8ukNwrhjPVD+6bF9QrTwi5rl0mKaCMxaGMjnfsLRiiM3i+hnWLIEYLdSg==",
"dependencies": {
"@linaria/logger": "^4.5.0",
"@linaria/tags": "^4.5.4",
"@linaria/utils": "^4.5.3"
},
"engines": {
"node": "^12.16.0 || >=13.7.0"
}
},
"node_modules/@linaria/logger": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@linaria/logger/-/logger-4.5.0.tgz",
"integrity": "sha512-XdQLk242Cpcsc9a3Cz1ktOE5ysTo2TpxdeFQEPwMm8Z/+F/S6ZxBDdHYJL09srXWz3hkJr3oS2FPuMZNH1HIxw==",
"dependencies": {
"debug": "^4.1.1",
"picocolors": "^1.0.0"
},
"engines": {
"node": "^12.16.0 || >=13.7.0"
}
},
"node_modules/@linaria/react": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/@linaria/react/-/react-4.5.4.tgz",
"integrity": "sha512-/dhCVCsfdGPfQCPV0q5yy+DDlFXepvfXrw/os2fC+Xo1v9J/9gyiaBBWHzcumauvNNFj8aN6vRkj89fMujPHew==",
"dependencies": {
"@emotion/is-prop-valid": "^1.2.0",
"@linaria/core": "^4.5.4",
"@linaria/tags": "^4.5.4",
"@linaria/utils": "^4.5.3",
"minimatch": "^9.0.3",
"react-html-attributes": "^1.4.6",
"ts-invariant": "^0.10.3"
},
"engines": {
"node": "^12.16.0 || >=13.7.0"
},
"peerDependencies": {
"react": ">=16"
}
},
"node_modules/@linaria/react/node_modules/@emotion/is-prop-valid": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
"integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
"dependencies": {
"@emotion/memoize": "^0.8.1"
}
},
"node_modules/@linaria/react/node_modules/@emotion/memoize": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
"integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
},
"node_modules/@linaria/react/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/@linaria/react/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@linaria/tags": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/@linaria/tags/-/tags-4.5.4.tgz",
"integrity": "sha512-HPxLB6HlJWLi6o8+8lTLegOmDnbMbuzEE+zzunaPZEGSoIIYx8HAv5VbY/sG/zNyxDElk6laiAwEVWN8h5/zxg==",
"dependencies": {
"@babel/generator": "^7.22.9",
"@linaria/logger": "^4.5.0",
"@linaria/utils": "^4.5.3"
},
"engines": {
"node": "^12.16.0 || >=13.7.0"
}
},
"node_modules/@linaria/utils": {
"version": "4.5.3",
"resolved": "https://registry.npmjs.org/@linaria/utils/-/utils-4.5.3.tgz",
"integrity": "sha512-tSpxA3Zn0DKJ2n/YBnYAgiDY+MNvkmzAHrD8R9PKrpGaZ+wz1jQEmE1vGn1cqh8dJyWK0NzPAA8sf1cqa+RmAg==",
"dependencies": {
"@babel/core": "^7.22.9",
"@babel/generator": "^7.22.9",
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-modules-commonjs": "^7.22.5",
"@babel/template": "^7.22.5",
"@babel/traverse": "^7.22.8",
"@babel/types": "^7.22.5",
"@linaria/logger": "^4.5.0",
"babel-merge": "^3.0.0",
"find-up": "^5.0.0",
"minimatch": "^9.0.3"
},
"engines": {
"node": "^12.16.0 || >=13.7.0"
}
},
"node_modules/@linaria/utils/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/@linaria/utils/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@mapbox/node-pre-gyp": {
"version": "1.0.11",
"license": "BSD-3-Clause",
@@ -16652,6 +16835,27 @@
"node": ">=8"
}
},
"node_modules/babel-merge": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-3.0.0.tgz",
"integrity": "sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==",
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dependencies": {
"deepmerge": "^2.2.1",
"object.omit": "^3.0.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/babel-merge/node_modules/deepmerge": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/babel-plugin-istanbul": {
"version": "6.1.1",
"dev": true,
@@ -17193,6 +17397,11 @@
}
]
},
"node_modules/canvas-hypertxt": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/canvas-hypertxt/-/canvas-hypertxt-1.0.3.tgz",
"integrity": "sha512-+VsMpRr64jYgKq2IeFUNel3vCZH/IzS+iXSHxmUV3IUH5dXlC9xHz4AwtPZisDxZ5MWcuK0V+TXgPKFPiZnxzg=="
},
"node_modules/capital-case": {
"version": "1.0.4",
"dev": true,
@@ -23042,6 +23251,11 @@
"dev": true,
"license": "ISC"
},
"node_modules/html-element-attributes": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz",
"integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA=="
},
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
"devOptional": true,
@@ -26406,7 +26620,8 @@
},
"node_modules/lodash": {
"version": "4.17.21",
"license": "MIT"
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash-es": {
"version": "4.17.21",
@@ -26758,7 +26973,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
"integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
"dev": true,
"bin": {
"marked": "bin/marked.js"
},
@@ -32206,6 +32420,39 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object.omit": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz",
"integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==",
"dependencies": {
"is-extendable": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object.omit/node_modules/is-extendable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dependencies": {
"is-plain-object": "^2.0.4"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object.omit/node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dependencies": {
"isobject": "^3.0.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object.pick": {
"version": "1.3.0",
"license": "MIT",
@@ -34216,6 +34463,17 @@
"react-dom": ">= 16.3.0"
}
},
"node_modules/react-easy-swipe": {
"version": "0.0.21",
"resolved": "https://registry.npmjs.org/react-easy-swipe/-/react-easy-swipe-0.0.21.tgz",
"integrity": "sha512-OeR2jAxdoqUMHIn/nS9fgreI5hSpgGoL5ezdal4+oO7YSSgJR8ga+PkYGJrSrJ9MKlPcQjMQXnketrD7WNmNsg==",
"dependencies": {
"prop-types": "^15.5.8"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/react-element-to-jsx-string": {
"version": "15.0.0",
"dev": true,
@@ -34327,6 +34585,23 @@
"react-dom": ">=16"
}
},
"node_modules/react-hotkeys-hook": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-4.5.0.tgz",
"integrity": "sha512-Samb85GSgAWFQNvVt3PS90LPPGSf9mkH/r4au81ZP1yOIFayLC3QAvqTgGtJ8YEDMXtPmaVBs6NgipHO6h4Mug==",
"peerDependencies": {
"react": ">=16.8.1",
"react-dom": ">=16.8.1"
}
},
"node_modules/react-html-attributes": {
"version": "1.4.6",
"resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.6.tgz",
"integrity": "sha512-uS3MmThNKFH2EZUQQw4k5pIcU7XIr208UE5dktrj/GOH1CMagqxDl4DCLpt3o2l9x+IB5nVYBeN3Cr4IutBXAg==",
"dependencies": {
"html-element-attributes": "^1.0.0"
}
},
"node_modules/react-inlinesvg": {
"version": "4.0.4",
"license": "MIT",
@@ -34414,6 +34689,18 @@
"url": "https://github.com/sponsors/gregberge"
}
},
"node_modules/react-number-format": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.0.tgz",
"integrity": "sha512-NWdICrqLhI7rAS8yUeLVd6Wr4cN7UjJ9IBTS0f/a9i7UB4x4Ti70kGnksBtZ7o4Z7YRbvCMMR/jQmkoOBa/4fg==",
"dependencies": {
"prop-types": "^15.7.2"
},
"peerDependencies": {
"react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-onclickoutside": {
"version": "6.13.0",
"license": "MIT",
@@ -34552,6 +34839,16 @@
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-responsive-carousel": {
"version": "3.2.23",
"resolved": "https://registry.npmjs.org/react-responsive-carousel/-/react-responsive-carousel-3.2.23.tgz",
"integrity": "sha512-pqJLsBaKHWJhw/ItODgbVoziR2z4lpcJg+YwmRlSk4rKH32VE633mAtZZ9kDXjy4wFO+pgUZmDKPsPe1fPmHCg==",
"dependencies": {
"classnames": "^2.2.5",
"prop-types": "^15.5.8",
"react-easy-swipe": "^0.0.21"
}
},
"node_modules/react-simple-maps": {
"version": "4.0.0-beta.6",
"resolved": "https://registry.npmjs.org/react-simple-maps/-/react-simple-maps-4.0.0-beta.6.tgz",
@@ -39671,6 +39968,17 @@
"version": "0.1.13",
"license": "Apache-2.0"
},
"node_modules/ts-invariant": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz",
"integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==",
"dependencies": {
"tslib": "^2.1.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/ts-jest": {
"version": "29.1.2",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz",