diff --git a/apps/studio-prototype/package.json b/apps/studio-prototype/package.json
index 025f9affb6e..2adca9f9bdf 100644
--- a/apps/studio-prototype/package.json
+++ b/apps/studio-prototype/package.json
@@ -16,6 +16,7 @@
"next-themes": "^0.3.0",
"react": "^18",
"react-dom": "^18",
+ "react-hotkeys-hook": "^4.5.0",
"ui": "*"
},
"devDependencies": {
diff --git a/apps/studio-prototype/src/app/[org]/side-nav-menu-icon.tsx b/apps/studio-prototype/src/app/[org]/side-nav-menu-icon.tsx
index 9a06e0242ad..24bc32f02ca 100644
--- a/apps/studio-prototype/src/app/[org]/side-nav-menu-icon.tsx
+++ b/apps/studio-prototype/src/app/[org]/side-nav-menu-icon.tsx
@@ -25,13 +25,7 @@ export default function SideNavMenuIcon({ product }: { product: any }) {
diff --git a/apps/studio-prototype/src/app/[org]/table-editor/[id]/page.tsx b/apps/studio-prototype/src/app/[org]/table-editor/[id]/page.tsx
new file mode 100644
index 00000000000..34fdbc4cf2e
--- /dev/null
+++ b/apps/studio-prototype/src/app/[org]/table-editor/[id]/page.tsx
@@ -0,0 +1,5 @@
+'use client'
+
+export default function EditorIdRender() {
+ return
+}
diff --git a/apps/studio-prototype/src/app/[org]/table-editor/layout.tsx b/apps/studio-prototype/src/app/[org]/table-editor/layout.tsx
index 4c1a78f7e71..a3a08b73533 100644
--- a/apps/studio-prototype/src/app/[org]/table-editor/layout.tsx
+++ b/apps/studio-prototype/src/app/[org]/table-editor/layout.tsx
@@ -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 (
- {children}
+
+
+ {children}
+
)
}
diff --git a/apps/studio-prototype/src/app/[org]/table-editor/page.tsx b/apps/studio-prototype/src/app/[org]/table-editor/page.tsx
index b7e065e267e..72f089f8e59 100644
--- a/apps/studio-prototype/src/app/[org]/table-editor/page.tsx
+++ b/apps/studio-prototype/src/app/[org]/table-editor/page.tsx
@@ -1,7 +1,8 @@
+import TabHeader from './tab-header'
+
export default function TableEditorPage() {
return (
)
diff --git a/apps/studio-prototype/src/app/[org]/table-editor/tab-header.tsx b/apps/studio-prototype/src/app/[org]/table-editor/tab-header.tsx
new file mode 100644
index 00000000000..f63403afc2d
--- /dev/null
+++ b/apps/studio-prototype/src/app/[org]/table-editor/tab-header.tsx
@@ -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 (
+
+ {config.tableEditor.sidePanelOpen ? (
+
+ setConfig({
+ ...config,
+ tableEditor: {
+ ...config.tableEditor,
+ sidePanelOpen: false,
+ },
+ })
+ }
+ />
+ ) : (
+
+ setConfig({
+ ...config,
+ tableEditor: {
+ ...config.tableEditor,
+ sidePanelOpen: true,
+ },
+ })
+ }
+ />
+ )}
+
+ )
+}
diff --git a/apps/studio-prototype/src/app/[org]/table-editor/table-editor-items-panel.tsx b/apps/studio-prototype/src/app/[org]/table-editor/table-editor-items-panel.tsx
index 40359b2f471..1749c7707eb 100644
--- a/apps/studio-prototype/src/app/[org]/table-editor/table-editor-items-panel.tsx
+++ b/apps/studio-prototype/src/app/[org]/table-editor/table-editor-items-panel.tsx
@@ -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 (
('config', {
radius: 0.5,
organization: 'Summers-Muir',
project: 'Sonsing',
+ tableEditor: {
+ sidePanelOpen: true,
+ },
})
export function useConfig() {
diff --git a/apps/studio-prototype/src/hooks/use-shortcut.ts b/apps/studio-prototype/src/hooks/use-shortcut.ts
new file mode 100644
index 00000000000..9ae5f69c26c
--- /dev/null
+++ b/apps/studio-prototype/src/hooks/use-shortcut.ts
@@ -0,0 +1,50 @@
+import { useEffect, useState } from 'react'
+
+const useShortcut = (shortcutKeys: string[], callback: (event: KeyboardEvent) => void) => {
+ const [pressedKeys, setPressedKeys] = useState(new Set())
+
+ 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
diff --git a/apps/studio-prototype/tailwind.config.ts b/apps/studio-prototype/tailwind.config.ts
index 8071791796a..f7486d79946 100644
--- a/apps/studio-prototype/tailwind.config.ts
+++ b/apps/studio-prototype/tailwind.config.ts
@@ -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
diff --git a/package-lock.json b/package-lock.json
index 34d265c07be..c709deefeea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -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",