new shout creation flow WIP

This commit is contained in:
bniwredyc 2023-05-03 18:13:48 +02:00
parent cfb744c0a0
commit e6ce826e56
9 changed files with 278 additions and 393 deletions

326
package-lock.json generated
View File

@ -19,7 +19,7 @@
"node-fetch": "3.3.1" "node-fetch": "3.3.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.21.5", "@babel/core": "7.21.8",
"@graphql-codegen/cli": "3.2.2", "@graphql-codegen/cli": "3.2.2",
"@graphql-codegen/typescript": "3.0.4", "@graphql-codegen/typescript": "3.0.4",
"@graphql-codegen/typescript-operations": "3.0.4", "@graphql-codegen/typescript-operations": "3.0.4",
@ -68,12 +68,12 @@
"@types/express": "4.17.17", "@types/express": "4.17.17",
"@types/node": "18.16.3", "@types/node": "18.16.3",
"@types/uuid": "9.0.1", "@types/uuid": "9.0.1",
"@typescript-eslint/eslint-plugin": "5.59.1", "@typescript-eslint/eslint-plugin": "5.59.2",
"@typescript-eslint/parser": "5.59.1", "@typescript-eslint/parser": "5.59.2",
"@urql/core": "3.2.2", "@urql/core": "3.2.2",
"@urql/devtools": "2.0.3", "@urql/devtools": "2.0.3",
"@urql/exchange-graphcache": "5.2.0", "@urql/exchange-graphcache": "5.2.0",
"babel-preset-solid": "1.7.3", "babel-preset-solid": "1.7.4",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"bootstrap": "5.2.3", "bootstrap": "5.2.3",
"clsx": "1.2.1", "clsx": "1.2.1",
@ -126,14 +126,14 @@
"prosemirror-schema-list": "1.2.2", "prosemirror-schema-list": "1.2.2",
"prosemirror-state": "1.4.2", "prosemirror-state": "1.4.2",
"prosemirror-view": "1.30.2", "prosemirror-view": "1.30.2",
"rollup": "3.21.2", "rollup": "3.21.3",
"rollup-plugin-visualizer": "5.9.0", "rollup-plugin-visualizer": "5.9.0",
"sass": "1.62.1", "sass": "1.62.1",
"solid-js": "1.7.3", "solid-js": "1.7.3",
"solid-tiptap": "0.6.0", "solid-tiptap": "0.6.0",
"solid-transition-group": "0.2.2", "solid-transition-group": "0.2.2",
"sort-package-json": "2.4.1", "sort-package-json": "2.4.1",
"stylelint": "15.6.0", "stylelint": "15.6.1",
"stylelint-config-standard-scss": "9.0.0", "stylelint-config-standard-scss": "9.0.0",
"stylelint-order": "6.0.3", "stylelint-order": "6.0.3",
"stylelint-scss": "5.0.0", "stylelint-scss": "5.0.0",
@ -144,10 +144,10 @@
"uniqolor": "1.1.0", "uniqolor": "1.1.0",
"unique-names-generator": "4.7.1", "unique-names-generator": "4.7.1",
"uuid": "9.0.0", "uuid": "9.0.0",
"vite": "4.3.3", "vite": "4.3.4",
"vite-plugin-sass-dts": "1.3.4", "vite-plugin-sass-dts": "1.3.4",
"vite-plugin-solid": "2.7.0", "vite-plugin-solid": "2.7.0",
"vite-plugin-ssr": "0.4.120", "vite-plugin-ssr": "0.4.121",
"wonka": "6.3.1", "wonka": "6.3.1",
"ws": "8.13.0", "ws": "8.13.0",
"y-indexeddb": "9.0.10", "y-indexeddb": "9.0.10",
@ -1809,9 +1809,9 @@
} }
}, },
"node_modules/@babel/core": { "node_modules/@babel/core": {
"version": "7.21.5", "version": "7.21.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.5.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz",
"integrity": "sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g==", "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
@ -1820,7 +1820,7 @@
"@babel/helper-compilation-targets": "^7.21.5", "@babel/helper-compilation-targets": "^7.21.5",
"@babel/helper-module-transforms": "^7.21.5", "@babel/helper-module-transforms": "^7.21.5",
"@babel/helpers": "^7.21.5", "@babel/helpers": "^7.21.5",
"@babel/parser": "^7.21.5", "@babel/parser": "^7.21.8",
"@babel/template": "^7.20.7", "@babel/template": "^7.20.7",
"@babel/traverse": "^7.21.5", "@babel/traverse": "^7.21.5",
"@babel/types": "^7.21.5", "@babel/types": "^7.21.5",
@ -2139,9 +2139,9 @@
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.21.5", "version": "7.21.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.5.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz",
"integrity": "sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==", "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==",
"dev": true, "dev": true,
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
@ -6500,15 +6500,15 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz",
"integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.4.0", "@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.59.1", "@typescript-eslint/scope-manager": "5.59.2",
"@typescript-eslint/type-utils": "5.59.1", "@typescript-eslint/type-utils": "5.59.2",
"@typescript-eslint/utils": "5.59.1", "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"grapheme-splitter": "^1.0.4", "grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0", "ignore": "^5.2.0",
@ -6567,14 +6567,14 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz",
"integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "5.59.1", "@typescript-eslint/scope-manager": "5.59.2",
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/typescript-estree": "5.59.1", "@typescript-eslint/typescript-estree": "5.59.2",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -6594,13 +6594,13 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz",
"integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/visitor-keys": "5.59.1" "@typescript-eslint/visitor-keys": "5.59.2"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -6611,13 +6611,13 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz",
"integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "5.59.1", "@typescript-eslint/typescript-estree": "5.59.2",
"@typescript-eslint/utils": "5.59.1", "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"tsutils": "^3.21.0" "tsutils": "^3.21.0"
}, },
@ -6638,9 +6638,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz",
"integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -6651,13 +6651,13 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz",
"integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/visitor-keys": "5.59.1", "@typescript-eslint/visitor-keys": "5.59.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"globby": "^11.1.0", "globby": "^11.1.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@ -6711,17 +6711,17 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz",
"integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9", "@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12", "@types/semver": "^7.3.12",
"@typescript-eslint/scope-manager": "5.59.1", "@typescript-eslint/scope-manager": "5.59.2",
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/typescript-estree": "5.59.1", "@typescript-eslint/typescript-estree": "5.59.2",
"eslint-scope": "^5.1.1", "eslint-scope": "^5.1.1",
"semver": "^7.3.7" "semver": "^7.3.7"
}, },
@ -6770,12 +6770,12 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz",
"integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"eslint-visitor-keys": "^3.3.0" "eslint-visitor-keys": "^3.3.0"
}, },
"engines": { "engines": {
@ -7471,12 +7471,12 @@
} }
}, },
"node_modules/babel-preset-solid": { "node_modules/babel-preset-solid": {
"version": "1.7.3", "version": "1.7.4",
"resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.7.3.tgz", "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.7.4.tgz",
"integrity": "sha512-HOdyrij99zo+CBrmtDxSexBAl54vCBCfBoyueLBvcfVniaEXNd4ftKqSN6XQcLvFfCY28UFO+DHaigXzWKOfzg==", "integrity": "sha512-0mbHNYkbOVYhH6L95VlHVkBEVQjOXSzUqLDiFxUcsg/tU4yTM/qx7FI8C+kmos9LHckQBSm3wtwoe1BZLNJR1w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"babel-plugin-jsx-dom-expressions": "^0.36.9" "babel-plugin-jsx-dom-expressions": "^0.36.10"
}, },
"peerDependencies": { "peerDependencies": {
"@babel/core": "^7.0.0" "@babel/core": "^7.0.0"
@ -16960,9 +16960,9 @@
} }
}, },
"node_modules/postcss-selector-parser": { "node_modules/postcss-selector-parser": {
"version": "6.0.11", "version": "6.0.12",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
"integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
@ -17870,9 +17870,9 @@
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "3.21.2", "version": "3.21.3",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.2.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.3.tgz",
"integrity": "sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==", "integrity": "sha512-VnPfEG51nIv2xPLnZaekkuN06q9ZbnyDcLkaBdJa/W7UddyhOfMP2yOPziYQfeY7k++fZM8FdQIummFN5y14kA==",
"dev": true, "dev": true,
"bin": { "bin": {
"rollup": "dist/bin/rollup" "rollup": "dist/bin/rollup"
@ -18723,9 +18723,9 @@
} }
}, },
"node_modules/stylelint": { "node_modules/stylelint": {
"version": "15.6.0", "version": "15.6.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.1.tgz",
"integrity": "sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==", "integrity": "sha512-d8icFBlVl93Elf3Z5ABQNOCe4nx69is3D/NZhDLAie1eyYnpxfeKe7pCfqzT5W4F8vxHCLSDfV8nKNJzogvV2Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@csstools/css-parser-algorithms": "^2.1.1", "@csstools/css-parser-algorithms": "^2.1.1",
@ -18755,11 +18755,11 @@
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.4.22", "postcss": "^8.4.23",
"postcss-media-query-parser": "^0.2.3", "postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1", "postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0", "postcss-safe-parser": "^6.0.0",
"postcss-selector-parser": "^6.0.11", "postcss-selector-parser": "^6.0.12",
"postcss-value-parser": "^4.2.0", "postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0", "resolve-from": "^5.0.0",
"string-width": "^4.2.3", "string-width": "^4.2.3",
@ -18769,7 +18769,7 @@
"svg-tags": "^1.0.0", "svg-tags": "^1.0.0",
"table": "^6.8.1", "table": "^6.8.1",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
"write-file-atomic": "^5.0.0" "write-file-atomic": "^5.0.1"
}, },
"bin": { "bin": {
"stylelint": "bin/stylelint.js" "stylelint": "bin/stylelint.js"
@ -18939,6 +18939,18 @@
"integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
"dev": true "dev": true
}, },
"node_modules/stylelint/node_modules/signal-exit": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz",
"integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==",
"dev": true,
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/stylelint/node_modules/string-width": { "node_modules/stylelint/node_modules/string-width": {
"version": "4.2.3", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@ -18966,13 +18978,13 @@
} }
}, },
"node_modules/stylelint/node_modules/write-file-atomic": { "node_modules/stylelint/node_modules/write-file-atomic": {
"version": "5.0.0", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
"integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7" "signal-exit": "^4.0.1"
}, },
"engines": { "engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
@ -19823,9 +19835,9 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "4.3.3", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.4.tgz",
"integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==", "integrity": "sha512-f90aqGBoxSFxWph2b39ae2uHAxm5jFBBdnfueNxZAT1FTpM13ccFQExCaKbR2xFW5atowjleRniQ7onjJ22QEg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.17.5", "esbuild": "^0.17.5",
@ -19908,9 +19920,9 @@
} }
}, },
"node_modules/vite-plugin-ssr": { "node_modules/vite-plugin-ssr": {
"version": "0.4.120", "version": "0.4.121",
"resolved": "https://registry.npmjs.org/vite-plugin-ssr/-/vite-plugin-ssr-0.4.120.tgz", "resolved": "https://registry.npmjs.org/vite-plugin-ssr/-/vite-plugin-ssr-0.4.121.tgz",
"integrity": "sha512-crttExXYt98bEVeLJgqlJ6peaMgzN7YrL0TNIAWEjabWHaXgpQUO+pRXOf0MIyI/xcNh13e6kvalSPo9UEpPxQ==", "integrity": "sha512-6hJXWH8JAcBjRVwZeuI/yIk5gwJrdllZaBTBGXHH0Py0o0cJ1i8p7KZ3hht0SzY63pt0apekXKxnqW/brODung==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@brillout/import": "0.2.3", "@brillout/import": "0.2.3",
@ -21912,9 +21924,9 @@
"dev": true "dev": true
}, },
"@babel/core": { "@babel/core": {
"version": "7.21.5", "version": "7.21.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.5.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz",
"integrity": "sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g==", "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
@ -21923,7 +21935,7 @@
"@babel/helper-compilation-targets": "^7.21.5", "@babel/helper-compilation-targets": "^7.21.5",
"@babel/helper-module-transforms": "^7.21.5", "@babel/helper-module-transforms": "^7.21.5",
"@babel/helpers": "^7.21.5", "@babel/helpers": "^7.21.5",
"@babel/parser": "^7.21.5", "@babel/parser": "^7.21.8",
"@babel/template": "^7.20.7", "@babel/template": "^7.20.7",
"@babel/traverse": "^7.21.5", "@babel/traverse": "^7.21.5",
"@babel/types": "^7.21.5", "@babel/types": "^7.21.5",
@ -22164,9 +22176,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.21.5", "version": "7.21.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.5.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz",
"integrity": "sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==", "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==",
"dev": true "dev": true
}, },
"@babel/plugin-proposal-class-properties": { "@babel/plugin-proposal-class-properties": {
@ -25345,15 +25357,15 @@
"dev": true "dev": true
}, },
"@typescript-eslint/eslint-plugin": { "@typescript-eslint/eslint-plugin": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz",
"integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==",
"dev": true, "dev": true,
"requires": { "requires": {
"@eslint-community/regexpp": "^4.4.0", "@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.59.1", "@typescript-eslint/scope-manager": "5.59.2",
"@typescript-eslint/type-utils": "5.59.1", "@typescript-eslint/type-utils": "5.59.2",
"@typescript-eslint/utils": "5.59.1", "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"grapheme-splitter": "^1.0.4", "grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0", "ignore": "^5.2.0",
@ -25389,53 +25401,53 @@
} }
}, },
"@typescript-eslint/parser": { "@typescript-eslint/parser": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz",
"integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/scope-manager": "5.59.1", "@typescript-eslint/scope-manager": "5.59.2",
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/typescript-estree": "5.59.1", "@typescript-eslint/typescript-estree": "5.59.2",
"debug": "^4.3.4" "debug": "^4.3.4"
} }
}, },
"@typescript-eslint/scope-manager": { "@typescript-eslint/scope-manager": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz",
"integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/visitor-keys": "5.59.1" "@typescript-eslint/visitor-keys": "5.59.2"
} }
}, },
"@typescript-eslint/type-utils": { "@typescript-eslint/type-utils": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz",
"integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/typescript-estree": "5.59.1", "@typescript-eslint/typescript-estree": "5.59.2",
"@typescript-eslint/utils": "5.59.1", "@typescript-eslint/utils": "5.59.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"tsutils": "^3.21.0" "tsutils": "^3.21.0"
} }
}, },
"@typescript-eslint/types": { "@typescript-eslint/types": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz",
"integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==",
"dev": true "dev": true
}, },
"@typescript-eslint/typescript-estree": { "@typescript-eslint/typescript-estree": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz",
"integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/visitor-keys": "5.59.1", "@typescript-eslint/visitor-keys": "5.59.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"globby": "^11.1.0", "globby": "^11.1.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@ -25470,17 +25482,17 @@
} }
}, },
"@typescript-eslint/utils": { "@typescript-eslint/utils": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz",
"integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9", "@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12", "@types/semver": "^7.3.12",
"@typescript-eslint/scope-manager": "5.59.1", "@typescript-eslint/scope-manager": "5.59.2",
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"@typescript-eslint/typescript-estree": "5.59.1", "@typescript-eslint/typescript-estree": "5.59.2",
"eslint-scope": "^5.1.1", "eslint-scope": "^5.1.1",
"semver": "^7.3.7" "semver": "^7.3.7"
}, },
@ -25512,12 +25524,12 @@
} }
}, },
"@typescript-eslint/visitor-keys": { "@typescript-eslint/visitor-keys": {
"version": "5.59.1", "version": "5.59.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz",
"integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "5.59.1", "@typescript-eslint/types": "5.59.2",
"eslint-visitor-keys": "^3.3.0" "eslint-visitor-keys": "^3.3.0"
} }
}, },
@ -26047,12 +26059,12 @@
} }
}, },
"babel-preset-solid": { "babel-preset-solid": {
"version": "1.7.3", "version": "1.7.4",
"resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.7.3.tgz", "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.7.4.tgz",
"integrity": "sha512-HOdyrij99zo+CBrmtDxSexBAl54vCBCfBoyueLBvcfVniaEXNd4ftKqSN6XQcLvFfCY28UFO+DHaigXzWKOfzg==", "integrity": "sha512-0mbHNYkbOVYhH6L95VlHVkBEVQjOXSzUqLDiFxUcsg/tU4yTM/qx7FI8C+kmos9LHckQBSm3wtwoe1BZLNJR1w==",
"dev": true, "dev": true,
"requires": { "requires": {
"babel-plugin-jsx-dom-expressions": "^0.36.9" "babel-plugin-jsx-dom-expressions": "^0.36.10"
} }
}, },
"balanced-match": { "balanced-match": {
@ -33023,9 +33035,9 @@
"requires": {} "requires": {}
}, },
"postcss-selector-parser": { "postcss-selector-parser": {
"version": "6.0.11", "version": "6.0.12",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
"integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
"dev": true, "dev": true,
"requires": { "requires": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
@ -33745,9 +33757,9 @@
} }
}, },
"rollup": { "rollup": {
"version": "3.21.2", "version": "3.21.3",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.2.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.3.tgz",
"integrity": "sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==", "integrity": "sha512-VnPfEG51nIv2xPLnZaekkuN06q9ZbnyDcLkaBdJa/W7UddyhOfMP2yOPziYQfeY7k++fZM8FdQIummFN5y14kA==",
"dev": true, "dev": true,
"requires": { "requires": {
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
@ -34382,9 +34394,9 @@
} }
}, },
"stylelint": { "stylelint": {
"version": "15.6.0", "version": "15.6.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.1.tgz",
"integrity": "sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==", "integrity": "sha512-d8icFBlVl93Elf3Z5ABQNOCe4nx69is3D/NZhDLAie1eyYnpxfeKe7pCfqzT5W4F8vxHCLSDfV8nKNJzogvV2Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@csstools/css-parser-algorithms": "^2.1.1", "@csstools/css-parser-algorithms": "^2.1.1",
@ -34414,11 +34426,11 @@
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.4.22", "postcss": "^8.4.23",
"postcss-media-query-parser": "^0.2.3", "postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1", "postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0", "postcss-safe-parser": "^6.0.0",
"postcss-selector-parser": "^6.0.11", "postcss-selector-parser": "^6.0.12",
"postcss-value-parser": "^4.2.0", "postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0", "resolve-from": "^5.0.0",
"string-width": "^4.2.3", "string-width": "^4.2.3",
@ -34428,7 +34440,7 @@
"svg-tags": "^1.0.0", "svg-tags": "^1.0.0",
"table": "^6.8.1", "table": "^6.8.1",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
"write-file-atomic": "^5.0.0" "write-file-atomic": "^5.0.1"
}, },
"dependencies": { "dependencies": {
"ansi-regex": { "ansi-regex": {
@ -34473,6 +34485,12 @@
"integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
"dev": true "dev": true
}, },
"signal-exit": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz",
"integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==",
"dev": true
},
"string-width": { "string-width": {
"version": "4.2.3", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@ -34494,13 +34512,13 @@
} }
}, },
"write-file-atomic": { "write-file-atomic": {
"version": "5.0.0", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
"integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true, "dev": true,
"requires": { "requires": {
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7" "signal-exit": "^4.0.1"
} }
} }
} }
@ -35209,9 +35227,9 @@
"dev": true "dev": true
}, },
"vite": { "vite": {
"version": "4.3.3", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.4.tgz",
"integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==", "integrity": "sha512-f90aqGBoxSFxWph2b39ae2uHAxm5jFBBdnfueNxZAT1FTpM13ccFQExCaKbR2xFW5atowjleRniQ7onjJ22QEg==",
"dev": true, "dev": true,
"requires": { "requires": {
"esbuild": "^0.17.5", "esbuild": "^0.17.5",
@ -35245,9 +35263,9 @@
} }
}, },
"vite-plugin-ssr": { "vite-plugin-ssr": {
"version": "0.4.120", "version": "0.4.121",
"resolved": "https://registry.npmjs.org/vite-plugin-ssr/-/vite-plugin-ssr-0.4.120.tgz", "resolved": "https://registry.npmjs.org/vite-plugin-ssr/-/vite-plugin-ssr-0.4.121.tgz",
"integrity": "sha512-crttExXYt98bEVeLJgqlJ6peaMgzN7YrL0TNIAWEjabWHaXgpQUO+pRXOf0MIyI/xcNh13e6kvalSPo9UEpPxQ==", "integrity": "sha512-6hJXWH8JAcBjRVwZeuI/yIk5gwJrdllZaBTBGXHH0Py0o0cJ1i8p7KZ3hht0SzY63pt0apekXKxnqW/brODung==",
"dev": true, "dev": true,
"requires": { "requires": {
"@brillout/import": "0.2.3", "@brillout/import": "0.2.3",

View File

@ -39,7 +39,7 @@
"node-fetch": "3.3.1" "node-fetch": "3.3.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.21.5", "@babel/core": "7.21.8",
"@graphql-codegen/cli": "3.2.2", "@graphql-codegen/cli": "3.2.2",
"@graphql-codegen/typescript": "3.0.4", "@graphql-codegen/typescript": "3.0.4",
"@graphql-codegen/typescript-operations": "3.0.4", "@graphql-codegen/typescript-operations": "3.0.4",
@ -88,12 +88,12 @@
"@types/express": "4.17.17", "@types/express": "4.17.17",
"@types/node": "18.16.3", "@types/node": "18.16.3",
"@types/uuid": "9.0.1", "@types/uuid": "9.0.1",
"@typescript-eslint/eslint-plugin": "5.59.1", "@typescript-eslint/eslint-plugin": "5.59.2",
"@typescript-eslint/parser": "5.59.1", "@typescript-eslint/parser": "5.59.2",
"@urql/core": "3.2.2", "@urql/core": "3.2.2",
"@urql/devtools": "2.0.3", "@urql/devtools": "2.0.3",
"@urql/exchange-graphcache": "5.2.0", "@urql/exchange-graphcache": "5.2.0",
"babel-preset-solid": "1.7.3", "babel-preset-solid": "1.7.4",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"bootstrap": "5.2.3", "bootstrap": "5.2.3",
"clsx": "1.2.1", "clsx": "1.2.1",
@ -146,14 +146,14 @@
"prosemirror-schema-list": "1.2.2", "prosemirror-schema-list": "1.2.2",
"prosemirror-state": "1.4.2", "prosemirror-state": "1.4.2",
"prosemirror-view": "1.30.2", "prosemirror-view": "1.30.2",
"rollup": "3.21.2", "rollup": "3.21.3",
"rollup-plugin-visualizer": "5.9.0", "rollup-plugin-visualizer": "5.9.0",
"sass": "1.62.1", "sass": "1.62.1",
"solid-js": "1.7.3", "solid-js": "1.7.3",
"solid-tiptap": "0.6.0", "solid-tiptap": "0.6.0",
"solid-transition-group": "0.2.2", "solid-transition-group": "0.2.2",
"sort-package-json": "2.4.1", "sort-package-json": "2.4.1",
"stylelint": "15.6.0", "stylelint": "15.6.1",
"stylelint-config-standard-scss": "9.0.0", "stylelint-config-standard-scss": "9.0.0",
"stylelint-order": "6.0.3", "stylelint-order": "6.0.3",
"stylelint-scss": "5.0.0", "stylelint-scss": "5.0.0",
@ -164,10 +164,10 @@
"uniqolor": "1.1.0", "uniqolor": "1.1.0",
"unique-names-generator": "4.7.1", "unique-names-generator": "4.7.1",
"uuid": "9.0.0", "uuid": "9.0.0",
"vite": "4.3.3", "vite": "4.3.4",
"vite-plugin-sass-dts": "1.3.4", "vite-plugin-sass-dts": "1.3.4",
"vite-plugin-solid": "2.7.0", "vite-plugin-solid": "2.7.0",
"vite-plugin-ssr": "0.4.120", "vite-plugin-ssr": "0.4.121",
"wonka": "6.3.1", "wonka": "6.3.1",
"ws": "8.13.0", "ws": "8.13.0",
"y-indexeddb": "9.0.10", "y-indexeddb": "9.0.10",

View File

@ -56,18 +56,8 @@
} }
} }
.buttonWithIcon { .linkWithIcon {
margin-left: -1.6rem; margin-left: -1.6rem;
.icon {
filter: invert(0.5);
margin-right: 0.3em;
width: 1em;
}
img {
vertical-align: middle;
}
} }
.stats { .stats {
@ -91,4 +81,15 @@
&.hidden { &.hidden {
transform: translateX(100%); transform: translateX(100%);
} }
.icon {
display: inline-block;
filter: invert(0.5);
margin-right: 0.3em;
width: 1em;
img {
vertical-align: bottom;
}
}
} }

View File

@ -1,16 +1,19 @@
import { Show } from 'solid-js'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Button } from '../../_shared/Button' import { Button } from '../../_shared/Button'
import { Icon } from '../../_shared/Icon' import { Icon } from '../../_shared/Icon'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '../../../context/localize'
import styles from './Panel.module.scss' import styles from './Panel.module.scss'
import { useEditorContext } from '../../../context/editor' import { useEditorContext } from '../../../context/editor'
import { useOutsideClickHandler } from '../../../utils/useOutsideClickHandler'
import { useEscKeyDownHandler } from '../../../utils/useEscKeyDownHandler'
import { getPagePath } from '@nanostores/router'
import { router } from '../../../stores/router'
// type Props = { type PanelProps = {
// // isVisible: boolean shoutSlug: string
// } }
export const Panel = () => { export const Panel = (props: PanelProps) => {
const { t } = useLocalize() const { t } = useLocalize()
const { const {
isEditorPanelVisible, isEditorPanelVisible,
@ -18,8 +21,27 @@ export const Panel = () => {
actions: { toggleEditorPanel } actions: { toggleEditorPanel }
} = useEditorContext() } = useEditorContext()
const containerRef: { current: HTMLElement } = {
current: null
}
useOutsideClickHandler({
containerRef,
predicate: () => isEditorPanelVisible(),
handler: () => toggleEditorPanel()
})
useEscKeyDownHandler(() => {
if (isEditorPanelVisible()) {
toggleEditorPanel()
}
})
return ( return (
<aside class={clsx('col-md-6', styles.Panel, { [styles.hidden]: !isEditorPanelVisible() })}> <aside
ref={(el) => (containerRef.current = el)}
class={clsx('col-md-6', styles.Panel, { [styles.hidden]: !isEditorPanelVisible() })}
>
<div class={styles.actionsHolder}> <div class={styles.actionsHolder}>
<Button <Button
value={<Icon name="close" />} value={<Icon name="close" />}
@ -30,47 +52,50 @@ export const Panel = () => {
</div> </div>
<div class={clsx(styles.actionsHolder, styles.scrolled)}> <div class={clsx(styles.actionsHolder, styles.scrolled)}>
<section> <section>
<Button value={t('Publish')} variant={'inline'} class={styles.button} /> <p>
<Button value={t('Save draft')} variant={'inline'} class={styles.button} /> <a>{t('Publish')}</a>
</p>
<p>
<a>{t('Save draft')}</a>
</p>
</section> </section>
<section> <section>
<Button <p>
value={ <a class={styles.linkWithIcon}>
<>
<Icon name="eye" class={styles.icon} /> <Icon name="eye" class={styles.icon} />
{t('Preview')} {t('Preview')}
</> </a>
} </p>
variant={'inline'} <p>
class={clsx(styles.button, styles.buttonWithIcon)} <a
/> class={styles.linkWithIcon}
<Button href={getPagePath(router, 'edit', { shoutSlug: props.shoutSlug })}
value={ >
<>
<Icon name="pencil-outline" class={styles.icon} /> <Icon name="pencil-outline" class={styles.icon} />
{t('Editing')} {t('Editing')}
</> </a>
} </p>
variant={'inline'} <p>
class={clsx(styles.button, styles.buttonWithIcon)} <a class={styles.linkWithIcon}>
/>
<Button
value={
<>
<Icon name="feed-discussion" class={styles.icon} /> <Icon name="feed-discussion" class={styles.icon} />
{t('FAQ')} {t('FAQ')}
</> </a>
} </p>
variant={'inline'}
class={clsx(styles.button, styles.buttonWithIcon)}
/>
</section> </section>
<section> <section>
<Button value={t('Invite co-authors')} variant={'inline'} class={styles.button} /> <p>
<Button value={t('Publication settings')} variant={'inline'} class={styles.button} /> <a>{t('Invite co-authors')}</a>
<Button value={t('Corrections history')} variant={'inline'} class={styles.button} /> </p>
<p>
<a href={getPagePath(router, 'editSettings', { shoutSlug: props.shoutSlug })}>
{t('Publication settings')}
</a>
</p>
<p>
<a>{t('Corrections history')}</a>
</p>
</section> </section>
<section> <section>
@ -92,14 +117,9 @@ export const Panel = () => {
<div> <div>
{t('Words')}: <em>{wordCounter().words}</em> {t('Words')}: <em>{wordCounter().words}</em>
</div> </div>
<Show when={wordCounter().paragraphs}> {/*<div>*/}
<div> {/* {t('Last rev.')}: <em>22.03.22 в 18:20</em>*/}
{t('Paragraphs')}: <em>{wordCounter().paragraphs}</em> {/*</div>*/}
</div>
</Show>
<div>
{t('Last rev.')}: <em>22.03.22 в 18:20</em>
</div>
</div> </div>
</div> </div>
</aside> </aside>

View File

@ -13,7 +13,7 @@ import { useSession } from '../../context/session'
import { useLocalize } from '../../context/localize' import { useLocalize } from '../../context/localize'
import { getPagePath } from '@nanostores/router' import { getPagePath } from '@nanostores/router'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
// import { useEditorContext } from '../../context/editor' import { useEditorContext } from '../../context/editor'
type HeaderAuthProps = { type HeaderAuthProps = {
setIsProfilePopupVisible: (value: boolean) => void setIsProfilePopupVisible: (value: boolean) => void
@ -27,9 +27,9 @@ export const HeaderAuth = (props: HeaderAuthProps) => {
const { session, isSessionLoaded, isAuthenticated } = useSession() const { session, isSessionLoaded, isAuthenticated } = useSession()
// const { const {
// actions: { toggleEditorPanel } actions: { toggleEditorPanel }
// } = useEditorContext() } = useEditorContext()
const toggleWarnings = () => setVisibleWarnings(!visibleWarnings()) const toggleWarnings = () => setVisibleWarnings(!visibleWarnings())
@ -43,16 +43,16 @@ export const HeaderAuth = (props: HeaderAuthProps) => {
toggleWarnings() toggleWarnings()
} }
const isEditorPage = createMemo(() => page().route === 'create' || page().route === 'edit') const isEditorPage = createMemo(
() => page().route === 'create' || page().route === 'edit' || page().route === 'editSettings'
)
const showNotifications = createMemo(() => isAuthenticated() && !isEditorPage()) const showNotifications = createMemo(() => isAuthenticated() && !isEditorPage())
const showSaveButton = createMemo(() => isAuthenticated() && isEditorPage()) const showSaveButton = createMemo(() => isAuthenticated() && isEditorPage())
const showCreatePostButton = createMemo(() => isAuthenticated() && !isEditorPage()) const showCreatePostButton = createMemo(() => isAuthenticated() && !isEditorPage())
// eslint-disable-next-line unicorn/consistent-function-scoping
const handleBurgerButtonClick = () => { const handleBurgerButtonClick = () => {
// TODO: implement me toggleEditorPanel()
console.log('Burger clicked')
} }
return ( return (

View File

@ -12,22 +12,6 @@
padding: 0 4rem; padding: 0 4rem;
} }
.saveBlock {
background: #f1f1f1;
line-height: 1.4;
margin-top: 6.4rem;
padding: 1.6rem 3.2rem;
text-align: center;
@include media-breakpoint-up(md) {
padding: 3.2rem 8rem;
}
.button {
margin: 0 divide($container-padding-x, 2);
}
}
.container { .container {
.titleInput, .titleInput,
.subtitleInput { .subtitleInput {
@ -103,28 +87,6 @@
} }
} }
.buttonWithIcon {
margin-left: -1.6rem;
.icon {
filter: invert(0.5);
margin-right: 0.3em;
width: 1em;
}
img {
vertical-align: middle;
}
}
.stats {
display: flex;
flex: 1;
flex-direction: column;
justify-content: flex-end;
margin-top: 3em;
}
a { a {
color: rgb(255 255 255 / 35%); color: rgb(255 255 255 / 35%);
font-weight: normal !important; font-weight: normal !important;
@ -135,7 +97,3 @@
} }
} }
} }
.asidePanelHidden {
transform: translateX(100%);
}

View File

@ -8,11 +8,10 @@ import type { Shout, Topic } from '../../graphql/types.gen'
import { apiClient } from '../../utils/apiClient' import { apiClient } from '../../utils/apiClient'
import { TopicSelect } from '../Editor/TopicSelect/TopicSelect' import { TopicSelect } from '../Editor/TopicSelect/TopicSelect'
import { router, useRouter } from '../../stores/router' import { router, useRouter } from '../../stores/router'
import { getPagePath, openPage } from '@nanostores/router' import { openPage } from '@nanostores/router'
import { translit } from '../../utils/ru2en' import { translit } from '../../utils/ru2en'
import { Editor } from '../Editor/Editor' import { Editor } from '../Editor/Editor'
import { Button } from '../_shared/Button' import { Panel } from '../Editor/Panel'
import { Icon } from '../_shared/Icon'
type ShoutForm = { type ShoutForm = {
slug: string slug: string
@ -35,7 +34,6 @@ export const EditView = (props: EditViewProps) => {
const { page } = useRouter() const { page } = useRouter()
const [isSlugChanged, setIsSlugChanged] = createSignal(false) const [isSlugChanged, setIsSlugChanged] = createSignal(false)
const [isEditorPanelOPened, setIsEditorPanelOPened] = createSignal(false)
const [form, setForm] = createStore<ShoutForm>({ const [form, setForm] = createStore<ShoutForm>({
slug: props.shout.slug, slug: props.shout.slug,
@ -79,10 +77,6 @@ export const EditView = (props: EditViewProps) => {
setForm('slug', slug) setForm('slug', slug)
} }
const toggleEditorPanel = () => {
setIsEditorPanelOPened(!isEditorPanelOPened())
}
const handleSaveButtonClick = async (e) => { const handleSaveButtonClick = async (e) => {
e.preventDefault() e.preventDefault()
@ -137,16 +131,9 @@ export const EditView = (props: EditViewProps) => {
<Editor <Editor
shoutSlug={props.shout.slug} shoutSlug={props.shout.slug}
initialContent={form.body} initialContent={props.shout.body}
onChange={(body) => setForm('body', body)} onChange={(body) => setForm('body', body)}
/> />
<div class={styles.saveBlock}>
{/*<button class={clsx('button button--outline', styles.button)}>Сохранить</button>*/}
<a href={getPagePath(router, 'editSettings', { shoutSlug: props.shout.slug })}>
Настройки
</a>
</div>
</div> </div>
<div <div
class={clsx(styles.editSettings, { class={clsx(styles.editSettings, {
@ -225,113 +212,13 @@ export const EditView = (props: EditViewProps) => {
выглядеть на&nbsp;главной странице выглядеть на&nbsp;главной странице
</p> </p>
<div class={styles.articlePreview} /> <div class={styles.articlePreview} />
<div class={styles.saveBlock}>
<p>
Проверьте ещё раз введённые данные, если всё верно, вы&nbsp;можете сохранить или
опубликовать ваш текст
</p>
<a href={getPagePath(router, 'edit', { shoutSlug: props.shout.slug })}>Назад</a>
<button
onClick={handleSaveButtonClick}
class={clsx('button button--outline', styles.button)}
>
Сохранить
</button>
<button type="submit" class={clsx('button button--submit', styles.button)}>
Опубликовать
</button>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
<Panel shoutSlug={props.shout.slug} />
<aside
class={clsx('col-md-6', styles.asidePanel, { [styles.asidePanelHidden]: !isEditorPanelOPened() })}
>
<div>
<Button
value={<Icon name="close" />}
variant={'inline'}
class={styles.close}
onClick={toggleEditorPanel}
/>
</div>
<section>
<Button value={t('Publish')} variant={'inline'} class={styles.button} />
<Button value={t('Save draft')} variant={'inline'} class={styles.button} />
</section>
<section>
<Button
value={
<>
<Icon name="eye" class={styles.icon} />
{t('Preview')}
</>
}
variant={'inline'}
class={clsx(styles.button, styles.buttonWithIcon)}
/>
<Button
value={
<>
<Icon name="pencil-outline" class={styles.icon} />
{t('Editing')}
</>
}
variant={'inline'}
class={clsx(styles.button, styles.buttonWithIcon)}
/>
<Button
value={
<>
<Icon name="feed-discussion" class={styles.icon} />
{t('FAQ')}
</>
}
variant={'inline'}
class={clsx(styles.button, styles.buttonWithIcon)}
/>
</section>
<section>
<Button value={t('Invite co-authors')} variant={'inline'} class={styles.button} />
<Button value={t('Publication settings')} variant={'inline'} class={styles.button} />
<Button value={t('Corrections history')} variant={'inline'} class={styles.button} />
</section>
<section>
<p>
<a href="/how-to-write-a-good-article">Как написать хорошую статью</a>
</p>
<p>
<a href="#">Горячие клавиши</a>
</p>
<p>
<a href="#">Помощь</a>
</p>
</section>
<div class={styles.stats}>
<div>
Знаков: <em>2345</em>
</div>
<div>
Слов: <em>215</em>
</div>
<div>
Абзацев: <em>300</em>
</div>
<div>
Посл. изм.: <em>22.03.22 в 18:20</em>
</div>
</div>
</aside>
</> </>
) )
} }

View File

@ -4,7 +4,6 @@ import { Accessor, createContext, createSignal, useContext } from 'solid-js'
type WordCounter = { type WordCounter = {
characters: number characters: number
words: number words: number
paragraphs?: number
} }
type EditorContextType = { type EditorContextType = {
@ -23,12 +22,12 @@ export function useEditorContext() {
} }
export const EditorProvider = (props: { children: JSX.Element }) => { export const EditorProvider = (props: { children: JSX.Element }) => {
const [isEditorPanelVisible, setEditorPanelVisible] = createSignal<boolean>(false) const [isEditorPanelVisible, setIsEditorPanelVisible] = createSignal<boolean>(false)
const [wordCounter, setWordCounter] = createSignal<WordCounter>({ const [wordCounter, setWordCounter] = createSignal<WordCounter>({
characters: 0, characters: 0,
words: 0 words: 0
}) })
const toggleEditorPanel = () => setEditorPanelVisible(!isEditorPanelVisible()) const toggleEditorPanel = () => setIsEditorPanelVisible((value) => !value)
const countWords = (value) => setWordCounter(value) const countWords = (value) => setWordCounter(value)
const actions = { const actions = {
toggleEditorPanel, toggleEditorPanel,

View File

@ -1,9 +1,11 @@
import { onCleanup, onMount } from 'solid-js' import { onCleanup, onMount } from 'solid-js'
type Options = { type Options = {
predicate?: () => boolean
containerRef: { current: HTMLElement } containerRef: { current: HTMLElement }
handler: () => void handler: () => void
// if predicate is present
// handler is called only if predicate function returns true
predicate?: () => boolean
} }
export const useOutsideClickHandler = (options: Options) => { export const useOutsideClickHandler = (options: Options) => {