diff --git a/package.json b/package.json
index de16e84..f90d731 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
"node": "18"
},
"scripts": {
+ "dev:example": "vite",
"dev": "storybook dev -p 6006",
"build": "storybook build",
"build:lib": "tsc && vite build",
@@ -33,8 +34,36 @@
"prepack": "json -f package.json -I -e \"delete this.devDependencies; delete this.dependencies\""
},
"dependencies": {
+ "@braintree/sanitize-url": "^7.0.0",
+ "@dnd-kit/core": "^6.1.0",
+ "@dnd-kit/modifiers": "^7.0.0",
+ "@dnd-kit/sortable": "^8.0.0",
+ "@emotion/react": "^11.11.1",
+ "@emotion/weak-memoize": "^0.3.1",
+ "@keystone-ui/button": "^7.0.2",
+ "@keystone-ui/core": "^5.0.2",
+ "@keystone-ui/fields": "^7.2.0",
+ "@keystone-ui/icons": "^6.0.2",
+ "@keystone-ui/modals": "^6.0.3",
+ "@keystone-ui/popover": "^6.0.2",
+ "@keystone-ui/tooltip": "^6.0.2",
+ "apply-ref": "^1.0.0",
+ "io-ts": "^2.2.21",
+ "io-ts-excess": "^1.0.1",
+ "is-hotkey": "^0.2.0",
+ "match-sorter": "^6.3.1",
+ "mdast-util-from-markdown": "^0.8.5",
+ "mdast-util-gfm-autolink-literal": "^0.1.3",
+ "mdast-util-gfm-strikethrough": "0.2.3",
+ "micromark-extension-gfm-autolink-literal": "0.5.7",
+ "micromark-extension-gfm-strikethrough": "^0.6.5",
"react": "18.2.0",
- "react-dom": "18.2.0"
+ "react-dom": "18.2.0",
+ "scroll-into-view-if-needed": "^3.1.0",
+ "slate": "^0.101.1",
+ "slate-history": "^0.100.0",
+ "slate-hyperscript": "^0.100.0",
+ "slate-react": "^0.101.2"
},
"devDependencies": {
"@babel/core": "7.22.10",
@@ -47,6 +76,8 @@
"@storybook/react-vite": "7.2.2",
"@storybook/testing-library": "0.2.0",
"@testing-library/react": "14.0.0",
+ "@types/is-hotkey": "^0.1.10",
+ "@types/jest": "^29.5.11",
"@types/node": "20.4.9",
"@types/react": "18.2.20",
"@types/react-dom": "18.2.7",
@@ -64,11 +95,15 @@
"eslint-plugin-react": "7.33.1",
"eslint-plugin-storybook": "0.6.13",
"husky": "8.0.3",
+ "jest": "^29.7.0",
+ "jest-diff": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
"jsdom": "22.1.0",
"json": "11.0.0",
"lint-staged": "13.2.3",
"postcss": "8.4.27",
"prettier": "3.0.1",
+ "pretty-format": "^29.7.0",
"prop-types": "15.8.1",
"storybook": "7.2.2",
"tailwindcss": "3.3.3",
@@ -88,5 +123,22 @@
"*.{ts,tsx,js,jsx,json,css,md}": [
"prettier -w"
]
+ },
+ "jest": {
+ "testEnvironment": "node",
+ "collectCoverageFrom": [
+ "packages/**/*.{js,ts,tsx}",
+ "!**/*.d.ts",
+ "!packages/**/dist/**",
+ "!packages/core/src/fields/**/test-fixtures.{js,ts}"
+ ],
+ "transform": {
+ "^.+\\.[tj]sx?$": [
+ "esbuild-jest",
+ {
+ "target": "esnext"
+ }
+ ]
+ }
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7af5c96..02f2dd5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,12 +1,96 @@
lockfileVersion: '6.0'
dependencies:
+ '@braintree/sanitize-url':
+ specifier: ^7.0.0
+ version: 7.0.0
+ '@dnd-kit/core':
+ specifier: ^6.1.0
+ version: 6.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@dnd-kit/modifiers':
+ specifier: ^7.0.0
+ version: 7.0.0(@dnd-kit/core@6.1.0)(react@18.2.0)
+ '@dnd-kit/sortable':
+ specifier: ^8.0.0
+ version: 8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0)
+ '@emotion/react':
+ specifier: ^11.11.1
+ version: 11.11.1(@types/react@18.2.20)(react@18.2.0)
+ '@emotion/weak-memoize':
+ specifier: ^0.3.1
+ version: 0.3.1
+ '@keystone-ui/button':
+ specifier: ^7.0.2
+ version: 7.0.2(@types/react@18.2.20)(react-dom@18.2.0)
+ '@keystone-ui/core':
+ specifier: ^5.0.2
+ version: 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/fields':
+ specifier: ^7.2.0
+ version: 7.2.0(@types/react@18.2.20)
+ '@keystone-ui/icons':
+ specifier: ^6.0.2
+ version: 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/modals':
+ specifier: ^6.0.3
+ version: 6.0.3(@types/react@18.2.20)(react-dom@18.2.0)
+ '@keystone-ui/popover':
+ specifier: ^6.0.2
+ version: 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/tooltip':
+ specifier: ^6.0.2
+ version: 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ apply-ref:
+ specifier: ^1.0.0
+ version: 1.0.0
+ io-ts:
+ specifier: ^2.2.21
+ version: 2.2.21(fp-ts@2.16.1)
+ io-ts-excess:
+ specifier: ^1.0.1
+ version: 1.0.1(fp-ts@2.16.1)
+ is-hotkey:
+ specifier: ^0.2.0
+ version: 0.2.0
+ match-sorter:
+ specifier: ^6.3.1
+ version: 6.3.1
+ mdast-util-from-markdown:
+ specifier: ^0.8.5
+ version: 0.8.5
+ mdast-util-gfm-autolink-literal:
+ specifier: ^0.1.3
+ version: 0.1.3
+ mdast-util-gfm-strikethrough:
+ specifier: 0.2.3
+ version: 0.2.3
+ micromark-extension-gfm-autolink-literal:
+ specifier: 0.5.7
+ version: 0.5.7
+ micromark-extension-gfm-strikethrough:
+ specifier: ^0.6.5
+ version: 0.6.5
react:
specifier: 18.2.0
version: 18.2.0
react-dom:
specifier: 18.2.0
version: 18.2.0(react@18.2.0)
+ scroll-into-view-if-needed:
+ specifier: ^3.1.0
+ version: 3.1.0
+ slate:
+ specifier: ^0.101.1
+ version: 0.101.1
+ slate-history:
+ specifier: ^0.100.0
+ version: 0.100.0(slate@0.101.1)
+ slate-hyperscript:
+ specifier: ^0.100.0
+ version: 0.100.0(slate@0.101.1)
+ slate-react:
+ specifier: ^0.101.2
+ version: 0.101.2(react-dom@18.2.0)(react@18.2.0)(slate@0.101.1)
devDependencies:
'@babel/core':
@@ -23,7 +107,7 @@ devDependencies:
version: 7.2.2(react-dom@18.2.0)(react@18.2.0)
'@storybook/addon-styling':
specifier: 1.3.6
- version: 1.3.6(less@4.1.3)(postcss@8.4.27)(react-dom@18.2.0)(react@18.2.0)(webpack@5.82.0)
+ version: 1.3.6(less@4.2.0)(postcss@8.4.27)(react-dom@18.2.0)(react@18.2.0)(webpack@5.89.0)
'@storybook/blocks':
specifier: 7.2.2
version: 7.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
@@ -39,6 +123,12 @@ devDependencies:
'@testing-library/react':
specifier: 14.0.0
version: 14.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@types/is-hotkey':
+ specifier: ^0.1.10
+ version: 0.1.10
+ '@types/jest':
+ specifier: ^29.5.11
+ version: 29.5.11
'@types/node':
specifier: 20.4.9
version: 20.4.9
@@ -50,7 +140,7 @@ devDependencies:
version: 18.2.7
'@typescript-eslint/eslint-plugin':
specifier: 5.60.0
- version: 5.60.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)(typescript@5.1.6)
+ version: 5.60.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6)
'@vitejs/plugin-react':
specifier: 4.0.4
version: 4.0.4(vite@4.4.9)
@@ -62,7 +152,7 @@ devDependencies:
version: 10.4.14(postcss@8.4.27)
babel-loader:
specifier: 9.1.3
- version: 9.1.3(@babel/core@7.22.10)(webpack@5.82.0)
+ version: 9.1.3(@babel/core@7.22.10)(webpack@5.89.0)
eslint:
specifier: 8.46.0
version: 8.46.0
@@ -74,7 +164,7 @@ devDependencies:
version: 37.0.0(@typescript-eslint/eslint-plugin@5.60.0)(eslint-plugin-import@2.28.0)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.46.0)(typescript@5.1.6)
eslint-plugin-import:
specifier: 2.28.0
- version: 2.28.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)
+ version: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
eslint-plugin-n:
specifier: 16.0.1
version: 16.0.1(eslint@8.46.0)
@@ -90,6 +180,15 @@ devDependencies:
husky:
specifier: 8.0.3
version: 8.0.3
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@20.4.9)
+ jest-diff:
+ specifier: ^29.7.0
+ version: 29.7.0
+ jest-environment-jsdom:
+ specifier: ^29.7.0
+ version: 29.7.0
jsdom:
specifier: 22.1.0
version: 22.1.0
@@ -105,6 +204,9 @@ devDependencies:
prettier:
specifier: 3.0.1
version: 3.0.1
+ pretty-format:
+ specifier: ^29.7.0
+ version: 29.7.0
prop-types:
specifier: 15.8.1
version: 15.8.1
@@ -119,13 +221,13 @@ devDependencies:
version: 5.1.6
vite:
specifier: 4.4.9
- version: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ version: 4.4.9(@types/node@20.4.9)(less@4.2.0)
vite-plugin-dts:
specifier: 3.5.1
version: 3.5.1(@types/node@20.4.9)(typescript@5.1.6)(vite@4.4.9)
vitest:
specifier: 0.34.1
- version: 0.34.1(jsdom@22.1.0)(less@4.1.3)
+ version: 0.34.1(jsdom@22.1.0)(less@4.2.0)
packages:
@@ -160,7 +262,6 @@ packages:
dependencies:
'@babel/highlight': 7.22.10
chalk: 2.4.2
- dev: true
/@babel/code-frame@7.22.5:
resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
@@ -321,7 +422,6 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.10
- dev: true
/@babel/helper-module-transforms@7.22.9(@babel/core@7.22.10):
resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==}
@@ -397,12 +497,10 @@ packages:
/@babel/helper-string-parser@7.22.5:
resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
engines: {node: '>=6.9.0'}
- dev: true
/@babel/helper-validator-identifier@7.22.5:
resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
engines: {node: '>=6.9.0'}
- dev: true
/@babel/helper-validator-option@7.22.5:
resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
@@ -436,7 +534,6 @@ packages:
'@babel/helper-validator-identifier': 7.22.5
chalk: 2.4.2
js-tokens: 4.0.0
- dev: true
/@babel/highlight@7.22.5:
resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
@@ -529,6 +626,15 @@ packages:
'@babel/helper-plugin-utils': 7.22.5
dev: true
+ /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.10):
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.10
+ '@babel/helper-plugin-utils': 7.22.5
+ dev: true
+
/@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.10):
resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
peerDependencies:
@@ -1446,7 +1552,6 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
- dev: true
/@babel/template@7.22.5:
resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
@@ -1482,7 +1587,6 @@ packages:
'@babel/helper-string-parser': 7.22.5
'@babel/helper-validator-identifier': 7.22.5
to-fast-properties: 2.0.0
- dev: true
/@base2/pretty-print-object@1.0.1:
resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==}
@@ -1492,6 +1596,10 @@ packages:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true
+ /@braintree/sanitize-url@7.0.0:
+ resolution: {integrity: sha512-GMu2OJiTd1HSe74bbJYQnVvELANpYiGFZELyyTM1CR0sdv5ReQAcJ/c/8pIrPab3lO11+D+EpuGLUxqz+y832g==}
+ dev: false
+
/@colors/colors@1.5.0:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
@@ -1504,13 +1612,148 @@ packages:
engines: {node: '>=10.0.0'}
dev: true
+ /@dnd-kit/accessibility@3.1.0(react@18.2.0):
+ resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ tslib: 2.5.0
+ dev: false
+
+ /@dnd-kit/core@6.1.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@dnd-kit/accessibility': 3.1.0(react@18.2.0)
+ '@dnd-kit/utilities': 3.2.2(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tslib: 2.5.0
+ dev: false
+
+ /@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0)(react@18.2.0):
+ resolution: {integrity: sha512-BG/ETy3eBjFap7+zIti53f0PCLGDzNXyTmn6fSdrudORf+OH04MxrW4p5+mPu4mgMk9kM41iYONjc3DOUWTcfg==}
+ peerDependencies:
+ '@dnd-kit/core': ^6.1.0
+ react: '>=16.8.0'
+ dependencies:
+ '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@dnd-kit/utilities': 3.2.2(react@18.2.0)
+ react: 18.2.0
+ tslib: 2.5.0
+ dev: false
+
+ /@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0):
+ resolution: {integrity: sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==}
+ peerDependencies:
+ '@dnd-kit/core': ^6.1.0
+ react: '>=16.8.0'
+ dependencies:
+ '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@dnd-kit/utilities': 3.2.2(react@18.2.0)
+ react: 18.2.0
+ tslib: 2.5.0
+ dev: false
+
+ /@dnd-kit/utilities@3.2.2(react@18.2.0):
+ resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ tslib: 2.5.0
+ dev: false
+
+ /@emotion/babel-plugin@11.11.0:
+ resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
+ dependencies:
+ '@babel/helper-module-imports': 7.22.5
+ '@babel/runtime': 7.21.5
+ '@emotion/hash': 0.9.1
+ '@emotion/memoize': 0.8.1
+ '@emotion/serialize': 1.1.2
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.9.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.2.0
+ dev: false
+
+ /@emotion/cache@11.11.0:
+ resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==}
+ dependencies:
+ '@emotion/memoize': 0.8.1
+ '@emotion/sheet': 1.2.2
+ '@emotion/utils': 1.2.1
+ '@emotion/weak-memoize': 0.3.1
+ stylis: 4.2.0
+ dev: false
+
+ /@emotion/hash@0.9.1:
+ resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
+ dev: false
+
+ /@emotion/memoize@0.8.1:
+ resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
+ dev: false
+
+ /@emotion/react@11.11.1(@types/react@18.2.20)(react@18.2.0):
+ resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@emotion/babel-plugin': 11.11.0
+ '@emotion/cache': 11.11.0
+ '@emotion/serialize': 1.1.2
+ '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
+ '@emotion/utils': 1.2.1
+ '@emotion/weak-memoize': 0.3.1
+ '@types/react': 18.2.20
+ hoist-non-react-statics: 3.3.2
+ react: 18.2.0
+ dev: false
+
+ /@emotion/serialize@1.1.2:
+ resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==}
+ dependencies:
+ '@emotion/hash': 0.9.1
+ '@emotion/memoize': 0.8.1
+ '@emotion/unitless': 0.8.1
+ '@emotion/utils': 1.2.1
+ csstype: 3.1.2
+ dev: false
+
+ /@emotion/sheet@1.2.2:
+ resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
+ dev: false
+
+ /@emotion/unitless@0.8.1:
+ resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
+ dev: false
+
/@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0):
resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==}
peerDependencies:
react: '>=16.8.0'
dependencies:
react: 18.2.0
- dev: true
+
+ /@emotion/utils@1.2.1:
+ resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
+ dev: false
+
+ /@emotion/weak-memoize@0.3.1:
+ resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
+ dev: false
/@esbuild/android-arm64@0.18.20:
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
@@ -1755,14 +1998,12 @@ packages:
resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==}
dependencies:
'@floating-ui/utils': 0.1.1
- dev: true
/@floating-ui/dom@1.5.1:
resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==}
dependencies:
'@floating-ui/core': 1.4.1
'@floating-ui/utils': 0.1.1
- dev: true
/@floating-ui/react-dom@2.0.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==}
@@ -1777,7 +2018,6 @@ packages:
/@floating-ui/utils@0.1.1:
resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==}
- dev: true
/@humanwhocodes/config-array@0.11.10:
resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
@@ -1827,19 +2067,191 @@ packages:
engines: {node: '>=8'}
dev: true
- /@jest/schemas@29.6.0:
- resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
+ /@jest/console@29.7.0:
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ dev: true
+
+ /@jest/core@29.7.0:
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.8.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@20.4.9)
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
+ /@jest/environment@29.7.0:
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ jest-mock: 29.7.0
+ dev: true
+
+ /@jest/expect-utils@29.7.0:
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ dev: true
+
+ /@jest/expect@29.7.0:
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/fake-timers@29.7.0:
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 20.4.9
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
+ /@jest/globals@29.7.0:
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/reporters@29.7.0:
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.20
+ '@types/node': 20.4.9
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.2
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.0
+ istanbul-lib-instrument: 6.0.1
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.5
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/schemas@29.6.3:
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@sinclair/typebox': 0.27.8
dev: true
+ /@jest/source-map@29.6.3:
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.20
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+ dev: true
+
+ /@jest/test-result@29.7.0:
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.4
+ collect-v8-coverage: 1.0.2
+ dev: true
+
+ /@jest/test-sequencer@29.7.0:
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+ dev: true
+
/@jest/transform@29.5.0:
resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@babel/core': 7.22.10
- '@jest/types': 29.5.0
+ '@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.18
babel-plugin-istanbul: 6.1.1
chalk: 4.1.2
@@ -1848,7 +2260,30 @@ packages:
graceful-fs: 4.2.11
jest-haste-map: 29.5.0
jest-regex-util: 29.4.3
- jest-util: 29.5.0
+ jest-util: 29.7.0
+ micromatch: 4.0.5
+ pirates: 4.0.5
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/transform@29.7.0:
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.22.10
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.20
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
micromatch: 4.0.5
pirates: 4.0.5
slash: 3.0.0
@@ -1868,11 +2303,11 @@ packages:
chalk: 4.1.2
dev: true
- /@jest/types@29.5.0:
- resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==}
+ /@jest/types@29.6.3:
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@jest/schemas': 29.6.0
+ '@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
'@types/node': 20.4.9
@@ -1894,7 +2329,7 @@ packages:
magic-string: 0.27.0
react-docgen-typescript: 2.2.2(typescript@5.1.6)
typescript: 5.1.6
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
dev: true
/@jridgewell/gen-mapping@0.3.3:
@@ -1911,16 +2346,21 @@ packages:
engines: {node: '>=6.0.0'}
dev: true
+ /@jridgewell/resolve-uri@3.1.1:
+ resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
/@jridgewell/set-array@1.1.2:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
dev: true
- /@jridgewell/source-map@0.3.3:
- resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==}
+ /@jridgewell/source-map@0.3.5:
+ resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
dependencies:
'@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/trace-mapping': 0.3.20
dev: true
/@jridgewell/sourcemap-codec@1.4.14:
@@ -1938,9 +2378,133 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
+ /@jridgewell/trace-mapping@0.3.20:
+ resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/@juggle/resize-observer@3.4.0:
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
- dev: true
+
+ /@keystone-ui/button@7.0.2(@types/react@18.2.20)(react-dom@18.2.0):
+ resolution: {integrity: sha512-bFuT3WtLRFWXGP0lMPRIxYG22u2BEvjP9blSeGGXQSvl3hC5Zh2r/BlylHeYaWFChcaRYRU2G/2QSLoPAvyDGQ==}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/icons': 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/loading': 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)
+ react: 18.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+ - react-dom
+ dev: false
+
+ /@keystone-ui/core@5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-0/rh2nhuQDyio1I8HWfeHUhHP3Adf9+RcsrtpJfcv+U6W3NsJnL/hX68WOYOSF7vYhFgtnuCx8a57xrK1xTsEQ==}
+ peerDependencies:
+ react: ^18.1.0
+ react-dom: ^18.1.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0)
+ '@types/facepaint': 1.2.5
+ facepaint: 1.2.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@keystone-ui/fields@7.2.0(@types/react@18.2.20):
+ resolution: {integrity: sha512-9SXKzuHeuyxwJeGhl01oC8f9IzF5SFOFTIHTDEATMgbM/HFAKC8ygR74ZcRcwyr8rlnmmCMB2nQx1CGDUuEBVQ==}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/icons': 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/popover': 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ date-fns: 2.30.0
+ react: 18.2.0
+ react-day-picker: 8.9.1(date-fns@2.30.0)(react@18.2.0)
+ react-dom: 18.2.0(react@18.2.0)
+ react-focus-lock: 2.9.6(@types/react@18.2.20)(react@18.2.0)
+ react-select: 5.8.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@keystone-ui/icons@6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-myJ8AoLxJrcLYAVgH3u+hO6wO/ZeidraLzlwxOyLMgLLBJsWwOOYVRZv2nHp6S/G/gIa6UaCQKC4VI8wjvieVg==}
+ peerDependencies:
+ react: ^18.1.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+ - react-dom
+ dev: false
+
+ /@keystone-ui/loading@6.0.2(@types/react@18.2.20)(react-dom@18.2.0):
+ resolution: {integrity: sha512-s72z2AcMzyVobKlbZ39JbyhtNrf7JMX6WaBYU59612OOXcOCYlc9X6Mt/AKUFYbx2uCOS8E1Fitxc+BT0Xoxwg==}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ transitivePeerDependencies:
+ - '@types/react'
+ - react-dom
+ dev: false
+
+ /@keystone-ui/modals@6.0.3(@types/react@18.2.20)(react-dom@18.2.0):
+ resolution: {integrity: sha512-0FgmwOjRfxfS5enXrpBrLnh4Aseq+EOyWIQIfpIAUgpsTjkW3nR/RUcJZ8fzebUTvspvTeN9gfIGp0k9b87ZXg==}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/button': 7.0.2(@types/react@18.2.20)(react-dom@18.2.0)
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-focus-lock: 2.9.6(@types/react@18.2.20)(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.20)(react@18.2.0)
+ react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - react-dom
+ dev: false
+
+ /@keystone-ui/popover@6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-E0WBEkoe+e0rjSAOBAFNKNHDVvIhx9YqEcwFLaCUUj6q93O7/gUq6wNrkrTfDAhz5O9tMgLkXE6jAHdvYFk/IQ==}
+ peerDependencies:
+ react: ^18.1.0
+ react-dom: ^18.1.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@popperjs/core': 2.11.8
+ focus-trap: 7.5.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@keystone-ui/tooltip@6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-lB+1TCcXvM2R8wKg7Wd7VIY10RaKjQXR/BKUf+trozl9v/NuFEX3Ym5GvanDQXyQgwfUC6xvUX3IuHjdhCrJIw==}
+ peerDependencies:
+ react: ^18.1.0
+ react-dom: ^18.1.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@keystone-ui/core': 5.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ '@keystone-ui/popover': 6.0.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)
+ apply-ref: 1.0.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
/@mdx-js/react@2.3.0(react@18.2.0):
resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==}
@@ -2031,6 +2595,10 @@ packages:
dev: true
optional: true
+ /@popperjs/core@2.11.8:
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+ dev: false
+
/@radix-ui/number@1.0.1:
resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
dependencies:
@@ -2516,9 +3084,21 @@ packages:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
- /@storybook/addon-actions@7.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Ev9oGlpxrt7tCpCmAYA04hsZYKnZIiksaQDCgKAf6I2+yUZBBkZh490yBPkMExpH5bLk7fAgjCMZP9gOyzaq3A==}
- peerDependencies:
+ /@sinonjs/commons@3.0.0:
+ resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==}
+ dependencies:
+ type-detect: 4.0.8
+ dev: true
+
+ /@sinonjs/fake-timers@10.3.0:
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+ dependencies:
+ '@sinonjs/commons': 3.0.0
+ dev: true
+
+ /@storybook/addon-actions@7.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Ev9oGlpxrt7tCpCmAYA04hsZYKnZIiksaQDCgKAf6I2+yUZBBkZh490yBPkMExpH5bLk7fAgjCMZP9gOyzaq3A==}
+ peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
@@ -2791,7 +3371,7 @@ packages:
- '@types/react-dom'
dev: true
- /@storybook/addon-styling@1.3.6(less@4.1.3)(postcss@8.4.27)(react-dom@18.2.0)(react@18.2.0)(webpack@5.82.0):
+ /@storybook/addon-styling@1.3.6(less@4.2.0)(postcss@8.4.27)(react-dom@18.2.0)(react@18.2.0)(webpack@5.89.0):
resolution: {integrity: sha512-g4e9vLnNlpjR3hHcyC8iCtgqcWQj6IPK+HZ8PdF92O95sa0nus+NG4meahEBwCsZm6CtYV/QMymFtLnp2NvAmg==}
hasBin: true
peerDependencies:
@@ -2823,18 +3403,18 @@ packages:
'@storybook/preview-api': 7.2.2
'@storybook/theming': 7.0.23(react-dom@18.2.0)(react@18.2.0)
'@storybook/types': 7.0.23
- css-loader: 6.8.1(webpack@5.82.0)
- less: 4.1.3
- less-loader: 11.1.2(less@4.1.3)(webpack@5.82.0)
+ css-loader: 6.8.1(webpack@5.89.0)
+ less: 4.2.0
+ less-loader: 11.1.2(less@4.2.0)(webpack@5.89.0)
postcss: 8.4.27
- postcss-loader: 7.3.2(postcss@8.4.27)(webpack@5.82.0)
+ postcss-loader: 7.3.2(postcss@8.4.27)(webpack@5.89.0)
prettier: 2.8.8
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
resolve-url-loader: 5.0.0
- sass-loader: 13.3.1(webpack@5.82.0)
- style-loader: 3.3.3(webpack@5.82.0)
- webpack: 5.82.0(esbuild@0.18.20)
+ sass-loader: 13.3.1(webpack@5.89.0)
+ style-loader: 3.3.3(webpack@5.89.0)
+ webpack: 5.89.0(esbuild@0.18.20)
transitivePeerDependencies:
- encoding
- fibers
@@ -3008,7 +3588,7 @@ packages:
remark-slug: 6.1.0
rollup: 3.28.0
typescript: 5.1.6
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
transitivePeerDependencies:
- encoding
- supports-color
@@ -3462,7 +4042,7 @@ packages:
react: 18.2.0
react-docgen: 6.0.0-alpha.3
react-dom: 18.2.0(react@18.2.0)
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
transitivePeerDependencies:
- '@preact/preset-vite'
- encoding
@@ -3759,18 +4339,18 @@ packages:
resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==}
dev: true
- /@types/eslint-scope@3.7.4:
- resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
+ /@types/eslint-scope@3.7.7:
+ resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
dependencies:
- '@types/eslint': 8.37.0
- '@types/estree': 1.0.1
+ '@types/eslint': 8.44.8
+ '@types/estree': 1.0.5
dev: true
- /@types/eslint@8.37.0:
- resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==}
+ /@types/eslint@8.44.8:
+ resolution: {integrity: sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==}
dependencies:
- '@types/estree': 1.0.1
- '@types/json-schema': 7.0.12
+ '@types/estree': 1.0.5
+ '@types/json-schema': 7.0.15
dev: true
/@types/estree@0.0.51:
@@ -3781,6 +4361,10 @@ packages:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
dev: true
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: true
+
/@types/express-serve-static-core@4.17.34:
resolution: {integrity: sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==}
dependencies:
@@ -3799,6 +4383,10 @@ packages:
'@types/serve-static': 1.15.1
dev: true
+ /@types/facepaint@1.2.5:
+ resolution: {integrity: sha512-fi9kvwtC3IQ6Y3QVDkYEZsqEcetAdWD0zqqk8pEHlDXWkgS2WzolWN8Z5PGPT7YJ7ga71CCI0fVKVnVKqV+P6Q==}
+ dev: false
+
/@types/find-cache-dir@3.2.1:
resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==}
dev: true
@@ -3816,6 +4404,9 @@ packages:
'@types/node': 20.4.9
dev: true
+ /@types/is-hotkey@0.1.10:
+ resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==}
+
/@types/istanbul-lib-coverage@2.0.4:
resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
dev: true
@@ -3832,6 +4423,21 @@ packages:
'@types/istanbul-lib-report': 3.0.0
dev: true
+ /@types/jest@29.5.11:
+ resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==}
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
+ /@types/jsdom@20.0.1:
+ resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
+ dependencies:
+ '@types/node': 20.4.9
+ '@types/tough-cookie': 4.0.5
+ parse5: 7.1.2
+ dev: true
+
/@types/json-schema@7.0.11:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true
@@ -3840,6 +4446,10 @@ packages:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
+ /@types/json-schema@7.0.15:
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ dev: true
+
/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
@@ -3848,6 +4458,16 @@ packages:
resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==}
dev: true
+ /@types/lodash@4.14.202:
+ resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
+ dev: false
+
+ /@types/mdast@3.0.15:
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
/@types/mdx@2.0.5:
resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==}
dev: true
@@ -3887,13 +4507,16 @@ packages:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
dev: true
+ /@types/parse-json@4.0.2:
+ resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
+ dev: false
+
/@types/pretty-hrtime@1.0.1:
resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==}
dev: true
/@types/prop-types@15.7.5:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
- dev: true
/@types/qs@6.9.7:
resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
@@ -3909,17 +4532,21 @@ packages:
'@types/react': 18.2.20
dev: true
+ /@types/react-transition-group@4.4.10:
+ resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
+ dependencies:
+ '@types/react': 18.2.20
+ dev: false
+
/@types/react@18.2.20:
resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==}
dependencies:
'@types/prop-types': 15.7.5
'@types/scheduler': 0.16.3
csstype: 3.1.2
- dev: true
/@types/scheduler@0.16.3:
resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
- dev: true
/@types/semver@7.5.0:
resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
@@ -3939,10 +4566,17 @@ packages:
'@types/node': 20.4.9
dev: true
- /@types/unist@2.0.6:
- resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
+ /@types/stack-utils@2.0.3:
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+ dev: true
+
+ /@types/tough-cookie@4.0.5:
+ resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
dev: true
+ /@types/unist@2.0.10:
+ resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+
/@types/yargs-parser@21.0.0:
resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
dev: true
@@ -3959,7 +4593,7 @@ packages:
'@types/yargs-parser': 21.0.0
dev: true
- /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)(typescript@5.1.6):
+ /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6):
resolution: {integrity: sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3971,7 +4605,7 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.6.2
- '@typescript-eslint/parser': 5.59.2(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
'@typescript-eslint/scope-manager': 5.60.0
'@typescript-eslint/type-utils': 5.60.0(eslint@8.46.0)(typescript@5.1.6)
'@typescript-eslint/utils': 5.60.0(eslint@8.46.0)(typescript@5.1.6)
@@ -4007,6 +4641,26 @@ packages:
- supports-color
dev: true
+ /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
+ debug: 4.3.4
+ eslint: 8.46.0
+ typescript: 5.1.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/scope-manager@5.59.2:
resolution: {integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4023,6 +4677,14 @@ packages:
'@typescript-eslint/visitor-keys': 5.60.0
dev: true
+ /@typescript-eslint/scope-manager@5.62.0:
+ resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ dev: true
+
/@typescript-eslint/type-utils@5.60.0(eslint@8.46.0)(typescript@5.1.6):
resolution: {integrity: sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4053,6 +4715,11 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
+ /@typescript-eslint/types@5.62.0:
+ resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
/@typescript-eslint/typescript-estree@5.59.2(typescript@5.1.6):
resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4095,6 +4762,27 @@ packages:
- supports-color
dev: true
+ /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6):
+ resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.5.4
+ tsutils: 3.21.0(typescript@5.1.6)
+ typescript: 5.1.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/utils@5.60.0(eslint@8.46.0)(typescript@5.1.6):
resolution: {integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4131,6 +4819,14 @@ packages:
eslint-visitor-keys: 3.4.2
dev: true
+ /@typescript-eslint/visitor-keys@5.62.0:
+ resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ eslint-visitor-keys: 3.4.3
+ dev: true
+
/@vitejs/plugin-react@3.1.0(vite@4.4.9):
resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -4142,7 +4838,7 @@ packages:
'@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.10)
magic-string: 0.27.0
react-refresh: 0.14.0
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -4157,7 +4853,7 @@ packages:
'@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.10)
'@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.10)
react-refresh: 0.14.0
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -4178,7 +4874,7 @@ packages:
std-env: 3.3.3
test-exclude: 6.0.0
v8-to-istanbul: 9.1.0
- vitest: 0.34.1(jsdom@22.1.0)(less@4.1.3)
+ vitest: 0.34.1(jsdom@22.1.0)(less@4.2.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -4204,7 +4900,7 @@ packages:
dependencies:
magic-string: 0.30.2
pathe: 1.1.1
- pretty-format: 29.6.2
+ pretty-format: 29.7.0
dev: true
/@vitest/spy@0.34.1:
@@ -4216,9 +4912,9 @@ packages:
/@vitest/utils@0.34.1:
resolution: {integrity: sha512-/ql9dsFi4iuEbiNcjNHQWXBum7aL8pyhxvfnD9gNtbjR9fUKAjxhj4AA3yfLXg6gJpMGGecvtF8Au2G9y3q47Q==}
dependencies:
- diff-sequences: 29.4.3
+ diff-sequences: 29.6.3
loupe: 2.3.6
- pretty-format: 29.6.2
+ pretty-format: 29.7.0
dev: true
/@volar/language-core@1.10.0:
@@ -4293,109 +4989,109 @@ packages:
- typescript
dev: true
- /@webassemblyjs/ast@1.11.5:
- resolution: {integrity: sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==}
+ /@webassemblyjs/ast@1.11.6:
+ resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==}
dependencies:
- '@webassemblyjs/helper-numbers': 1.11.5
- '@webassemblyjs/helper-wasm-bytecode': 1.11.5
+ '@webassemblyjs/helper-numbers': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
dev: true
- /@webassemblyjs/floating-point-hex-parser@1.11.5:
- resolution: {integrity: sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==}
+ /@webassemblyjs/floating-point-hex-parser@1.11.6:
+ resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
dev: true
- /@webassemblyjs/helper-api-error@1.11.5:
- resolution: {integrity: sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==}
+ /@webassemblyjs/helper-api-error@1.11.6:
+ resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
dev: true
- /@webassemblyjs/helper-buffer@1.11.5:
- resolution: {integrity: sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==}
+ /@webassemblyjs/helper-buffer@1.11.6:
+ resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==}
dev: true
- /@webassemblyjs/helper-numbers@1.11.5:
- resolution: {integrity: sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==}
+ /@webassemblyjs/helper-numbers@1.11.6:
+ resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
dependencies:
- '@webassemblyjs/floating-point-hex-parser': 1.11.5
- '@webassemblyjs/helper-api-error': 1.11.5
+ '@webassemblyjs/floating-point-hex-parser': 1.11.6
+ '@webassemblyjs/helper-api-error': 1.11.6
'@xtuc/long': 4.2.2
dev: true
- /@webassemblyjs/helper-wasm-bytecode@1.11.5:
- resolution: {integrity: sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==}
+ /@webassemblyjs/helper-wasm-bytecode@1.11.6:
+ resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==}
dev: true
- /@webassemblyjs/helper-wasm-section@1.11.5:
- resolution: {integrity: sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==}
+ /@webassemblyjs/helper-wasm-section@1.11.6:
+ resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==}
dependencies:
- '@webassemblyjs/ast': 1.11.5
- '@webassemblyjs/helper-buffer': 1.11.5
- '@webassemblyjs/helper-wasm-bytecode': 1.11.5
- '@webassemblyjs/wasm-gen': 1.11.5
+ '@webassemblyjs/ast': 1.11.6
+ '@webassemblyjs/helper-buffer': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/wasm-gen': 1.11.6
dev: true
- /@webassemblyjs/ieee754@1.11.5:
- resolution: {integrity: sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==}
+ /@webassemblyjs/ieee754@1.11.6:
+ resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==}
dependencies:
'@xtuc/ieee754': 1.2.0
dev: true
- /@webassemblyjs/leb128@1.11.5:
- resolution: {integrity: sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==}
+ /@webassemblyjs/leb128@1.11.6:
+ resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==}
dependencies:
'@xtuc/long': 4.2.2
dev: true
- /@webassemblyjs/utf8@1.11.5:
- resolution: {integrity: sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==}
+ /@webassemblyjs/utf8@1.11.6:
+ resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==}
dev: true
- /@webassemblyjs/wasm-edit@1.11.5:
- resolution: {integrity: sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==}
+ /@webassemblyjs/wasm-edit@1.11.6:
+ resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==}
dependencies:
- '@webassemblyjs/ast': 1.11.5
- '@webassemblyjs/helper-buffer': 1.11.5
- '@webassemblyjs/helper-wasm-bytecode': 1.11.5
- '@webassemblyjs/helper-wasm-section': 1.11.5
- '@webassemblyjs/wasm-gen': 1.11.5
- '@webassemblyjs/wasm-opt': 1.11.5
- '@webassemblyjs/wasm-parser': 1.11.5
- '@webassemblyjs/wast-printer': 1.11.5
+ '@webassemblyjs/ast': 1.11.6
+ '@webassemblyjs/helper-buffer': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/helper-wasm-section': 1.11.6
+ '@webassemblyjs/wasm-gen': 1.11.6
+ '@webassemblyjs/wasm-opt': 1.11.6
+ '@webassemblyjs/wasm-parser': 1.11.6
+ '@webassemblyjs/wast-printer': 1.11.6
dev: true
- /@webassemblyjs/wasm-gen@1.11.5:
- resolution: {integrity: sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==}
+ /@webassemblyjs/wasm-gen@1.11.6:
+ resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==}
dependencies:
- '@webassemblyjs/ast': 1.11.5
- '@webassemblyjs/helper-wasm-bytecode': 1.11.5
- '@webassemblyjs/ieee754': 1.11.5
- '@webassemblyjs/leb128': 1.11.5
- '@webassemblyjs/utf8': 1.11.5
+ '@webassemblyjs/ast': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/ieee754': 1.11.6
+ '@webassemblyjs/leb128': 1.11.6
+ '@webassemblyjs/utf8': 1.11.6
dev: true
- /@webassemblyjs/wasm-opt@1.11.5:
- resolution: {integrity: sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==}
+ /@webassemblyjs/wasm-opt@1.11.6:
+ resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==}
dependencies:
- '@webassemblyjs/ast': 1.11.5
- '@webassemblyjs/helper-buffer': 1.11.5
- '@webassemblyjs/wasm-gen': 1.11.5
- '@webassemblyjs/wasm-parser': 1.11.5
+ '@webassemblyjs/ast': 1.11.6
+ '@webassemblyjs/helper-buffer': 1.11.6
+ '@webassemblyjs/wasm-gen': 1.11.6
+ '@webassemblyjs/wasm-parser': 1.11.6
dev: true
- /@webassemblyjs/wasm-parser@1.11.5:
- resolution: {integrity: sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==}
+ /@webassemblyjs/wasm-parser@1.11.6:
+ resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==}
dependencies:
- '@webassemblyjs/ast': 1.11.5
- '@webassemblyjs/helper-api-error': 1.11.5
- '@webassemblyjs/helper-wasm-bytecode': 1.11.5
- '@webassemblyjs/ieee754': 1.11.5
- '@webassemblyjs/leb128': 1.11.5
- '@webassemblyjs/utf8': 1.11.5
+ '@webassemblyjs/ast': 1.11.6
+ '@webassemblyjs/helper-api-error': 1.11.6
+ '@webassemblyjs/helper-wasm-bytecode': 1.11.6
+ '@webassemblyjs/ieee754': 1.11.6
+ '@webassemblyjs/leb128': 1.11.6
+ '@webassemblyjs/utf8': 1.11.6
dev: true
- /@webassemblyjs/wast-printer@1.11.5:
- resolution: {integrity: sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==}
+ /@webassemblyjs/wast-printer@1.11.6:
+ resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==}
dependencies:
- '@webassemblyjs/ast': 1.11.5
+ '@webassemblyjs/ast': 1.11.6
'@xtuc/long': 4.2.2
dev: true
@@ -4445,12 +5141,19 @@ packages:
negotiator: 0.6.3
dev: true
- /acorn-import-assertions@1.8.0(acorn@8.10.0):
- resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==}
+ /acorn-globals@7.0.1:
+ resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
+ dependencies:
+ acorn: 8.11.2
+ acorn-walk: 8.2.0
+ dev: true
+
+ /acorn-import-assertions@1.9.0(acorn@8.11.2):
+ resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
peerDependencies:
acorn: ^8
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
dev: true
/acorn-jsx@5.3.2(acorn@7.4.1):
@@ -4491,6 +5194,12 @@ packages:
hasBin: true
dev: true
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
/address@1.2.2:
resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
engines: {node: '>= 10.0.0'}
@@ -4594,7 +5303,6 @@ packages:
engines: {node: '>=4'}
dependencies:
color-convert: 1.9.3
- dev: true
/ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
@@ -4629,6 +5337,10 @@ packages:
resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==}
dev: true
+ /apply-ref@1.0.0:
+ resolution: {integrity: sha512-InKjUB8TMcIiSVV/9hqmMpIXkpIjCIbRiB3qdPu4/kU9AagF2uRAdAfFgt9+ykw5xQYyqAmcIKNsgy4tqKPquQ==}
+ dev: false
+
/arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: true
@@ -4804,7 +5516,25 @@ packages:
'@babel/core': 7.22.10
dev: true
- /babel-loader@9.1.3(@babel/core@7.22.10)(webpack@5.82.0):
+ /babel-jest@29.7.0(@babel/core@7.22.10):
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.22.10
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.20.0
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.22.10)
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-loader@9.1.3(@babel/core@7.22.10)(webpack@5.89.0):
resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -4814,7 +5544,7 @@ packages:
'@babel/core': 7.22.10
find-cache-dir: 4.0.0
schema-utils: 4.0.1
- webpack: 5.82.0(esbuild@0.18.20)
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
/babel-plugin-istanbul@6.1.1:
@@ -4830,6 +5560,25 @@ packages:
- supports-color
dev: true
+ /babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/template': 7.22.5
+ '@babel/types': 7.22.10
+ '@types/babel__core': 7.20.0
+ '@types/babel__traverse': 7.18.5
+ dev: true
+
+ /babel-plugin-macros@3.1.0:
+ resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
+ engines: {node: '>=10', npm: '>=6'}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ cosmiconfig: 7.1.0
+ resolve: 1.22.4
+ dev: false
+
/babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.10):
resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==}
peerDependencies:
@@ -4866,6 +5615,37 @@ packages:
- supports-color
dev: true
+ /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.10):
+ resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.10
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.10)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.10)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.10)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.10)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.10)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.10)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.10)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.10)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.10)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.10)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.10)
+ dev: true
+
+ /babel-preset-jest@29.6.3(@babel/core@7.22.10):
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.10
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10)
+ dev: true
+
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -4982,6 +5762,17 @@ packages:
update-browserslist-db: 1.0.11(browserslist@4.21.5)
dev: true
+ /browserslist@4.22.2:
+ resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001566
+ electron-to-chromium: 1.4.606
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.22.2)
+ dev: true
+
/bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
dependencies:
@@ -5029,7 +5820,7 @@ packages:
find-up: 5.0.0
foreground-child: 2.0.0
istanbul-lib-coverage: 3.2.0
- istanbul-lib-report: 3.0.0
+ istanbul-lib-report: 3.0.1
istanbul-reports: 3.1.5
rimraf: 3.0.2
test-exclude: 6.0.0
@@ -5053,7 +5844,6 @@ packages:
/callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- dev: true
/camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
@@ -5065,6 +5855,11 @@ packages:
engines: {node: '>=6'}
dev: true
+ /camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+ dev: true
+
/caniuse-lite@1.0.30001486:
resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==}
dev: true
@@ -5073,6 +5868,14 @@ packages:
resolution: {integrity: sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==}
dev: true
+ /caniuse-lite@1.0.30001566:
+ resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==}
+ dev: true
+
+ /ccount@1.1.0:
+ resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
+ dev: false
+
/chai@4.3.7:
resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==}
engines: {node: '>=4'}
@@ -5093,7 +5896,6 @@ packages:
ansi-styles: 3.2.1
escape-string-regexp: 1.0.5
supports-color: 5.5.0
- dev: true
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -5108,6 +5910,23 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
+ /char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /character-entities-legacy@1.1.4:
+ resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
+ dev: false
+
+ /character-entities@1.2.4:
+ resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
+ dev: false
+
+ /character-reference-invalid@1.1.4:
+ resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
+ dev: false
+
/check-error@1.0.2:
resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
dev: true
@@ -5124,7 +5943,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/chownr@1.1.4:
@@ -5146,6 +5965,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /cjs-module-lexer@1.2.3:
+ resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
+ dev: true
+
/clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
@@ -5196,6 +6019,15 @@ packages:
wrap-ansi: 7.0.0
dev: true
+ /cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: true
+
/clone-deep@4.0.1:
resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
engines: {node: '>=6'}
@@ -5210,11 +6042,19 @@ packages:
engines: {node: '>=0.8'}
dev: true
+ /co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+ dev: true
+
+ /collect-v8-coverage@1.0.2:
+ resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==}
+ dev: true
+
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
- dev: true
/color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
@@ -5225,7 +6065,6 @@ packages:
/color-name@1.1.3:
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
- dev: true
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -5303,6 +6142,10 @@ packages:
- supports-color
dev: true
+ /compute-scroll-into-view@3.1.0:
+ resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
+ dev: false
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
@@ -5331,7 +6174,6 @@ packages:
/convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
- dev: true
/convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -5362,6 +6204,17 @@ packages:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true
+ /cosmiconfig@7.1.0:
+ resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/parse-json': 4.0.2
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+ dev: false
+
/cosmiconfig@8.1.3:
resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==}
engines: {node: '>=14'}
@@ -5372,6 +6225,25 @@ packages:
path-type: 4.0.0
dev: true
+ /create-jest@29.7.0(@types/node@20.4.9):
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@20.4.9)
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -5386,7 +6258,7 @@ packages:
engines: {node: '>=8'}
dev: true
- /css-loader@6.8.1(webpack@5.82.0):
+ /css-loader@6.8.1(webpack@5.89.0):
resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==}
engines: {node: '>= 12.13.0'}
peerDependencies:
@@ -5400,7 +6272,7 @@ packages:
postcss-modules-values: 4.0.0(postcss@8.4.27)
postcss-value-parser: 4.2.0
semver: 7.5.4
- webpack: 5.82.0(esbuild@0.18.20)
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
/cssesc@3.0.0:
@@ -5409,6 +6281,21 @@ packages:
hasBin: true
dev: true
+ /cssom@0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+ dev: true
+
+ /cssom@0.5.0:
+ resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
+ dev: true
+
+ /cssstyle@2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cssom: 0.3.8
+ dev: true
+
/cssstyle@3.0.0:
resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==}
engines: {node: '>=14'}
@@ -5418,6 +6305,14 @@ packages:
/csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+
+ /data-urls@3.0.2:
+ resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ abab: 2.0.6
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
dev: true
/data-urls@4.0.0:
@@ -5429,6 +6324,13 @@ packages:
whatwg-url: 12.0.1
dev: true
+ /date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ dev: false
+
/de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true
@@ -5465,12 +6367,20 @@ packages:
optional: true
dependencies:
ms: 2.1.2
- dev: true
/decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
dev: true
+ /dedent@1.5.1:
+ resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+ dev: true
+
/deep-eql@4.1.3:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
engines: {node: '>=6'}
@@ -5505,6 +6415,11 @@ packages:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
+ /deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/default-browser-id@3.0.0:
resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
engines: {node: '>=12'}
@@ -5575,9 +6490,13 @@ packages:
engines: {node: '>=8'}
dev: true
+ /detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+ dev: true
+
/detect-node-es@1.1.0:
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
- dev: true
/detect-package-manager@2.0.1:
resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==}
@@ -5600,8 +6519,8 @@ packages:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dev: true
- /diff-sequences@29.4.3:
- resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==}
+ /diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
@@ -5612,6 +6531,11 @@ packages:
path-type: 4.0.0
dev: true
+ /direction@1.0.4:
+ resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==}
+ hasBin: true
+ dev: false
+
/dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: true
@@ -5634,6 +6558,13 @@ packages:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
dev: true
+ /dom-helpers@5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ csstype: 3.1.2
+ dev: false
+
/domexception@4.0.0:
resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
engines: {node: '>=12'}
@@ -5684,6 +6615,15 @@ packages:
resolution: {integrity: sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==}
dev: true
+ /electron-to-chromium@1.4.606:
+ resolution: {integrity: sha512-Zdv0XuhfyWZUsQ5Uq59d43ZmZOdoGZNWjeN4WCxxlQaP8crAWdnWcTxfHKcaJl6PW2SWpHx6DsxSx7v6KcGCuw==}
+ dev: true
+
+ /emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+ dev: true
+
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
dev: true
@@ -5708,8 +6648,8 @@ packages:
once: 1.4.0
dev: true
- /enhanced-resolve@5.13.0:
- resolution: {integrity: sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==}
+ /enhanced-resolve@5.15.0:
+ resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
engines: {node: '>=10.13.0'}
dependencies:
graceful-fs: 4.2.11
@@ -5740,7 +6680,6 @@ packages:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
dependencies:
is-arrayish: 0.2.1
- dev: true
/es-abstract@1.21.2:
resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
@@ -5800,8 +6739,8 @@ packages:
resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
dev: true
- /es-module-lexer@1.2.1:
- resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==}
+ /es-module-lexer@1.4.1:
+ resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
dev: true
/es-set-tostringtag@2.0.1:
@@ -5889,12 +6828,15 @@ packages:
/escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
+
+ /escape-string-regexp@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
dev: true
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- dev: true
/escodegen@2.0.0:
resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
@@ -5928,11 +6870,11 @@ packages:
eslint-plugin-promise: ^6.0.0
typescript: '*'
dependencies:
- '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/eslint-plugin': 5.60.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6)
'@typescript-eslint/parser': 5.59.2(eslint@8.46.0)(typescript@5.1.6)
eslint: 8.46.0
eslint-config-standard: 17.1.0(eslint-plugin-import@2.28.0)(eslint-plugin-n@16.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.46.0)
- eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)
+ eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
eslint-plugin-n: 16.0.1(eslint@8.46.0)
eslint-plugin-promise: 6.1.1(eslint@8.46.0)
typescript: 5.1.6
@@ -5950,7 +6892,7 @@ packages:
eslint-plugin-promise: ^6.0.0
dependencies:
eslint: 8.46.0
- eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)
+ eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
eslint-plugin-n: 16.0.1(eslint@8.46.0)
eslint-plugin-promise: 6.1.1(eslint@8.46.0)
dev: true
@@ -5965,7 +6907,7 @@ packages:
- supports-color
dev: true
- /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0):
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@@ -5986,7 +6928,7 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 5.59.2(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
debug: 3.2.7
eslint: 8.46.0
eslint-import-resolver-node: 0.3.7
@@ -6005,7 +6947,7 @@ packages:
eslint: 8.46.0
dev: true
- /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.59.2)(eslint@8.46.0):
+ /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0):
resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==}
engines: {node: '>=4'}
peerDependencies:
@@ -6015,7 +6957,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 5.59.2(eslint@8.46.0)(typescript@5.1.6)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
array-includes: 3.1.6
array.prototype.findlastindex: 1.2.2
array.prototype.flat: 1.3.1
@@ -6024,7 +6966,7 @@ packages:
doctrine: 2.1.0
eslint: 8.46.0
eslint-import-resolver-node: 0.3.7
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0)
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0)
has: 1.0.3
is-core-module: 2.13.0
is-glob: 4.0.3
@@ -6128,6 +7070,11 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
+ /eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
/eslint@8.46.0:
resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6273,6 +7220,22 @@ packages:
strip-final-newline: 3.0.0
dev: true
+ /exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
/express@4.18.2:
resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
engines: {node: '>= 0.10.0'}
@@ -6328,6 +7291,10 @@ packages:
- supports-color
dev: true
+ /facepaint@1.2.1:
+ resolution: {integrity: sha512-oNvBekbhsm/0PNSOWca5raHNAi6dG960Bx6LJgxDPNF59WpuspgQ17bN5MKwOr7JcFdQYc7StW3VZ28DBZLavQ==}
+ dev: false
+
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
@@ -6441,6 +7408,10 @@ packages:
pkg-dir: 7.0.0
dev: true
+ /find-root@1.1.0:
+ resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+ dev: false
+
/find-up@3.0.0:
resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
engines: {node: '>=6'}
@@ -6489,6 +7460,19 @@ packages:
engines: {node: '>=0.4.0'}
dev: true
+ /focus-lock@1.0.0:
+ resolution: {integrity: sha512-a8Ge6cdKh9za/GZR/qtigTAk7SrGore56EFcoMshClsh7FLk1zwszc/ltuMfKhx56qeuyL/jWQ4J4axou0iJ9w==}
+ engines: {node: '>=10'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /focus-trap@7.5.4:
+ resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
+ dependencies:
+ tabbable: 6.2.0
+ dev: false
+
/for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
dependencies:
@@ -6534,6 +7518,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /fp-ts@2.16.1:
+ resolution: {integrity: sha512-by7U5W8dkIzcvDofUcO42yl9JbnHTEDBrzu3pt5fKT+Z4Oy85I21K80EYJYdjQGC2qum4Vo55Ag57iiIK4FYuA==}
+ dev: false
+
/fraction.js@4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true
@@ -6576,8 +7564,8 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
- /fsevents@2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
@@ -6586,7 +7574,6 @@ packages:
/function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
- dev: true
/function.prototype.name@1.1.5:
resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
@@ -6636,7 +7623,6 @@ packages:
/get-nonce@1.0.1:
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
engines: {node: '>=6'}
- dev: true
/get-npm-tarball-url@2.0.3:
resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==}
@@ -6828,7 +7814,6 @@ packages:
/has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
- dev: true
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
@@ -6863,13 +7848,18 @@ packages:
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: 1.1.1
- dev: true
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
dev: true
+ /hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+ dependencies:
+ react-is: 16.13.1
+ dev: false
+
/hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
dev: true
@@ -6988,19 +7978,31 @@ packages:
dev: true
optional: true
+ /immer@10.0.3:
+ resolution: {integrity: sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==}
+ dev: false
+
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
- dev: true
/import-lazy@4.0.0:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
engines: {node: '>=8'}
dev: true
+ /import-local@3.1.0:
+ resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+ dev: true
+
/imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
@@ -7035,7 +8037,23 @@ packages:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
dependencies:
loose-envify: 1.4.0
- dev: true
+
+ /io-ts-excess@1.0.1(fp-ts@2.16.1):
+ resolution: {integrity: sha512-yJQ+pGztBMIQmfsKfSAeQ1w7UJywvj37NIFriMAZ2tMLTpp1IngUvtxqI+QlW+RlXDn7cthMxrpJ0CnOx6Dn+w==}
+ peerDependencies:
+ fp-ts: ^2.0.0
+ dependencies:
+ fp-ts: 2.16.1
+ io-ts: 2.2.21(fp-ts@2.16.1)
+ dev: false
+
+ /io-ts@2.2.21(fp-ts@2.16.1):
+ resolution: {integrity: sha512-zz2Z69v9ZIC3mMLYWIeoUcwWD6f+O7yP92FMVVaXEOSZH1jnVBmET/urd/uoarD1WGBY4rCj8TAyMPzsGNzMFQ==}
+ peerDependencies:
+ fp-ts: ^2.5.0
+ dependencies:
+ fp-ts: 2.16.1
+ dev: false
/ip@2.0.0:
resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
@@ -7051,6 +8069,17 @@ packages:
engines: {node: '>=8'}
dev: true
+ /is-alphabetical@1.0.4:
+ resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
+ dev: false
+
+ /is-alphanumerical@1.0.4:
+ resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
+ dependencies:
+ is-alphabetical: 1.0.4
+ is-decimal: 1.0.4
+ dev: false
+
/is-arguments@1.1.1:
resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
engines: {node: '>= 0.4'}
@@ -7069,7 +8098,6 @@ packages:
/is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- dev: true
/is-bigint@1.0.4:
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
@@ -7101,7 +8129,6 @@ packages:
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
dependencies:
has: 1.0.3
- dev: true
/is-date-object@1.0.5:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
@@ -7110,6 +8137,10 @@ packages:
has-tostringtag: 1.0.0
dev: true
+ /is-decimal@1.0.4:
+ resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
+ dev: false
+
/is-deflate@1.0.0:
resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==}
dev: true
@@ -7135,6 +8166,11 @@ packages:
engines: {node: '>=12'}
dev: true
+ /is-generator-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+ dev: true
+
/is-generator-function@1.0.10:
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
engines: {node: '>= 0.4'}
@@ -7154,6 +8190,14 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /is-hexadecimal@1.0.4:
+ resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
+ dev: false
+
+ /is-hotkey@0.2.0:
+ resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
+ dev: false
+
/is-interactive@1.0.0:
resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
engines: {node: '>=8'}
@@ -7208,7 +8252,6 @@ packages:
/is-plain-object@5.0.0:
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
engines: {node: '>=0.10.0'}
- dev: true
/is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -7335,13 +8378,17 @@ packages:
- supports-color
dev: true
- /istanbul-lib-report@3.0.0:
- resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
- engines: {node: '>=8'}
+ /istanbul-lib-instrument@6.0.1:
+ resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==}
+ engines: {node: '>=10'}
dependencies:
+ '@babel/core': 7.22.10
+ '@babel/parser': 7.22.10
+ '@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.0
- make-dir: 3.1.0
- supports-color: 7.2.0
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - supports-color
dev: true
/istanbul-lib-report@3.0.1:
@@ -7392,23 +8439,249 @@ packages:
minimatch: 3.1.2
dev: true
+ /jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ dev: true
+
+ /jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.5.1
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.0.4
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ dev: true
+
+ /jest-cli@29.7.0(@types/node@20.4.9):
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@20.4.9)
+ exit: 0.1.2
+ import-local: 3.1.0
+ jest-config: 29.7.0(@types/node@20.4.9)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
+ /jest-config@29.7.0(@types/node@20.4.9):
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ '@babel/core': 7.22.10
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ babel-jest: 29.7.0(@babel/core@7.22.10)
+ chalk: 4.1.2
+ ci-info: 3.8.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.5
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ dev: true
+
+ /jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+ dev: true
+
+ /jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-environment-jsdom@29.7.0:
+ resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/jsdom': 20.0.1
+ '@types/node': 20.4.9
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ jsdom: 20.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /jest-environment-node@29.7.0:
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
+ /jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
/jest-haste-map@29.5.0:
resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@jest/types': 29.5.0
+ '@jest/types': 29.6.3
'@types/graceful-fs': 4.1.6
'@types/node': 20.4.9
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- jest-worker: 29.5.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.5
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /jest-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.6
+ '@types/node': 20.4.9
+ anymatch: 3.1.3
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
micromatch: 4.0.5
walker: 1.0.8
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
+ dev: true
+
+ /jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/code-frame': 7.22.10
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
dev: true
/jest-mock@27.5.1:
@@ -7419,16 +8692,154 @@ packages:
'@types/node': 20.4.9
dev: true
+ /jest-mock@29.7.0:
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ jest-util: 29.7.0
+ dev: true
+
+ /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 29.7.0
+ dev: true
+
/jest-regex-util@29.4.3:
resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
- /jest-util@29.5.0:
- resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==}
+ /jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
+ /jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.4
+ resolve.exports: 2.0.2
+ slash: 3.0.0
+ dev: true
+
+ /jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@jest/types': 29.5.0
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ chalk: 4.1.2
+ cjs-module-lexer: 1.2.3
+ collect-v8-coverage: 1.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.22.10
+ '@babel/generator': 7.22.10
+ '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.10)
+ '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.10)
+ '@babel/types': 7.22.10
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
'@types/node': 20.4.9
chalk: 4.1.2
ci-info: 3.8.0
@@ -7436,6 +8847,32 @@ packages:
picomatch: 2.3.1
dev: true
+ /jest-validate@29.7.0:
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.4.9
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+ dev: true
+
/jest-worker@27.5.1:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
@@ -7445,16 +8882,37 @@ packages:
supports-color: 8.1.1
dev: true
- /jest-worker@29.5.0:
- resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==}
+ /jest-worker@29.7.0:
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@types/node': 20.4.9
- jest-util: 29.5.0
+ jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
+ /jest@29.7.0(@types/node@20.4.9):
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/types': 29.6.3
+ import-local: 3.1.0
+ jest-cli: 29.7.0(@types/node@20.4.9)
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/jiti@1.18.2:
resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
hasBin: true
@@ -7512,6 +8970,47 @@ packages:
- supports-color
dev: true
+ /jsdom@20.0.3:
+ resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ abab: 2.0.6
+ acorn: 8.11.2
+ acorn-globals: 7.0.1
+ cssom: 0.5.0
+ cssstyle: 2.3.0
+ data-urls: 3.0.2
+ decimal.js: 10.4.3
+ domexception: 4.0.0
+ escodegen: 2.0.0
+ form-data: 4.0.0
+ html-encoding-sniffer: 3.0.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.4
+ parse5: 7.1.2
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.2
+ w3c-xmlserializer: 4.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 2.0.0
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
+ ws: 8.13.0
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
/jsdom@22.1.0:
resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==}
engines: {node: '>=16'}
@@ -7563,7 +9062,6 @@ packages:
/json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- dev: true
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -7650,7 +9148,7 @@ packages:
dotenv-expand: 10.0.0
dev: true
- /less-loader@11.1.2(less@4.1.3)(webpack@5.82.0):
+ /less-loader@11.1.2(less@4.2.0)(webpack@5.89.0):
resolution: {integrity: sha512-2bSaN2j13bUh/5BuwJKuY2DDWVmfBsS6oWRe8v1mGj7F0EpcL+WyWkDQVoEfsVRE4ac5/OuP44ZCaVsXWrQQ9A==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -7658,18 +9156,18 @@ packages:
webpack: ^5.0.0
dependencies:
klona: 2.0.6
- less: 4.1.3
- webpack: 5.82.0(esbuild@0.18.20)
+ less: 4.2.0
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
- /less@4.1.3:
- resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==}
+ /less@4.2.0:
+ resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==}
engines: {node: '>=6'}
hasBin: true
dependencies:
copy-anything: 2.0.6
parse-node-version: 1.0.1
- tslib: 2.5.0
+ tslib: 2.6.2
optionalDependencies:
errno: 0.1.8
graceful-fs: 4.2.11
@@ -7710,7 +9208,6 @@ packages:
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- dev: true
/lint-staged@13.2.3:
resolution: {integrity: sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==}
@@ -7820,7 +9317,6 @@ packages:
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- dev: true
/log-symbols@4.1.0:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
@@ -7840,6 +9336,10 @@ packages:
wrap-ansi: 6.2.0
dev: true
+ /longest-streak@2.0.4:
+ resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
+ dev: false
+
/loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -7937,21 +9437,83 @@ packages:
react: 18.2.0
dev: true
+ /match-sorter@6.3.1:
+ resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==}
+ dependencies:
+ '@babel/runtime': 7.21.5
+ remove-accents: 0.4.2
+ dev: false
+
/mdast-util-definitions@4.0.0:
resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==}
dependencies:
unist-util-visit: 2.0.3
dev: true
+ /mdast-util-find-and-replace@1.1.1:
+ resolution: {integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==}
+ dependencies:
+ escape-string-regexp: 4.0.0
+ unist-util-is: 4.1.0
+ unist-util-visit-parents: 3.1.1
+ dev: false
+
+ /mdast-util-from-markdown@0.8.5:
+ resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-string: 2.0.0
+ micromark: 2.11.4
+ parse-entities: 2.0.0
+ unist-util-stringify-position: 2.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-gfm-autolink-literal@0.1.3:
+ resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==}
+ dependencies:
+ ccount: 1.1.0
+ mdast-util-find-and-replace: 1.1.1
+ micromark: 2.11.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-gfm-strikethrough@0.2.3:
+ resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==}
+ dependencies:
+ mdast-util-to-markdown: 0.6.5
+ dev: false
+
+ /mdast-util-to-markdown@0.6.5:
+ resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ longest-streak: 2.0.4
+ mdast-util-to-string: 2.0.0
+ parse-entities: 2.0.0
+ repeat-string: 1.6.1
+ zwitch: 1.0.5
+ dev: false
+
/mdast-util-to-string@1.1.0:
resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==}
dev: true
+ /mdast-util-to-string@2.0.0:
+ resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
+ dev: false
+
/media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
dev: true
+ /memoize-one@6.0.0:
+ resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+ dev: false
+
/memoizerific@1.11.3:
resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
dependencies:
@@ -7976,6 +9538,31 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /micromark-extension-gfm-autolink-literal@0.5.7:
+ resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==}
+ dependencies:
+ micromark: 2.11.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /micromark-extension-gfm-strikethrough@0.6.5:
+ resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==}
+ dependencies:
+ micromark: 2.11.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /micromark@2.11.4:
+ resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
+ dependencies:
+ debug: 4.3.4
+ parse-entities: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
@@ -8087,7 +9674,7 @@ packages:
/mlly@1.4.0:
resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==}
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
pathe: 1.1.1
pkg-types: 1.0.3
ufo: 1.1.2
@@ -8108,7 +9695,6 @@ packages:
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- dev: true
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -8148,7 +9734,7 @@ packages:
dependencies:
debug: 3.2.7
iconv-lite: 0.6.3
- sax: 1.2.4
+ sax: 1.3.0
transitivePeerDependencies:
- supports-color
dev: true
@@ -8198,6 +9784,10 @@ packages:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
dev: true
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+ dev: true
+
/normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies:
@@ -8238,7 +9828,6 @@ packages:
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- dev: true
/object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
@@ -8465,7 +10054,17 @@ packages:
engines: {node: '>=6'}
dependencies:
callsites: 3.1.0
- dev: true
+
+ /parse-entities@2.0.0:
+ resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
+ dependencies:
+ character-entities: 1.2.4
+ character-entities-legacy: 1.1.4
+ character-reference-invalid: 1.1.4
+ is-alphanumerical: 1.0.4
+ is-decimal: 1.0.4
+ is-hexadecimal: 1.0.4
+ dev: false
/parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
@@ -8475,7 +10074,6 @@ packages:
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
- dev: true
/parse-node-version@1.0.1:
resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
@@ -8525,7 +10123,6 @@ packages:
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- dev: true
/path-scurry@1.10.1:
resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
@@ -8542,7 +10139,6 @@ packages:
/path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
- dev: true
/pathe@1.1.1:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
@@ -8676,7 +10272,7 @@ packages:
yaml: 2.2.2
dev: true
- /postcss-loader@7.3.2(postcss@8.4.27)(webpack@5.82.0):
+ /postcss-loader@7.3.2(postcss@8.4.27)(webpack@5.89.0):
resolution: {integrity: sha512-c7qDlXErX6n0VT+LUsW+nwefVtTu3ORtVvK8EXuUIDcxo+b/euYqpuHlJAvePb0Af5e8uMjR/13e0lTuYifaig==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -8688,7 +10284,7 @@ packages:
klona: 2.0.6
postcss: 8.4.27
semver: 7.5.4
- webpack: 5.82.0(esbuild@0.18.20)
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
/postcss-modules-extract-imports@3.0.0(postcss@8.4.27):
@@ -8794,11 +10390,11 @@ packages:
react-is: 17.0.2
dev: true
- /pretty-format@29.6.2:
- resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==}
+ /pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@jest/schemas': 29.6.0
+ '@jest/schemas': 29.6.3
ansi-styles: 5.2.0
react-is: 18.1.0
dev: true
@@ -8836,7 +10432,6 @@ packages:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
- dev: true
/proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
@@ -8906,6 +10501,10 @@ packages:
- utf-8-validate
dev: true
+ /pure-rand@6.0.4:
+ resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==}
+ dev: true
+
/qs@6.11.0:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
@@ -8953,6 +10552,15 @@ packages:
unpipe: 1.0.0
dev: true
+ /react-clientside-effect@1.2.6(react@18.2.0):
+ resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==}
+ peerDependencies:
+ react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ react: 18.2.0
+ dev: false
+
/react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==}
peerDependencies:
@@ -8963,6 +10571,16 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
+ /react-day-picker@8.9.1(date-fns@2.30.0)(react@18.2.0):
+ resolution: {integrity: sha512-W0SPApKIsYq+XCtfGeMYDoU0KbsG3wfkYtlw8l+vZp6KoBXGOlhzBUp4tNx1XiwiOZwhfdGOlj7NGSCKGSlg5Q==}
+ peerDependencies:
+ date-fns: ^2.28.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ date-fns: 2.30.0
+ react: 18.2.0
+ dev: false
+
/react-docgen-typescript@2.2.2(typescript@5.1.6):
resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==}
peerDependencies:
@@ -9012,6 +10630,29 @@ packages:
react-is: 18.1.0
dev: true
+ /react-fast-compare@3.2.2:
+ resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
+ dev: false
+
+ /react-focus-lock@2.9.6(@types/react@18.2.20)(react@18.2.0):
+ resolution: {integrity: sha512-B7gYnCjHNrNYwY2juS71dHbf0+UpXXojt02svxybj8N5bxceAkzPChKEncHuratjUHkIFNCn06k2qj1DRlzTug==}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@types/react': 18.2.20
+ focus-lock: 1.0.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-clientside-effect: 1.2.6(react@18.2.0)
+ use-callback-ref: 1.3.0(@types/react@18.2.20)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0)
+ dev: false
+
/react-inspector@6.0.1(react@18.2.0):
resolution: {integrity: sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg==}
peerDependencies:
@@ -9022,7 +10663,6 @@ packages:
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
- dev: true
/react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
@@ -9032,6 +10672,20 @@ packages:
resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==}
dev: true
+ /react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==}
+ peerDependencies:
+ '@popperjs/core': ^2.0.0
+ react: ^16.8.0 || ^17 || ^18
+ react-dom: ^16.8.0 || ^17 || ^18
+ dependencies:
+ '@popperjs/core': 2.11.8
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-fast-compare: 3.2.2
+ warning: 4.0.3
+ dev: false
+
/react-refresh@0.14.0:
resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
engines: {node: '>=0.10.0'}
@@ -9051,7 +10705,6 @@ packages:
react: 18.2.0
react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0)
tslib: 2.5.0
- dev: true
/react-remove-scroll@2.5.5(@types/react@18.2.20)(react@18.2.0):
resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==}
@@ -9070,7 +10723,27 @@ packages:
tslib: 2.5.0
use-callback-ref: 1.3.0(@types/react@18.2.20)(react@18.2.0)
use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0)
- dev: true
+
+ /react-select@5.8.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@emotion/cache': 11.11.0
+ '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0)
+ '@floating-ui/dom': 1.5.1
+ '@types/react-transition-group': 4.4.10
+ memoize-one: 6.0.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
+ use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.20)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
/react-style-singleton@2.2.1(@types/react@18.2.20)(react@18.2.0):
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
@@ -9087,7 +10760,20 @@ packages:
invariant: 2.2.4
react: 18.2.0
tslib: 2.5.0
- dev: true
+
+ /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+ dependencies:
+ '@babel/runtime': 7.21.5
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
/react@18.2.0:
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
@@ -9182,7 +10868,6 @@ packages:
/regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
- dev: true
/regenerator-transform@0.15.2:
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
@@ -9240,6 +10925,15 @@ packages:
unist-util-visit: 2.0.3
dev: true
+ /remove-accents@0.4.2:
+ resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==}
+ dev: false
+
+ /repeat-string@1.6.1:
+ resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+ engines: {node: '>=0.10'}
+ dev: false
+
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -9259,10 +10953,16 @@ packages:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
dev: true
+ /resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ resolve-from: 5.0.0
+ dev: true
+
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
- dev: true
/resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
@@ -9280,6 +10980,11 @@ packages:
source-map: 0.6.1
dev: true
+ /resolve.exports@2.0.2:
+ resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
+ engines: {node: '>=10'}
+ dev: true
+
/resolve@1.19.0:
resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
dependencies:
@@ -9303,7 +11008,6 @@ packages:
is-core-module: 2.13.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- dev: true
/resolve@2.0.0-next.4:
resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
@@ -9357,7 +11061,7 @@ packages:
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/rrweb-cssom@0.6.0:
@@ -9400,7 +11104,7 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
- /sass-loader@13.3.1(webpack@5.82.0):
+ /sass-loader@13.3.1(webpack@5.89.0):
resolution: {integrity: sha512-cBTxmgyVA1nXPvIK4brjJMXOMJ2v2YrQEuHqLw3LylGb3gsR6jAvdjHMcy/+JGTmmIF9SauTrLLR7bsWDMWqgg==}
engines: {node: '>= 14.15.0'}
peerDependencies:
@@ -9421,11 +11125,11 @@ packages:
dependencies:
klona: 2.0.6
neo-async: 2.6.2
- webpack: 5.82.0(esbuild@0.18.20)
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
- /sax@1.2.4:
- resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ /sax@1.3.0:
+ resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
dev: true
optional: true
@@ -9441,11 +11145,11 @@ packages:
dependencies:
loose-envify: 1.4.0
- /schema-utils@3.1.2:
- resolution: {integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==}
+ /schema-utils@3.3.0:
+ resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/json-schema': 7.0.12
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
ajv-keywords: 3.5.2(ajv@6.12.6)
dev: true
@@ -9460,6 +11164,12 @@ packages:
ajv-keywords: 5.1.0(ajv@8.12.0)
dev: true
+ /scroll-into-view-if-needed@3.1.0:
+ resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
+ dependencies:
+ compute-scroll-into-view: 3.1.0
+ dev: false
+
/semver@5.7.1:
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
hasBin: true
@@ -9588,6 +11298,53 @@ packages:
engines: {node: '>=8'}
dev: true
+ /slate-history@0.100.0(slate@0.101.1):
+ resolution: {integrity: sha512-x5rUuWLNtH97hs9PrFovGgt3Qc5zkTm/5mcUB+0NR/TK923eLax4HsL6xACLHMs245nI6aJElyM1y6hN0y5W/Q==}
+ peerDependencies:
+ slate: '>=0.65.3'
+ dependencies:
+ is-plain-object: 5.0.0
+ slate: 0.101.1
+ dev: false
+
+ /slate-hyperscript@0.100.0(slate@0.101.1):
+ resolution: {integrity: sha512-fb2KdAYg6RkrQGlqaIi4wdqz3oa0S4zKNBJlbnJbNOwa23+9FLD6oPVx9zUGqCSIpy+HIpOeqXrg0Kzwh/Ii4A==}
+ peerDependencies:
+ slate: '>=0.65.3'
+ dependencies:
+ is-plain-object: 5.0.0
+ slate: 0.101.1
+ dev: false
+
+ /slate-react@0.101.2(react-dom@18.2.0)(react@18.2.0)(slate@0.101.1):
+ resolution: {integrity: sha512-Jirty7d+tP8Cb+g8KrGUE7HvdC1z1jiysfdad2fTKIyXOrAq30cx4De+JzjfWDuB3LJDriu+Ii4PYXva3mKlhg==}
+ peerDependencies:
+ react: '>=18.2.0'
+ react-dom: '>=18.2.0'
+ slate: '>=0.99.0'
+ dependencies:
+ '@juggle/resize-observer': 3.4.0
+ '@types/is-hotkey': 0.1.10
+ '@types/lodash': 4.14.202
+ direction: 1.0.4
+ is-hotkey: 0.2.0
+ is-plain-object: 5.0.0
+ lodash: 4.17.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ scroll-into-view-if-needed: 3.1.0
+ slate: 0.101.1
+ tiny-invariant: 1.3.1
+ dev: false
+
+ /slate@0.101.1:
+ resolution: {integrity: sha512-k/rVkVb0TEMmaTbkRVJeJzE8lxnyGDc0VC67D91Zrf5hcdHfVaWypBGD25QHCJsndn9Xa0jSJ/xfM2new5E2Zg==}
+ dependencies:
+ immer: 10.0.3
+ is-plain-object: 5.0.0
+ tiny-warning: 1.0.3
+ dev: false
+
/slice-ansi@3.0.0:
resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
engines: {node: '>=8'}
@@ -9619,6 +11376,13 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+ dev: true
+
/source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
dependencies:
@@ -9626,6 +11390,11 @@ packages:
source-map: 0.6.1
dev: true
+ /source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@@ -9661,6 +11430,13 @@ packages:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
dev: true
+ /stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ escape-string-regexp: 2.0.0
+ dev: true
+
/stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
dev: true
@@ -9706,6 +11482,14 @@ packages:
engines: {node: '>=0.6.19'}
dev: true
+ /string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+ dev: true
+
/string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -9793,6 +11577,11 @@ packages:
engines: {node: '>=4'}
dev: true
+ /strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+ dev: true
+
/strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
@@ -9821,15 +11610,19 @@ packages:
acorn: 8.10.0
dev: true
- /style-loader@3.3.3(webpack@5.82.0):
+ /style-loader@3.3.3(webpack@5.89.0):
resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==}
engines: {node: '>= 12.13.0'}
peerDependencies:
webpack: ^5.0.0
dependencies:
- webpack: 5.82.0(esbuild@0.18.20)
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
+ /stylis@4.2.0:
+ resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+ dev: false
+
/sucrase@3.32.0:
resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
engines: {node: '>=8'}
@@ -9849,7 +11642,6 @@ packages:
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
- dev: true
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
@@ -9868,7 +11660,6 @@ packages:
/supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- dev: true
/symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
@@ -9878,6 +11669,10 @@ packages:
resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==}
dev: true
+ /tabbable@6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+ dev: false
+
/tailwindcss@3.3.3:
resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==}
engines: {node: '>=14.0.0'}
@@ -9975,8 +11770,8 @@ packages:
unique-string: 2.0.0
dev: true
- /terser-webpack-plugin@5.3.8(esbuild@0.18.20)(webpack@5.82.0):
- resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==}
+ /terser-webpack-plugin@5.3.9(esbuild@0.18.20)(webpack@5.89.0):
+ resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
'@swc/core': '*'
@@ -9991,22 +11786,22 @@ packages:
uglify-js:
optional: true
dependencies:
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/trace-mapping': 0.3.20
esbuild: 0.18.20
jest-worker: 27.5.1
- schema-utils: 3.1.2
+ schema-utils: 3.3.0
serialize-javascript: 6.0.1
- terser: 5.17.1
- webpack: 5.82.0(esbuild@0.18.20)
+ terser: 5.25.0
+ webpack: 5.89.0(esbuild@0.18.20)
dev: true
- /terser@5.17.1:
- resolution: {integrity: sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==}
+ /terser@5.25.0:
+ resolution: {integrity: sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg==}
engines: {node: '>=10'}
hasBin: true
dependencies:
- '@jridgewell/source-map': 0.3.3
- acorn: 8.10.0
+ '@jridgewell/source-map': 0.3.5
+ acorn: 8.11.2
commander: 2.20.3
source-map-support: 0.5.21
dev: true
@@ -10050,7 +11845,10 @@ packages:
/tiny-invariant@1.3.1:
resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==}
- dev: true
+
+ /tiny-warning@1.0.3:
+ resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
+ dev: false
/tinybench@2.5.0:
resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==}
@@ -10073,7 +11871,6 @@ packages:
/to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
- dev: true
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
@@ -10105,6 +11902,13 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: true
+ /tr46@3.0.0:
+ resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
+ engines: {node: '>=12'}
+ dependencies:
+ punycode: 2.3.0
+ dev: true
+
/tr46@4.1.1:
resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==}
engines: {node: '>=14'}
@@ -10136,6 +11940,9 @@ packages:
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
+
+ /tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
dev: true
/tsutils@3.21.0(typescript@5.1.6):
@@ -10282,19 +12089,23 @@ packages:
/unist-util-is@4.1.0:
resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
- dev: true
+
+ /unist-util-stringify-position@2.0.3:
+ resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
/unist-util-visit-parents@3.1.1:
resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.10
unist-util-is: 4.1.0
- dev: true
/unist-util-visit@2.0.3:
resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.10
unist-util-is: 4.1.0
unist-util-visit-parents: 3.1.1
dev: true
@@ -10322,7 +12133,7 @@ packages:
/unplugin@1.4.0:
resolution: {integrity: sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==}
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.5.0
@@ -10355,6 +12166,17 @@ packages:
picocolors: 1.0.0
dev: true
+ /update-browserslist-db@1.0.13(browserslist@4.22.2):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.22.2
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: true
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -10381,7 +12203,19 @@ packages:
'@types/react': 18.2.20
react: 18.2.0
tslib: 2.5.0
- dev: true
+
+ /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.20)(react@18.2.0):
+ resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.20
+ react: 18.2.0
+ dev: false
/use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==}
@@ -10408,7 +12242,6 @@ packages:
detect-node-es: 1.1.0
react: 18.2.0
tslib: 2.5.0
- dev: true
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -10460,7 +12293,7 @@ packages:
engines: {node: '>= 0.8'}
dev: true
- /vite-node@0.34.1(@types/node@20.4.9)(less@4.1.3):
+ /vite-node@0.34.1(@types/node@20.4.9)(less@4.2.0):
resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==}
engines: {node: '>=v14.18.0'}
hasBin: true
@@ -10470,7 +12303,7 @@ packages:
mlly: 1.4.0
pathe: 1.1.1
picocolors: 1.0.0
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -10498,7 +12331,7 @@ packages:
debug: 4.3.4
kolorist: 1.8.0
typescript: 5.1.6
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
vue-tsc: 1.8.8(typescript@5.1.6)
transitivePeerDependencies:
- '@types/node'
@@ -10506,7 +12339,7 @@ packages:
- supports-color
dev: true
- /vite@4.4.9(@types/node@20.4.9)(less@4.1.3):
+ /vite@4.4.9(@types/node@20.4.9)(less@4.2.0):
resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@@ -10536,14 +12369,14 @@ packages:
dependencies:
'@types/node': 20.4.9
esbuild: 0.18.20
- less: 4.1.3
+ less: 4.2.0
postcss: 8.4.27
rollup: 3.28.0
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
- /vitest@0.34.1(jsdom@22.1.0)(less@4.1.3):
+ /vitest@0.34.1(jsdom@22.1.0)(less@4.2.0):
resolution: {integrity: sha512-G1PzuBEq9A75XSU88yO5G4vPT20UovbC/2osB2KEuV/FisSIIsw7m5y2xMdB7RsAGHAfg2lPmp2qKr3KWliVlQ==}
engines: {node: '>=v14.18.0'}
hasBin: true
@@ -10596,8 +12429,8 @@ packages:
strip-literal: 1.0.1
tinybench: 2.5.0
tinypool: 0.7.0
- vite: 4.4.9(@types/node@20.4.9)(less@4.1.3)
- vite-node: 0.34.1(@types/node@20.4.9)(less@4.1.3)
+ vite: 4.4.9(@types/node@20.4.9)(less@4.2.0)
+ vite-node: 0.34.1(@types/node@20.4.9)(less@4.2.0)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
@@ -10641,6 +12474,12 @@ packages:
makeerror: 1.0.12
dev: true
+ /warning@4.0.3:
+ resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
/watchpack@2.4.0:
resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
engines: {node: '>=10.13.0'}
@@ -10673,8 +12512,8 @@ packages:
resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
dev: true
- /webpack@5.82.0(esbuild@0.18.20):
- resolution: {integrity: sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==}
+ /webpack@5.89.0(esbuild@0.18.20):
+ resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@@ -10683,17 +12522,17 @@ packages:
webpack-cli:
optional: true
dependencies:
- '@types/eslint-scope': 3.7.4
- '@types/estree': 1.0.1
- '@webassemblyjs/ast': 1.11.5
- '@webassemblyjs/wasm-edit': 1.11.5
- '@webassemblyjs/wasm-parser': 1.11.5
- acorn: 8.10.0
- acorn-import-assertions: 1.8.0(acorn@8.10.0)
- browserslist: 4.21.10
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.5
+ '@webassemblyjs/ast': 1.11.6
+ '@webassemblyjs/wasm-edit': 1.11.6
+ '@webassemblyjs/wasm-parser': 1.11.6
+ acorn: 8.11.2
+ acorn-import-assertions: 1.9.0(acorn@8.11.2)
+ browserslist: 4.22.2
chrome-trace-event: 1.0.3
- enhanced-resolve: 5.13.0
- es-module-lexer: 1.2.1
+ enhanced-resolve: 5.15.0
+ es-module-lexer: 1.4.1
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
@@ -10702,9 +12541,9 @@ packages:
loader-runner: 4.3.0
mime-types: 2.1.35
neo-async: 2.6.2
- schema-utils: 3.1.2
+ schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.8(esbuild@0.18.20)(webpack@5.82.0)
+ terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.89.0)
watchpack: 2.4.0
webpack-sources: 3.2.3
transitivePeerDependencies:
@@ -10725,6 +12564,14 @@ packages:
engines: {node: '>=12'}
dev: true
+ /whatwg-url@11.0.0:
+ resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ tr46: 3.0.0
+ webidl-conversions: 7.0.0
+ dev: true
+
/whatwg-url@12.0.1:
resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==}
engines: {node: '>=14'}
@@ -10898,6 +12745,11 @@ packages:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
+ /yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+ dev: false
+
/yaml@2.2.2:
resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==}
engines: {node: '>= 14'}
@@ -10908,6 +12760,11 @@ packages:
engines: {node: '>=10'}
dev: true
+ /yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
+
/yargs@16.2.0:
resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
engines: {node: '>=10'}
@@ -10921,6 +12778,19 @@ packages:
yargs-parser: 20.2.9
dev: true
+ /yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
/yauzl@2.10.0:
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
dependencies:
@@ -10949,3 +12819,7 @@ packages:
optionalDependencies:
commander: 9.5.0
dev: true
+
+ /zwitch@1.0.5:
+ resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
+ dev: false
diff --git a/src/App.tsx b/src/App.tsx
new file mode 100644
index 0000000..7f8bb52
--- /dev/null
+++ b/src/App.tsx
@@ -0,0 +1,9 @@
+import React from 'react'
+
+function App() {
+ return
App
+}
+
+App.propTypes = {}
+
+export default App
diff --git a/src/index.html b/src/index.html
new file mode 100644
index 0000000..e4b78ea
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite + React + TS
+
+
+
+
+
+
diff --git a/src/lib/components/atoms/at-button/at-button.test.tsx b/src/lib/at-button.test.tsx
similarity index 82%
rename from src/lib/components/atoms/at-button/at-button.test.tsx
rename to src/lib/at-button.test.tsx
index 810d783..05f872c 100644
--- a/src/lib/components/atoms/at-button/at-button.test.tsx
+++ b/src/lib/at-button.test.tsx
@@ -1,6 +1,6 @@
import { describe, it, expect } from 'vitest'
import { render, screen } from '@testing-library/react'
-import { AtButton } from './index'
+import { AtButton } from './components/atoms/at-button/index'
describe('AtButton', () => {
it('should render', async () => {
diff --git a/src/lib/components/DocumentEditor/Toolbar.tsx b/src/lib/components/DocumentEditor/Toolbar.tsx
new file mode 100644
index 0000000..e71e84e
--- /dev/null
+++ b/src/lib/components/DocumentEditor/Toolbar.tsx
@@ -0,0 +1,599 @@
+/** @jsxRuntime classic */
+/** @jsx jsx */
+
+import { Fragment, type ReactNode, forwardRef, useState, type HTMLAttributes, useMemo, useContext } from 'react'
+import { Editor, Transforms } from 'slate'
+import { applyRefs } from 'apply-ref'
+
+import { jsx, useTheme } from '@keystone-ui/core'
+import { useControlledPopover } from '@keystone-ui/popover'
+import { Tooltip } from '@keystone-ui/tooltip'
+
+import { BoldIcon } from '@keystone-ui/icons/icons/BoldIcon'
+import { ItalicIcon } from '@keystone-ui/icons/icons/ItalicIcon'
+import { PlusIcon } from '@keystone-ui/icons/icons/PlusIcon'
+import { ChevronDownIcon } from '@keystone-ui/icons/icons/ChevronDownIcon'
+import { Maximize2Icon } from '@keystone-ui/icons/icons/Maximize2Icon'
+import { Minimize2Icon } from '@keystone-ui/icons/icons/Minimize2Icon'
+import { MoreHorizontalIcon } from '@keystone-ui/icons/icons/MoreHorizontalIcon'
+
+import { type DocumentFeatures } from '../views'
+import { InlineDialog, KeyboardInTooltip, ToolbarButton, ToolbarGroup, ToolbarSeparator } from './primitives'
+import { linkButton } from './link'
+import { BlockComponentsButtons, ComponentBlockContext } from './component-blocks'
+import { clearFormatting, type Mark, modifierKeyText } from './utils'
+import { LayoutsButton } from './layouts'
+import { ListButton } from './lists'
+import { blockquoteButton } from './blockquote'
+import { codeButton } from './code-block'
+import { TextAlignMenu } from './alignment'
+import { dividerButton } from './divider'
+import { useToolbarState } from './toolbar-state'
+
+export function Toolbar({
+ documentFeatures,
+ viewState,
+}: {
+ documentFeatures: DocumentFeatures
+ viewState?: { expanded: boolean; toggle: () => void }
+}) {
+ const blockComponent = useContext(ComponentBlockContext)
+ const hasBlockItems = Object.keys(blockComponent).length
+ const hasMarks = Object.values(documentFeatures.formatting.inlineMarks).some((x) => x)
+ return (
+
+
+ {!!documentFeatures.formatting.headingLevels.length && (
+
+ )}
+ {hasMarks && }
+ {hasMarks && }
+ {(documentFeatures.formatting.alignment.center || documentFeatures.formatting.alignment.end) && (
+
+ )}
+ {documentFeatures.formatting.listTypes.unordered && (
+
+ Bullet List -
+
+ }
+ weight="subtle"
+ >
+ {(attrs) => (
+
+
+
+ )}
+
+ )}
+ {documentFeatures.formatting.listTypes.ordered && (
+
+ Numbered List 1.
+
+ }
+ weight="subtle"
+ >
+ {(attrs) => (
+
+
+
+ )}
+
+ )}
+ {(documentFeatures.formatting.alignment.center ||
+ documentFeatures.formatting.alignment.end ||
+ documentFeatures.formatting.listTypes.unordered ||
+ documentFeatures.formatting.listTypes.ordered) && }
+
+ {documentFeatures.dividers && dividerButton}
+ {documentFeatures.links && linkButton}
+ {documentFeatures.formatting.blockTypes.blockquote && blockquoteButton}
+ {!!documentFeatures.layouts.length && }
+ {documentFeatures.formatting.blockTypes.code && codeButton}
+ {!!hasBlockItems && }
+
+ {useMemo(() => {
+ const ExpandIcon = viewState?.expanded ? Minimize2Icon : Maximize2Icon
+ return (
+ viewState && (
+
+
+
+ {(attrs) => (
+ {
+ event.preventDefault()
+ viewState.toggle()
+ }}
+ {...attrs}
+ >
+
+
+ )}
+
+
+ )
+ )
+ }, [viewState])}
+
+ )
+}
+
+/* UI Components */
+
+const MarkButton = forwardRef(function MarkButton(props, ref) {
+ const {
+ editor,
+ marks: {
+ [props.type]: { isDisabled, isSelected },
+ },
+ } = useToolbarState()
+ return useMemo(() => {
+ const { type, ...restProps } = props
+ return (
+ {
+ event.preventDefault()
+ if (isSelected) {
+ Editor.removeMark(editor, props.type)
+ } else {
+ Editor.addMark(editor, props.type, true)
+ }
+ }}
+ {...restProps}
+ />
+ )
+ }, [editor, isDisabled, isSelected, props, ref])
+})
+
+const ToolbarContainer = ({ children }: { children: ReactNode }) => {
+ const { colors, spacing } = useTheme()
+
+ return (
+
+ )
+}
+
+const downIcon =
+
+function HeadingButton({
+ trigger,
+ onToggleShowMenu,
+ showMenu,
+}: {
+ trigger: ReturnType['trigger']
+ showMenu: boolean
+ onToggleShowMenu: () => void
+}) {
+ const { textStyles } = useToolbarState()
+ let buttonLabel = textStyles.selected === 'normal' ? 'Normal text' : 'Heading ' + textStyles.selected
+ const isDisabled = textStyles.allowedHeadingLevels.length === 0
+ return useMemo(
+ () => (
+ {
+ event.preventDefault()
+ onToggleShowMenu()
+ }}
+ style={{ textAlign: 'left', width: 116 }}
+ {...trigger.props}
+ >
+ {buttonLabel}
+ {downIcon}
+
+ ),
+ [buttonLabel, trigger, showMenu, onToggleShowMenu, isDisabled],
+ )
+}
+
+const HeadingMenu = ({ headingLevels }: { headingLevels: DocumentFeatures['formatting']['headingLevels'] }) => {
+ const [showMenu, setShowMenu] = useState(false)
+ const { dialog, trigger } = useControlledPopover(
+ {
+ isOpen: showMenu,
+ onClose: () => setShowMenu(false),
+ },
+ {
+ placement: 'bottom-start',
+ modifiers: [
+ {
+ name: 'offset',
+ options: {
+ offset: [0, 8],
+ },
+ },
+ ],
+ },
+ )
+
+ return (
+
+ {
+ setShowMenu((x) => !x)
+ }}
+ />
+
+ {showMenu ? (
+
+ {
+ setShowMenu(false)
+ }}
+ />
+
+ ) : null}
+
+ )
+}
+
+function HeadingDialog({
+ headingLevels,
+ onCloseMenu,
+}: {
+ headingLevels: DocumentFeatures['formatting']['headingLevels']
+ onCloseMenu: () => void
+}) {
+ const { editor, textStyles } = useToolbarState()
+ return (
+
+ {headingLevels.map((hNum) => {
+ let Tag = `h${hNum}` as const
+ const isSelected = textStyles.selected === hNum
+ return (
+ {
+ event.preventDefault()
+
+ if (isSelected) {
+ Transforms.unwrapNodes(editor, { match: (n) => n.type === 'heading' })
+ } else {
+ Transforms.setNodes(
+ editor,
+ { type: 'heading', level: hNum },
+ { match: (node) => node.type === 'paragraph' || node.type === 'heading' },
+ )
+ }
+ onCloseMenu()
+ }}
+ >
+ Heading {hNum}
+
+ )
+ })}
+
+ )
+}
+
+function InsertBlockMenu() {
+ const [showMenu, setShowMenu] = useState(false)
+ const { dialog, trigger } = useControlledPopover(
+ {
+ isOpen: showMenu,
+ onClose: () => setShowMenu(false),
+ },
+ {
+ placement: 'bottom-start',
+ modifiers: [
+ {
+ name: 'offset',
+ options: {
+ offset: [0, 8],
+ },
+ },
+ ],
+ },
+ )
+
+ return (
+
+
+ Insert /
+
+ }
+ weight="subtle"
+ >
+ {({ ref, ...attrs }) => (
+ {
+ event.preventDefault()
+ setShowMenu((v) => !v)
+ }}
+ {...trigger.props}
+ {...attrs}
+ >
+
+
+
+ )}
+
+ {showMenu ? (
+
+
+ setShowMenu(false)} />
+
+
+ ) : null}
+
+ )
+}
+
+function InlineMarks({ marks }: { marks: DocumentFeatures['formatting']['inlineMarks'] }) {
+ const [showMenu, setShowMenu] = useState(false)
+ const { dialog, trigger } = useControlledPopover(
+ {
+ isOpen: showMenu,
+ onClose: () => setShowMenu(false),
+ },
+ {
+ placement: 'bottom-start',
+ modifiers: [
+ {
+ name: 'offset',
+ options: {
+ offset: [0, 8],
+ },
+ },
+ ],
+ },
+ )
+ return (
+
+ {marks.bold && (
+
+ Bold
+ {modifierKeyText}B
+
+ }
+ weight="subtle"
+ >
+ {(attrs) => (
+
+
+
+ )}
+
+ )}
+ {marks.italic && (
+
+ Italic
+ {modifierKeyText}I
+
+ }
+ weight="subtle"
+ >
+ {(attrs) => (
+
+
+
+ )}
+
+ )}
+
+
+ {(attrs) => (
+ {
+ setShowMenu((v) => !v)
+ }}
+ trigger={trigger}
+ attrs={attrs}
+ />
+ )}
+
+ {showMenu && (
+ {
+ setShowMenu(false)
+ }}
+ dialog={dialog}
+ marks={marks}
+ />
+ )}
+
+ )
+}
+
+function MoreFormattingDialog({
+ dialog,
+ marks,
+ onCloseMenu,
+}: {
+ dialog: ReturnType['dialog']
+ marks: DocumentFeatures['formatting']['inlineMarks']
+ onCloseMenu: () => void
+}) {
+ // not doing optimisations in here because this will only render when it's open
+ // which will be rare and you won't be typing while it's open
+ const {
+ editor,
+ clearFormatting: { isDisabled },
+ } = useToolbarState()
+ return (
+ {
+ if (event.target instanceof HTMLElement && event.target.closest('button')) {
+ onCloseMenu()
+ }
+ }}
+ ref={dialog.ref}
+ {...dialog.props}
+ >
+
+ {marks.underline && (
+
+
+
+ )}
+ {marks.strikethrough && Strikethrough}
+ {marks.code && Code}
+ {marks.keyboard && Keyboard}
+ {marks.subscript && Subscript}
+ {marks.superscript && Superscript}
+ {
+ event.preventDefault()
+ clearFormatting(editor)
+ }}
+ >
+
+
+
+
+ )
+}
+
+function ContentInButtonWithShortcut({ content, shortcut }: { content: string; shortcut: string }) {
+ const theme = useTheme()
+ return (
+
+ {content}
+
+ {shortcut}
+
+
+ )
+}
+
+function MoreFormattingButton({
+ onToggle,
+ isOpen,
+ trigger,
+ attrs,
+}: {
+ onToggle: () => void
+ isOpen: boolean
+ trigger: ReturnType['trigger']
+ attrs: { ref: any }
+}) {
+ const { marks } = useToolbarState()
+ const isActive =
+ marks.strikethrough.isSelected ||
+ marks.underline.isSelected ||
+ marks.code.isSelected ||
+ marks.keyboard.isSelected ||
+ marks.subscript.isSelected ||
+ marks.superscript.isSelected
+ return useMemo(
+ () => (
+ {
+ event.preventDefault()
+ onToggle()
+ }}
+ {...trigger.props}
+ {...attrs}
+ ref={applyRefs(attrs.ref, trigger.ref)}
+ >
+
+
+ ),
+ [isActive, onToggle, isOpen, trigger, attrs],
+ )
+}
+
+// Custom (non-feather) Icons
+// ------------------------------
+
+export const IconBase = (props: HTMLAttributes) => (
+
+)
+
+const BulletListIcon = () => (
+
+
+
+)
+const NumberedListIcon = () => (
+
+
+
+)
diff --git a/src/lib/components/DocumentEditor/alignment.tsx b/src/lib/components/DocumentEditor/alignment.tsx
new file mode 100644
index 0000000..cbcf3ad
--- /dev/null
+++ b/src/lib/components/DocumentEditor/alignment.tsx
@@ -0,0 +1,156 @@
+/** @jsxRuntime classic */
+/** @jsx jsx */
+import { jsx } from '@keystone-ui/core'
+import { AlignLeftIcon } from '@keystone-ui/icons/icons/AlignLeftIcon'
+import { AlignRightIcon } from '@keystone-ui/icons/icons/AlignRightIcon'
+import { AlignCenterIcon } from '@keystone-ui/icons/icons/AlignCenterIcon'
+import { ChevronDownIcon } from '@keystone-ui/icons/icons/ChevronDownIcon'
+import { useControlledPopover } from '@keystone-ui/popover'
+import { Tooltip } from '@keystone-ui/tooltip'
+import { applyRefs } from 'apply-ref'
+import { useState, type ComponentProps, useMemo } from 'react'
+import { Transforms } from 'slate'
+import { type DocumentFeatures } from '../views'
+import { InlineDialog, ToolbarButton, ToolbarGroup } from './primitives'
+import { useToolbarState } from './toolbar-state'
+
+export const TextAlignMenu = ({ alignment }: { alignment: DocumentFeatures['formatting']['alignment'] }) => {
+ const [showMenu, setShowMenu] = useState(false)
+ const { dialog, trigger } = useControlledPopover(
+ {
+ isOpen: showMenu,
+ onClose: () => setShowMenu(false),
+ },
+ {
+ placement: 'bottom-start',
+ modifiers: [
+ {
+ name: 'offset',
+ options: {
+ offset: [0, 8],
+ },
+ },
+ ],
+ },
+ )
+
+ return (
+
+
+ {(attrs) => (
+ {
+ setShowMenu((x) => !x)
+ }}
+ trigger={trigger}
+ showMenu={showMenu}
+ />
+ )}
+
+ {showMenu ? (
+
+ {
+ setShowMenu(false)
+ }}
+ />
+
+ ) : null}
+
+ )
+}
+
+function TextAlignDialog({
+ alignment,
+ onClose,
+}: {
+ alignment: DocumentFeatures['formatting']['alignment']
+ onClose: () => void
+}) {
+ const {
+ alignment: { selected },
+ editor,
+ } = useToolbarState()
+ const alignments = [
+ 'start',
+ ...(Object.keys(alignment) as (keyof typeof alignment)[]).filter((key) => alignment[key]),
+ ] as const
+ return (
+
+ {alignments.map((alignment) => (
+
+ {(attrs) => (
+ {
+ event.preventDefault()
+ if (alignment === 'start') {
+ Transforms.unsetNodes(editor, 'textAlign', {
+ match: (node) => node.type === 'paragraph' || node.type === 'heading',
+ })
+ } else {
+ Transforms.setNodes(
+ editor,
+ { textAlign: alignment },
+ {
+ match: (node) => node.type === 'paragraph' || node.type === 'heading',
+ },
+ )
+ }
+ onClose()
+ }}
+ {...attrs}
+ >
+ {alignmentIcons[alignment]}
+
+ )}
+
+ ))}
+
+ )
+}
+
+const alignmentIcons = {
+ start: ,
+ center: ,
+ end: ,
+}
+
+function TextAlignButton(props: {
+ onToggle: () => void
+ trigger: ReturnType['trigger']
+ showMenu: boolean
+ attrs: Parameters['children']>[0]
+}) {
+ const {
+ alignment: { isDisabled, selected },
+ } = useToolbarState()
+ return useMemo(
+ () => (
+ {
+ event.preventDefault()
+ props.onToggle()
+ }}
+ {...props.attrs}
+ {...props.trigger.props}
+ ref={applyRefs(props.attrs.ref, props.trigger.ref)}
+ >
+ {alignmentIcons[selected]}
+ {downIcon}
+
+ ),
+ [isDisabled, selected, props],
+ )
+}
+
+const downIcon =
diff --git a/src/lib/components/DocumentEditor/block-markdown-shortcuts.ts b/src/lib/components/DocumentEditor/block-markdown-shortcuts.ts
new file mode 100644
index 0000000..b54f797
--- /dev/null
+++ b/src/lib/components/DocumentEditor/block-markdown-shortcuts.ts
@@ -0,0 +1,158 @@
+import { Element, Editor, Transforms, Range } from 'slate'
+import { type DocumentFeatures } from '../views'
+import { type ComponentBlock } from './component-blocks/api'
+import { insertDivider } from './divider'
+import { type DocumentFeaturesForNormalization } from './document-features-normalization'
+import { getAncestorComponentChildFieldDocumentFeatures } from './toolbar-state'
+
+export function withBlockMarkdownShortcuts(
+ documentFeatures: DocumentFeatures,
+ componentBlocks: Record,
+ editor: Editor,
+): Editor {
+ const { insertText } = editor
+ const shortcuts: Record<
+ string,
+ Record<
+ string,
+ {
+ insert: () => void
+ type: 'paragraph' | 'heading-or-paragraph'
+ shouldBeEnabledInComponentBlock: (locationDocumentFeatures: DocumentFeaturesForNormalization) => boolean
+ }
+ >
+ > = Object.create(null)
+ const editorDocumentFeaturesForNormalizationToCheck: DocumentFeaturesForNormalization = {
+ ...documentFeatures,
+ relationships: true,
+ }
+ let addShortcut = (
+ text: string,
+ insert: () => void,
+ shouldBeEnabledInComponentBlock: (locationDocumentFeatures: DocumentFeaturesForNormalization) => boolean,
+ type: 'paragraph' | 'heading-or-paragraph' = 'paragraph',
+ ) => {
+ if (!shouldBeEnabledInComponentBlock(editorDocumentFeaturesForNormalizationToCheck)) return
+ const trigger = text[text.length - 1]
+ if (!shortcuts[trigger]) {
+ shortcuts[trigger] = Object.create(null)
+ }
+ shortcuts[trigger][text] = {
+ insert,
+ type,
+ shouldBeEnabledInComponentBlock,
+ }
+ }
+ addShortcut(
+ '1. ',
+ () => {
+ Transforms.wrapNodes(
+ editor,
+ { type: 'ordered-list', children: [] },
+ { match: (n) => Element.isElement(n) && Editor.isBlock(editor, n) },
+ )
+ },
+ (features) => features.formatting.listTypes.ordered,
+ )
+
+ addShortcut(
+ '- ',
+ () => {
+ Transforms.wrapNodes(
+ editor,
+ { type: 'unordered-list', children: [] },
+ { match: (n) => Element.isElement(n) && Editor.isBlock(editor, n) },
+ )
+ },
+ (features) => features.formatting.listTypes.unordered,
+ )
+ addShortcut(
+ '* ',
+ () => {
+ Transforms.wrapNodes(
+ editor,
+ { type: 'unordered-list', children: [] },
+ { match: (n) => Element.isElement(n) && Editor.isBlock(editor, n) },
+ )
+ },
+ (features) => features.formatting.listTypes.unordered,
+ )
+
+ documentFeatures.formatting.headingLevels.forEach((level) => {
+ addShortcut(
+ '#'.repeat(level) + ' ',
+ () => {
+ Transforms.setNodes(
+ editor,
+ { type: 'heading', level },
+ { match: (node) => node.type === 'paragraph' || node.type === 'heading' },
+ )
+ },
+ (features) => features.formatting.headingLevels.includes(level),
+ 'heading-or-paragraph',
+ )
+ })
+
+ addShortcut(
+ '> ',
+ () => {
+ Transforms.wrapNodes(editor, { type: 'blockquote', children: [] }, { match: (node) => node.type === 'paragraph' })
+ },
+ (features) => features.formatting.blockTypes.blockquote,
+ )
+
+ addShortcut(
+ '```',
+ () => {
+ Transforms.wrapNodes(editor, { type: 'code', children: [] }, { match: (node) => node.type === 'paragraph' })
+ },
+ (features) => features.formatting.blockTypes.code,
+ )
+
+ addShortcut(
+ '---',
+ () => {
+ insertDivider(editor)
+ },
+ (features) => features.dividers,
+ )
+
+ editor.insertText = (text) => {
+ insertText(text)
+ const shortcutsForTrigger = shortcuts[text]
+ if (shortcutsForTrigger && editor.selection && Range.isCollapsed(editor.selection)) {
+ const { anchor } = editor.selection
+ const block = Editor.above(editor, {
+ match: (node) => Element.isElement(node) && Editor.isBlock(editor, node),
+ })
+ if (!block || (block[0].type !== 'paragraph' && block[0].type !== 'heading')) return
+
+ const start = Editor.start(editor, block[1])
+ const range = { anchor, focus: start }
+ const shortcutText = Editor.string(editor, range)
+ const shortcut = shortcutsForTrigger[shortcutText]
+
+ if (!shortcut || (shortcut.type === 'paragraph' && block[0].type !== 'paragraph')) {
+ return
+ }
+ const locationDocumentFeatures = getAncestorComponentChildFieldDocumentFeatures(
+ editor,
+ documentFeatures,
+ componentBlocks,
+ )
+ if (
+ locationDocumentFeatures &&
+ (locationDocumentFeatures.kind === 'inline' ||
+ !shortcut.shouldBeEnabledInComponentBlock(locationDocumentFeatures.documentFeatures))
+ ) {
+ return
+ }
+ // so that this starts a new undo group
+ editor.writeHistory('undos', { operations: [], selectionBefore: null })
+ Transforms.select(editor, range)
+ Transforms.delete(editor)
+ shortcut.insert()
+ }
+ }
+ return editor
+}
diff --git a/src/lib/components/DocumentEditor/blockquote.test.tsx b/src/lib/components/DocumentEditor/blockquote.test.tsx
new file mode 100644
index 0000000..1a7964e
--- /dev/null
+++ b/src/lib/components/DocumentEditor/blockquote.test.tsx
@@ -0,0 +1,151 @@
+/** @jest-environment jsdom */
+/** @jsxRuntime classic */
+/** @jsx jsx */
+import { jsx, makeEditor } from './tests/utils'
+
+test('inserting a blockquote with a shortcut works', () => {
+ let editor = makeEditor(
+
+
+
+ {'>'}
+
+
+
+ ,
+ )
+ editor.insertText(' ')
+ editor.insertText('some content')
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+
+ some content
+
+
+
+
+
+
+
+
+ `)
+})
+
+test('backspace at start of blockquote', () => {
+ let editor = makeEditor(
+
+
+
+
+
+ some content
+
+
+
+
+
+
+ ,
+ )
+
+ editor.deleteBackward('character')
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+
+ some content
+
+
+
+
+
+
+ `)
+})
+
+test('enter on empty line at end of blockquote exits blockquote', () => {
+ let editor = makeEditor(
+
+
+
+
+
+ some content
+
+
+
+
+
+
+ ,
+ )
+
+ editor.deleteBackward('character')
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+
+ some content
+
+
+
+
+
+
+ `)
+})
+
+test('enter on empty line in middle splits the blockquote', () => {
+ let editor = makeEditor(
+
+
+
+ some content
+
+
+
+
+
+
+
+ some content
+
+
+
+
+
+ ,
+ )
+
+ editor.insertBreak()
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+
+ some content
+
+
+
+
+
+
+
+
+
+
+
+ some content
+
+
+
+
+
+
+
+ `)
+})
diff --git a/src/lib/components/DocumentEditor/blockquote.tsx b/src/lib/components/DocumentEditor/blockquote.tsx
new file mode 100644
index 0000000..a957eb2
--- /dev/null
+++ b/src/lib/components/DocumentEditor/blockquote.tsx
@@ -0,0 +1,137 @@
+/** @jsxRuntime classic */
+/** @jsx jsx */
+
+import { type ComponentProps, Fragment, useMemo } from 'react'
+import { Editor, Node, Path, Range, Transforms } from 'slate'
+import { type RenderElementProps } from 'slate-react'
+
+import { jsx, useTheme } from '@keystone-ui/core'
+import { Tooltip } from '@keystone-ui/tooltip'
+
+import { IconBase } from './Toolbar'
+import { KeyboardInTooltip, ToolbarButton } from './primitives'
+import { isElementActive } from './utils'
+import { useToolbarState } from './toolbar-state'
+
+export const insertBlockquote = (editor: Editor) => {
+ const isActive = isElementActive(editor, 'blockquote')
+ if (isActive) {
+ Transforms.unwrapNodes(editor, {
+ match: (node) => node.type === 'blockquote',
+ })
+ } else {
+ Transforms.wrapNodes(editor, {
+ type: 'blockquote',
+ children: [],
+ })
+ }
+}
+
+function getDirectBlockquoteParentFromSelection(editor: Editor) {
+ if (!editor.selection) return { isInside: false } as const
+ const [, parentPath] = Editor.parent(editor, editor.selection)
+ if (!parentPath.length) {
+ return { isInside: false } as const
+ }
+ const [maybeBlockquoteParent, maybeBlockquoteParentPath] = Editor.parent(editor, parentPath)
+ const isBlockquote = maybeBlockquoteParent.type === 'blockquote'
+ return isBlockquote ? ({ isInside: true, path: maybeBlockquoteParentPath } as const) : ({ isInside: false } as const)
+}
+
+export function withBlockquote(editor: Editor): Editor {
+ const { insertBreak, deleteBackward } = editor
+ editor.deleteBackward = (unit) => {
+ if (editor.selection) {
+ const parentBlockquote = getDirectBlockquoteParentFromSelection(editor)
+ if (
+ parentBlockquote.isInside &&
+ Range.isCollapsed(editor.selection) &&
+ // the selection is at the start of the paragraph
+ editor.selection.anchor.offset === 0 &&
+ // it's the first paragraph in the panel
+ editor.selection.anchor.path[editor.selection.anchor.path.length - 2] === 0
+ ) {
+ Transforms.unwrapNodes(editor, {
+ match: (node) => node.type === 'blockquote',
+ split: true,
+ })
+ return
+ }
+ }
+ deleteBackward(unit)
+ }
+ editor.insertBreak = () => {
+ const panel = getDirectBlockquoteParentFromSelection(editor)
+ if (editor.selection && panel.isInside) {
+ const [node, nodePath] = Editor.node(editor, editor.selection)
+ if (Path.isDescendant(nodePath, panel.path) && Node.string(node) === '') {
+ Transforms.unwrapNodes(editor, {
+ match: (node) => node.type === 'blockquote',
+ split: true,
+ })
+ return
+ }
+ }
+ insertBreak()
+ }
+
+ return editor
+}
+
+export const BlockquoteElement = ({ attributes, children }: RenderElementProps) => {
+ const { colors, spacing } = useTheme()
+ return (
+
+ {children}
+
+ )
+}
+
+const BlockquoteButton = ({ attrs }: { attrs: Parameters['children']>[0] }) => {
+ const {
+ editor,
+ blockquote: { isDisabled, isSelected },
+ } = useToolbarState()
+ return useMemo(
+ () => (
+ {
+ event.preventDefault()
+ insertBlockquote(editor)
+ }}
+ {...attrs}
+ >
+
+
+ ),
+ [editor, attrs, isDisabled, isSelected],
+ )
+}
+export const blockquoteButton = (
+
+ Quote{'> '}
+
+ }
+ weight="subtle"
+ >
+ {(attrs) => }
+
+)
+
+const QuoteIcon = () => (
+
+
+
+)
diff --git a/src/lib/components/DocumentEditor/code-block.test.tsx b/src/lib/components/DocumentEditor/code-block.test.tsx
new file mode 100644
index 0000000..597c649
--- /dev/null
+++ b/src/lib/components/DocumentEditor/code-block.test.tsx
@@ -0,0 +1,197 @@
+/** @jest-environment jsdom */
+/** @jsxRuntime classic */
+/** @jsx jsx */
+import { Editor } from 'slate'
+import { jsx, makeEditor } from './tests/utils'
+
+test('inserting a code block with a shortcut works', () => {
+ let editor = makeEditor(
+
+
+
+ {'``'}
+
+
+
+ ,
+ )
+
+ editor.insertText('`')
+ editor.insertText('some content')
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+ some content
+
+
+
+
+
+
+
+ `)
+})
+
+test('insertBreak inserts a soft break', () => {
+ let editor = makeEditor(
+
+
+
+ {'asdkjnajsndakjndkjnaksdjn\nasdasdasd'}
+
+
+
+
+
+
+ ,
+ )
+
+ editor.insertBreak()
+
+ editor.insertText('some text')
+
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+ asdkjnajsndakjndkjnaksdjn
+ asdasdasd
+ some text
+
+
+
+
+
+
+
+ `)
+})
+
+test('non-text is removed from code blocks', () => {
+ let editor = makeEditor(
+
+
+
+
+ {'asdkjnajsndakjndkjnaksdjn\nasdasdasd\n'}
+
+
+
+
+
+
+
+
+
+ some thing
+
+
+
+
+
+
+ ,
+ { normalization: 'skip' },
+ )
+
+ const { isVoid, isInline } = editor
+ editor.isVoid = (element) => {
+ return (element as any).type === 'inline-void' || isVoid(element)
+ }
+ editor.isInline = (element) => {
+ return (element as any).type === 'inline-void' || isInline(element)
+ }
+
+ Editor.normalize(editor, { force: true })
+
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+ asdkjnajsndakjndkjnaksdjn
+ asdasdasd
+
+
+ some thing
+
+
+
+
+
+
+
+
+
+ `)
+})
+
+test('insertBreak when at end with \n as last character exits code block', () => {
+ let editor = makeEditor(
+
+
+
+ {'asdkjnajsndakjndkjnaksdjn\nasdasdasd\n'}
+
+
+
+
+
+
+ ,
+ )
+
+ editor.insertBreak()
+
+ expect(editor).toMatchInlineSnapshot(`
+
+
+
+ asdkjnajsndakjndkjnaksdjn
+ asdasdasd
+
+
+
+
+
+
+
+
+
+
+
+ `)
+})
+
+test('insertBreak in the middle of the text when there is a break at the end of the text', () => {
+ let editor = makeEditor(
+
+
+
+ some text
+
+ {'more text\n'}
+
+
+
+
+
+ ,
+ )
+
+ editor.insertBreak()
+ expect((editor as any).children[0].children[0].text).toMatchInlineSnapshot(`
+ "some text
+ more text
+ "
+ `)
+})
diff --git a/src/lib/components/DocumentEditor/code-block.tsx b/src/lib/components/DocumentEditor/code-block.tsx
new file mode 100644
index 0000000..c8ec841
--- /dev/null
+++ b/src/lib/components/DocumentEditor/code-block.tsx
@@ -0,0 +1,102 @@
+/** @jsxRuntime classic */
+/** @jsx jsx */
+import { jsx } from '@keystone-ui/core'
+import { Tooltip } from '@keystone-ui/tooltip'
+import { useMemo, Fragment } from 'react'
+import { Editor, Transforms, Element, Text, Range, Point } from 'slate'
+import { CodeIcon } from '@keystone-ui/icons/icons/CodeIcon'
+import { ToolbarButton, KeyboardInTooltip } from './primitives'
+import { useToolbarState } from './toolbar-state'
+
+export function withCodeBlock(editor: Editor): Editor {
+ const { insertBreak, normalizeNode } = editor
+
+ editor.insertBreak = () => {
+ const [node, path] = Editor.above(editor, {
+ match: (n) => Element.isElement(n) && Editor.isBlock(editor, n),
+ }) || [editor, []]
+ if (node.type === 'code' && Text.isText(node.children[0])) {
+ const text = node.children[0].text
+ if (
+ text[text.length - 1] === '\n' &&
+ editor.selection &&
+ Range.isCollapsed(editor.selection) &&
+ Point.equals(Editor.end(editor, path), editor.selection.anchor)
+ ) {
+ insertBreak()
+ Transforms.setNodes(editor, { type: 'paragraph', children: [] })
+ Transforms.delete(editor, {
+ distance: 1,
+ at: { path: [...path, 0], offset: text.length - 1 },
+ })
+ return
+ }
+ editor.insertText('\n')
+ return
+ }
+ insertBreak()
+ }
+ editor.normalizeNode = ([node, path]) => {
+ if (node.type === 'code' && Element.isElement(node)) {
+ for (const [index, childNode] of node.children.entries()) {
+ if (!Text.isText(childNode)) {
+ if (editor.isVoid(childNode)) {
+ Transforms.removeNodes(editor, { at: [...path, index] })
+ } else {
+ Transforms.unwrapNodes(editor, { at: [...path, index] })
+ }
+ return
+ }
+ const marks = Object.keys(childNode).filter((x) => x !== 'text')
+ if (marks.length) {
+ Transforms.unsetNodes(editor, marks, { at: [...path, index] })
+ return
+ }
+ }
+ }
+ normalizeNode([node, path])
+ }
+
+ return editor
+}
+
+function CodeButton({ attrs }: { attrs: {} }) {
+ const {
+ editor,
+ code: { isDisabled, isSelected },
+ } = useToolbarState()
+
+ return useMemo(
+ () => (
+ {
+ event.preventDefault()
+ if (isSelected) {
+ Transforms.unwrapNodes(editor, { match: (node) => node.type === 'code' })
+ } else {
+ Transforms.wrapNodes(editor, { type: 'code', children: [{ text: '' }] })
+ }
+ }}
+ {...attrs}
+ >
+
+
+ ),
+ [isDisabled, isSelected, attrs, editor],
+ )
+}
+
+export const codeButton = (
+
+ Code block ```
+
+ }
+ >
+ {(attrs) => }
+
+)
diff --git a/src/lib/components/DocumentEditor/component-blocks/api.tsx b/src/lib/components/DocumentEditor/component-blocks/api.tsx
new file mode 100644
index 0000000..7d2f29b
--- /dev/null
+++ b/src/lib/components/DocumentEditor/component-blocks/api.tsx
@@ -0,0 +1,791 @@
+/** @jsxRuntime classic */
+/** @jsx jsx */
+// import { graphql } from '@keystone-6/core'
+
+import { type HTMLAttributes, type ReactElement, type ReactNode } from 'react'
+
+export type FormFieldValue =
+ | string
+ | number
+ | boolean
+ | null
+ | readonly FormFieldValue[]
+ | { [key: string]: FormFieldValue | undefined }
+
+export type FormField = {
+ kind: 'form'
+ Input(props: {
+ value: Value
+ onChange(value: Value): void
+ autoFocus: boolean
+ /**
+ * This will be true when validate has returned false and the user has attempted to close the form
+ * or when the form is open and they attempt to save the item
+ */
+ forceValidation: boolean
+ }): ReactElement | null
+ /**
+ * The options are config about the field that are available on the
+ * preview props when rendering the toolbar and preview component
+ */
+ options: Options
+ defaultValue: Value
+ /**
+ * validate will be called in two cases:
+ * - on the client in the editor when a user is changing the value.
+ * Returning `false` will block closing the form
+ * and saving the item.
+ * - on the server when a change is received before allowing it to be saved
+ * if `true` is returned
+ * @param value The value of the form field. You should NOT trust
+ * this value to be of the correct type because it could come from
+ * a potentially malicious client
+ */
+ validate(value: unknown): boolean
+}
+
+// export type FormFieldWithGraphQLField = FormField<
+// Value,
+// Options
+// > & {
+// graphql: {
+// output: graphql.Field<
+// { value: Value },
+// Record>,
+// graphql.OutputType,
+// 'value'
+// >
+// input: graphql.NullableInputType
+// }
+// }
+
+type InlineMarksConfig =
+ | 'inherit'
+ | {
+ bold?: 'inherit'
+ code?: 'inherit'
+ italic?: 'inherit'
+ strikethrough?: 'inherit'
+ underline?: 'inherit'
+ keyboard?: 'inherit'
+ subscript?: 'inherit'
+ superscript?: 'inherit'
+ }
+
+type BlockFormattingConfig = {
+ alignment?: 'inherit'
+ blockTypes?: 'inherit'
+ headingLevels?: 'inherit' | (1 | 2 | 3 | 4 | 5 | 6)[]
+ inlineMarks?: InlineMarksConfig
+ listTypes?: 'inherit'
+ softBreaks?: 'inherit'
+}
+
+export type ChildField = {
+ kind: 'child'
+ options:
+ | {
+ kind: 'block'
+ placeholder: string
+ formatting?: BlockFormattingConfig
+ dividers?: 'inherit'
+ links?: 'inherit'
+ relationships?: 'inherit'
+ }
+ | {
+ kind: 'inline'
+ placeholder: string
+ formatting?: {
+ inlineMarks?: InlineMarksConfig
+ softBreaks?: 'inherit'
+ }
+ links?: 'inherit'
+ relationships?: 'inherit'
+ }
+}
+
+export type ArrayField = {
+ kind: 'array'
+ element: ElementField
+ // this is written with unknown to avoid typescript being annoying about circularity or variance things
+ itemLabel?(props: unknown): string
+ label?: string
+}
+
+export type RelationshipField = {
+ kind: 'relationship'
+ listKey: string
+ selection: string | undefined
+ label: string
+ many: Many
+}
+
+export interface ObjectField = Record> {
+ kind: 'object'
+ fields: Fields
+}
+
+export type ConditionalField<
+ DiscriminantField extends FormField,
+ ConditionalValues extends {
+ [Key in `${DiscriminantField['defaultValue']}`]: ComponentSchema
+ },
+> = {
+ kind: 'conditional'
+ discriminant: DiscriminantField
+ values: ConditionalValues
+}
+
+// this is written like this rather than ArrayField to avoid TypeScript erroring about circularity
+type ArrayFieldInComponentSchema = {
+ kind: 'array'
+ element: ComponentSchema
+ // this is written with unknown to avoid typescript being annoying about circularity or variance things
+ itemLabel?(props: unknown): string
+ label?: string
+}
+
+export type ComponentSchema =
+ | ChildField
+ | FormField
+ | ObjectField
+ | ConditionalField, { [key: string]: ComponentSchema }>
+ | RelationshipField
+ | ArrayFieldInComponentSchema
+
+// this is written like this rather than ArrayField to avoid TypeScript erroring about circularity
+// type ArrayFieldInComponentSchemaForGraphQL = {
+// kind: 'array'
+// element: ComponentSchemaForGraphQL
+// // this is written with unknown to avoid typescript being annoying about circularity or variance things
+// itemLabel?(props: unknown): string
+// label?: string
+// }
+
+// export type ComponentSchemaForGraphQL =
+// | FormFieldWithGraphQLField
+// | ObjectField>
+// | ConditionalField<
+// FormFieldWithGraphQLField,
+// { [key: string]: ComponentSchemaForGraphQL }
+// >
+// | RelationshipField
+// | ArrayFieldInComponentSchemaForGraphQL
+
+// export const fields = {
+// text ({
+// label,
+// defaultValue = '',
+// }: {
+// label: string
+// defaultValue?: string
+// }): FormFieldWithGraphQLField {
+// return {
+// kind: 'form',
+// Input ({ value, onChange, autoFocus }) {
+// return (
+//
+// {label}
+// {
+// onChange(event.target.value)
+// }}
+// />
+//
+// )
+// },
+// options: undefined,
+// defaultValue,
+// validate (value) {
+// return typeof value === 'string'
+// },
+// graphql: {
+// input: graphql.String,
+// output: graphql.field({ type: graphql.String }),
+// },
+// }
+// },
+// integer ({
+// label,
+// defaultValue = 0,
+// }: {
+// label: string
+// defaultValue?: number
+// }): FormFieldWithGraphQLField {
+// const validate = (value: unknown) => {
+// return typeof value === 'number' && Number.isFinite(value)
+// }
+// return {
+// kind: 'form',
+// Input ({ value, onChange, autoFocus, forceValidation }) {
+// const [blurred, setBlurred] = useState(false)
+// const [inputValue, setInputValue] = useState(String(value))
+// const showValidation = forceValidation || (blurred && !validate(value))
+
+// return (
+//
+// {label}
+// setBlurred(true)}
+// autoFocus={autoFocus}
+// value={inputValue}
+// onChange={event => {
+// const raw = event.target.value
+// setInputValue(raw)
+// if (/^[+-]?\d+$/.test(raw)) {
+// onChange(Number(raw))
+// } else {
+// onChange(NaN)
+// }
+// }}
+// />
+// {showValidation && Please specify an integer}
+//
+// )
+// },
+// options: undefined,
+// defaultValue,
+// validate,
+// graphql: {
+// input: graphql.Int,
+// output: graphql.field({ type: graphql.Int }),
+// },
+// }
+// },
+// url ({
+// label,
+// defaultValue = '',
+// }: {
+// label: string
+// defaultValue?: string
+// }): FormFieldWithGraphQLField {
+// const validate = (value: unknown) => {
+// return typeof value === 'string' && (value === '' || isValidURL(value))
+// }
+// return {
+// kind: 'form',
+// Input ({ value, onChange, autoFocus, forceValidation }) {
+// const [blurred, setBlurred] = useState(false)
+// const showValidation = forceValidation || (blurred && !validate(value))
+// return (
+//
+// {label}
+// setBlurred(true)}
+// autoFocus={autoFocus}
+// value={value}
+// onChange={event => {
+// onChange(event.target.value)
+// }}
+// />
+// {showValidation && Please provide a valid URL}
+//
+// )
+// },
+// options: undefined,
+// defaultValue,
+// validate,
+// graphql: {
+// input: graphql.String,
+// output: graphql.field({ type: graphql.String }),
+// },
+// }
+// },
+// select