From 2a04994c60a0681f4ef10612ad23ac622043f5bd Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:11:25 +0000 Subject: [PATCH 01/74] make room for alternative clients --- client/{ => js-variant}/.eslintrc.cjs | 0 client/{ => js-variant}/.gitignore | 0 client/{ => js-variant}/.prettierignore | 0 client/{ => js-variant}/.prettierrc.json | 0 client/{ => js-variant}/Dockerfile | 0 client/{ => js-variant}/README.md | 0 client/{ => js-variant}/index.html | 0 client/{ => js-variant}/package-lock.json | 0 client/{ => js-variant}/package.json | 0 client/{ => js-variant}/public/favicon.svg | 0 client/{ => js-variant}/server.config | 0 client/{ => js-variant}/src/App.css | 0 client/{ => js-variant}/src/App.jsx | 0 client/{ => js-variant}/src/components/Chat/Chat.jsx | 0 client/{ => js-variant}/src/components/Chat/style.module.css | 0 client/{ => js-variant}/src/components/ChatFeed/ChatFeed.jsx | 0 client/{ => js-variant}/src/components/ChatFeed/style.module.css | 0 client/{ => js-variant}/src/components/ChatInput/ChatInput.jsx | 0 client/{ => js-variant}/src/components/ChatInput/style.module.css | 0 .../src/components/ChatMessageCard/ChatMessageCard.jsx | 0 .../src/components/ChatMessageCard/style.module.css | 0 client/{ => js-variant}/src/components/MenuBar/MenuBar.jsx | 0 client/{ => js-variant}/src/components/MenuBar/style.module.css | 0 client/{ => js-variant}/src/hooks/useChat/useChat.js | 0 client/{ => js-variant}/src/index.css | 0 client/{ => js-variant}/src/main.jsx | 0 client/{ => js-variant}/src/utils/messageBrooker/index.js | 0 .../src/utils/messageBrooker/natsBrooker/codec.js | 0 .../src/utils/messageBrooker/natsBrooker/connectToNatsServer.js | 0 .../src/utils/messageBrooker/natsBrooker/index.js | 0 client/{ => js-variant}/vite.config.js | 0 31 files changed, 0 insertions(+), 0 deletions(-) rename client/{ => js-variant}/.eslintrc.cjs (100%) rename client/{ => js-variant}/.gitignore (100%) rename client/{ => js-variant}/.prettierignore (100%) rename client/{ => js-variant}/.prettierrc.json (100%) rename client/{ => js-variant}/Dockerfile (100%) rename client/{ => js-variant}/README.md (100%) rename client/{ => js-variant}/index.html (100%) rename client/{ => js-variant}/package-lock.json (100%) rename client/{ => js-variant}/package.json (100%) rename client/{ => js-variant}/public/favicon.svg (100%) rename client/{ => js-variant}/server.config (100%) rename client/{ => js-variant}/src/App.css (100%) rename client/{ => js-variant}/src/App.jsx (100%) rename client/{ => js-variant}/src/components/Chat/Chat.jsx (100%) rename client/{ => js-variant}/src/components/Chat/style.module.css (100%) rename client/{ => js-variant}/src/components/ChatFeed/ChatFeed.jsx (100%) rename client/{ => js-variant}/src/components/ChatFeed/style.module.css (100%) rename client/{ => js-variant}/src/components/ChatInput/ChatInput.jsx (100%) rename client/{ => js-variant}/src/components/ChatInput/style.module.css (100%) rename client/{ => js-variant}/src/components/ChatMessageCard/ChatMessageCard.jsx (100%) rename client/{ => js-variant}/src/components/ChatMessageCard/style.module.css (100%) rename client/{ => js-variant}/src/components/MenuBar/MenuBar.jsx (100%) rename client/{ => js-variant}/src/components/MenuBar/style.module.css (100%) rename client/{ => js-variant}/src/hooks/useChat/useChat.js (100%) rename client/{ => js-variant}/src/index.css (100%) rename client/{ => js-variant}/src/main.jsx (100%) rename client/{ => js-variant}/src/utils/messageBrooker/index.js (100%) rename client/{ => js-variant}/src/utils/messageBrooker/natsBrooker/codec.js (100%) rename client/{ => js-variant}/src/utils/messageBrooker/natsBrooker/connectToNatsServer.js (100%) rename client/{ => js-variant}/src/utils/messageBrooker/natsBrooker/index.js (100%) rename client/{ => js-variant}/vite.config.js (100%) diff --git a/client/.eslintrc.cjs b/client/js-variant/.eslintrc.cjs similarity index 100% rename from client/.eslintrc.cjs rename to client/js-variant/.eslintrc.cjs diff --git a/client/.gitignore b/client/js-variant/.gitignore similarity index 100% rename from client/.gitignore rename to client/js-variant/.gitignore diff --git a/client/.prettierignore b/client/js-variant/.prettierignore similarity index 100% rename from client/.prettierignore rename to client/js-variant/.prettierignore diff --git a/client/.prettierrc.json b/client/js-variant/.prettierrc.json similarity index 100% rename from client/.prettierrc.json rename to client/js-variant/.prettierrc.json diff --git a/client/Dockerfile b/client/js-variant/Dockerfile similarity index 100% rename from client/Dockerfile rename to client/js-variant/Dockerfile diff --git a/client/README.md b/client/js-variant/README.md similarity index 100% rename from client/README.md rename to client/js-variant/README.md diff --git a/client/index.html b/client/js-variant/index.html similarity index 100% rename from client/index.html rename to client/js-variant/index.html diff --git a/client/package-lock.json b/client/js-variant/package-lock.json similarity index 100% rename from client/package-lock.json rename to client/js-variant/package-lock.json diff --git a/client/package.json b/client/js-variant/package.json similarity index 100% rename from client/package.json rename to client/js-variant/package.json diff --git a/client/public/favicon.svg b/client/js-variant/public/favicon.svg similarity index 100% rename from client/public/favicon.svg rename to client/js-variant/public/favicon.svg diff --git a/client/server.config b/client/js-variant/server.config similarity index 100% rename from client/server.config rename to client/js-variant/server.config diff --git a/client/src/App.css b/client/js-variant/src/App.css similarity index 100% rename from client/src/App.css rename to client/js-variant/src/App.css diff --git a/client/src/App.jsx b/client/js-variant/src/App.jsx similarity index 100% rename from client/src/App.jsx rename to client/js-variant/src/App.jsx diff --git a/client/src/components/Chat/Chat.jsx b/client/js-variant/src/components/Chat/Chat.jsx similarity index 100% rename from client/src/components/Chat/Chat.jsx rename to client/js-variant/src/components/Chat/Chat.jsx diff --git a/client/src/components/Chat/style.module.css b/client/js-variant/src/components/Chat/style.module.css similarity index 100% rename from client/src/components/Chat/style.module.css rename to client/js-variant/src/components/Chat/style.module.css diff --git a/client/src/components/ChatFeed/ChatFeed.jsx b/client/js-variant/src/components/ChatFeed/ChatFeed.jsx similarity index 100% rename from client/src/components/ChatFeed/ChatFeed.jsx rename to client/js-variant/src/components/ChatFeed/ChatFeed.jsx diff --git a/client/src/components/ChatFeed/style.module.css b/client/js-variant/src/components/ChatFeed/style.module.css similarity index 100% rename from client/src/components/ChatFeed/style.module.css rename to client/js-variant/src/components/ChatFeed/style.module.css diff --git a/client/src/components/ChatInput/ChatInput.jsx b/client/js-variant/src/components/ChatInput/ChatInput.jsx similarity index 100% rename from client/src/components/ChatInput/ChatInput.jsx rename to client/js-variant/src/components/ChatInput/ChatInput.jsx diff --git a/client/src/components/ChatInput/style.module.css b/client/js-variant/src/components/ChatInput/style.module.css similarity index 100% rename from client/src/components/ChatInput/style.module.css rename to client/js-variant/src/components/ChatInput/style.module.css diff --git a/client/src/components/ChatMessageCard/ChatMessageCard.jsx b/client/js-variant/src/components/ChatMessageCard/ChatMessageCard.jsx similarity index 100% rename from client/src/components/ChatMessageCard/ChatMessageCard.jsx rename to client/js-variant/src/components/ChatMessageCard/ChatMessageCard.jsx diff --git a/client/src/components/ChatMessageCard/style.module.css b/client/js-variant/src/components/ChatMessageCard/style.module.css similarity index 100% rename from client/src/components/ChatMessageCard/style.module.css rename to client/js-variant/src/components/ChatMessageCard/style.module.css diff --git a/client/src/components/MenuBar/MenuBar.jsx b/client/js-variant/src/components/MenuBar/MenuBar.jsx similarity index 100% rename from client/src/components/MenuBar/MenuBar.jsx rename to client/js-variant/src/components/MenuBar/MenuBar.jsx diff --git a/client/src/components/MenuBar/style.module.css b/client/js-variant/src/components/MenuBar/style.module.css similarity index 100% rename from client/src/components/MenuBar/style.module.css rename to client/js-variant/src/components/MenuBar/style.module.css diff --git a/client/src/hooks/useChat/useChat.js b/client/js-variant/src/hooks/useChat/useChat.js similarity index 100% rename from client/src/hooks/useChat/useChat.js rename to client/js-variant/src/hooks/useChat/useChat.js diff --git a/client/src/index.css b/client/js-variant/src/index.css similarity index 100% rename from client/src/index.css rename to client/js-variant/src/index.css diff --git a/client/src/main.jsx b/client/js-variant/src/main.jsx similarity index 100% rename from client/src/main.jsx rename to client/js-variant/src/main.jsx diff --git a/client/src/utils/messageBrooker/index.js b/client/js-variant/src/utils/messageBrooker/index.js similarity index 100% rename from client/src/utils/messageBrooker/index.js rename to client/js-variant/src/utils/messageBrooker/index.js diff --git a/client/src/utils/messageBrooker/natsBrooker/codec.js b/client/js-variant/src/utils/messageBrooker/natsBrooker/codec.js similarity index 100% rename from client/src/utils/messageBrooker/natsBrooker/codec.js rename to client/js-variant/src/utils/messageBrooker/natsBrooker/codec.js diff --git a/client/src/utils/messageBrooker/natsBrooker/connectToNatsServer.js b/client/js-variant/src/utils/messageBrooker/natsBrooker/connectToNatsServer.js similarity index 100% rename from client/src/utils/messageBrooker/natsBrooker/connectToNatsServer.js rename to client/js-variant/src/utils/messageBrooker/natsBrooker/connectToNatsServer.js diff --git a/client/src/utils/messageBrooker/natsBrooker/index.js b/client/js-variant/src/utils/messageBrooker/natsBrooker/index.js similarity index 100% rename from client/src/utils/messageBrooker/natsBrooker/index.js rename to client/js-variant/src/utils/messageBrooker/natsBrooker/index.js diff --git a/client/vite.config.js b/client/js-variant/vite.config.js similarity index 100% rename from client/vite.config.js rename to client/js-variant/vite.config.js From fe2c7da4b3f0e7932facb5822ce2f36ef536f9d9 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:14:51 +0000 Subject: [PATCH 02/74] generate boilerplate --- client/ts-variant/.eslintrc.cjs | 14 ++++++ client/ts-variant/.gitignore | 24 +++++++++ client/ts-variant/index.html | 13 +++++ client/ts-variant/package.json | 28 +++++++++++ client/ts-variant/public/vite.svg | 1 + client/ts-variant/src/App.css | 42 ++++++++++++++++ client/ts-variant/src/App.tsx | 35 +++++++++++++ client/ts-variant/src/assets/react.svg | 1 + client/ts-variant/src/index.css | 69 ++++++++++++++++++++++++++ client/ts-variant/src/main.tsx | 10 ++++ client/ts-variant/src/vite-env.d.ts | 1 + client/ts-variant/tsconfig.json | 25 ++++++++++ client/ts-variant/tsconfig.node.json | 10 ++++ client/ts-variant/vite.config.ts | 7 +++ 14 files changed, 280 insertions(+) create mode 100644 client/ts-variant/.eslintrc.cjs create mode 100644 client/ts-variant/.gitignore create mode 100644 client/ts-variant/index.html create mode 100644 client/ts-variant/package.json create mode 100644 client/ts-variant/public/vite.svg create mode 100644 client/ts-variant/src/App.css create mode 100644 client/ts-variant/src/App.tsx create mode 100644 client/ts-variant/src/assets/react.svg create mode 100644 client/ts-variant/src/index.css create mode 100644 client/ts-variant/src/main.tsx create mode 100644 client/ts-variant/src/vite-env.d.ts create mode 100644 client/ts-variant/tsconfig.json create mode 100644 client/ts-variant/tsconfig.node.json create mode 100644 client/ts-variant/vite.config.ts diff --git a/client/ts-variant/.eslintrc.cjs b/client/ts-variant/.eslintrc.cjs new file mode 100644 index 0000000..4020bcb --- /dev/null +++ b/client/ts-variant/.eslintrc.cjs @@ -0,0 +1,14 @@ +module.exports = { + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + parser: '@typescript-eslint/parser', + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': 'warn', + }, +} diff --git a/client/ts-variant/.gitignore b/client/ts-variant/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/client/ts-variant/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/client/ts-variant/index.html b/client/ts-variant/index.html new file mode 100644 index 0000000..e0d1c84 --- /dev/null +++ b/client/ts-variant/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json new file mode 100644 index 0000000..b83d75b --- /dev/null +++ b/client/ts-variant/package.json @@ -0,0 +1,28 @@ +{ + "name": "r-mess-client-ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.37", + "@types/react-dom": "^18.0.11", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", + "@vitejs/plugin-react-swc": "^3.0.0", + "eslint": "^8.38.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.3.4", + "typescript": "^5.0.2", + "vite": "^4.3.9" + } +} diff --git a/client/ts-variant/public/vite.svg b/client/ts-variant/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/client/ts-variant/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/ts-variant/src/App.css b/client/ts-variant/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/client/ts-variant/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx new file mode 100644 index 0000000..afe48ac --- /dev/null +++ b/client/ts-variant/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> +
+ + Vite logo + + + React logo + +
+

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/client/ts-variant/src/assets/react.svg b/client/ts-variant/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/client/ts-variant/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/ts-variant/src/index.css b/client/ts-variant/src/index.css new file mode 100644 index 0000000..2c3fac6 --- /dev/null +++ b/client/ts-variant/src/index.css @@ -0,0 +1,69 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/client/ts-variant/src/main.tsx b/client/ts-variant/src/main.tsx new file mode 100644 index 0000000..91c03f3 --- /dev/null +++ b/client/ts-variant/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( + + + , +) diff --git a/client/ts-variant/src/vite-env.d.ts b/client/ts-variant/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/client/ts-variant/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/client/ts-variant/tsconfig.json b/client/ts-variant/tsconfig.json new file mode 100644 index 0000000..a7fc6fb --- /dev/null +++ b/client/ts-variant/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/client/ts-variant/tsconfig.node.json b/client/ts-variant/tsconfig.node.json new file mode 100644 index 0000000..42872c5 --- /dev/null +++ b/client/ts-variant/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/client/ts-variant/vite.config.ts b/client/ts-variant/vite.config.ts new file mode 100644 index 0000000..861b04b --- /dev/null +++ b/client/ts-variant/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 650cc7f632d5908cfeea5511859586ff5cdfd8c1 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:16:39 +0000 Subject: [PATCH 03/74] generate lockfile --- client/ts-variant/package-lock.json | 2451 +++++++++++++++++++++++++++ 1 file changed, 2451 insertions(+) create mode 100644 client/ts-variant/package-lock.json diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json new file mode 100644 index 0000000..a01ef9c --- /dev/null +++ b/client/ts-variant/package-lock.json @@ -0,0 +1,2451 @@ +{ + "name": "r-mess-client-ts", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "r-mess-client-ts", + "version": "0.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.37", + "@types/react-dom": "^18.0.11", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", + "@vitejs/plugin-react-swc": "^3.0.0", + "eslint": "^8.38.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.3.4", + "typescript": "^5.0.2", + "vite": "^4.3.9" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@swc/core": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.64.tgz", + "integrity": "sha512-be1dk2pfjzBjFp/+p47/wvOAm7KpEtsi7hqI3ofox6pK3hBJChHgVTLVV9xqZm7CnYdyYYw3Z78hH6lrwutxXQ==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.64", + "@swc/core-darwin-x64": "1.3.64", + "@swc/core-linux-arm-gnueabihf": "1.3.64", + "@swc/core-linux-arm64-gnu": "1.3.64", + "@swc/core-linux-arm64-musl": "1.3.64", + "@swc/core-linux-x64-gnu": "1.3.64", + "@swc/core-linux-x64-musl": "1.3.64", + "@swc/core-win32-arm64-msvc": "1.3.64", + "@swc/core-win32-ia32-msvc": "1.3.64", + "@swc/core-win32-x64-msvc": "1.3.64" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.64.tgz", + "integrity": "sha512-gSPld6wxZBZoEvZXWmNfd+eJGlGvrEXmhMBCUwSccpuMa0KqK7F6AAZVu7kFkmlXPq2kS8owjk6/VXnVBmm5Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.64.tgz", + "integrity": "sha512-SJd1pr+U2pz5ZVv5BL36CN879Pn1V0014uVNlB+6yNh3e8T0fjUbtRJcbFiBB+OeYuJ1UNUeslaRJtKJNtMH7A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.64.tgz", + "integrity": "sha512-XE60bZS+qO+d8IQYAayhn3TRqyzVmQeOsX2B1yUHuKZU3Zb/mt/cmD/HLzZZW7J3z19kYf2na7Hvmnt3amUGoA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.64.tgz", + "integrity": "sha512-+jcUua4cYLRMqDicv+4AaTZUGgYWXkXVI9AzaAgfkMNLU2TMXwuYXopxk1giAMop88+ovzYIqrxErRdu70CgtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.64.tgz", + "integrity": "sha512-50MI8NFYUKhLncqY2piM/XOnNqZT6zY2ZoNOFsy63/T2gAYy1ts4mF4YUEkg4XOA2zhue1JSLZBUrHQXbgMYUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.64.tgz", + "integrity": "sha512-bT8seQ41Q4J2JDgn2JpFCGNehGAIilAkZ476gEaKKroEWepBhkD0K1MspSSVYSJhLSGbBVSaadUEiBPxWgu1Rw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.64.tgz", + "integrity": "sha512-sJgh3TXCDOEq/Au4XLAgNqy4rVcLeywQBoftnV3rcvX1/u9OCSRzgKLgYc5d1pEN5AMJV1l4u26kbGlQuZ+yRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.64.tgz", + "integrity": "sha512-zWIy+mAWDjtJjl4e4mmhQL7g9KbkOwcWbeoIk4C6NT4VpjnjdX1pMml/Ez2sF5J5cGBwu7B1ePfTe/kAE6G36Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.64.tgz", + "integrity": "sha512-6HMiuUeSMpTUAimb1E+gUNjy8m211oAzw+wjU8oOdA6iihWaLBz4TOhU9IaKZPPjqEcYGwqaT3tj5b5+mxde6Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.64.tgz", + "integrity": "sha512-c8Al0JJfmgnO9sg6w34PICibqI4p7iXywo+wOxjY88oFwMcfV5rGaif1Fe3RqxJP/1WtUV7lYuKKZrneMXtyLA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.12.tgz", + "integrity": "sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.5.tgz", + "integrity": "sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.11.tgz", + "integrity": "sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/type-utils": "5.59.11", + "@typescript-eslint/utils": "5.59.11", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.11.tgz", + "integrity": "sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz", + "integrity": "sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.11.tgz", + "integrity": "sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.11", + "@typescript-eslint/utils": "5.59.11", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.11.tgz", + "integrity": "sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.11.tgz", + "integrity": "sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.11.tgz", + "integrity": "sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.11.tgz", + "integrity": "sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", + "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.61" + }, + "peerDependencies": { + "vite": "^4" + } + }, + "node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.43.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz", + "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", + "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", + "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} From d01f0aa54f78c2c675541434d3033e95a5379e36 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:16:53 +0000 Subject: [PATCH 04/74] setup Dockerfile --- client/ts-variant/Dockerfile | 7 +++++++ client/ts-variant/server.config | 0 2 files changed, 7 insertions(+) create mode 100644 client/ts-variant/Dockerfile create mode 100644 client/ts-variant/server.config diff --git a/client/ts-variant/Dockerfile b/client/ts-variant/Dockerfile new file mode 100644 index 0000000..28bc5c3 --- /dev/null +++ b/client/ts-variant/Dockerfile @@ -0,0 +1,7 @@ +FROM lipanski/docker-static-website:latest + +COPY ./server.config . + +COPY ./dist . + +CMD ["/busybox", "httpd", "-f", "-v", "-p", "3000", "-c", "server.config"] \ No newline at end of file diff --git a/client/ts-variant/server.config b/client/ts-variant/server.config new file mode 100644 index 0000000..e69de29 From 872c14d4864158694bb8f5e845695e4d3a902909 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:17:30 +0000 Subject: [PATCH 05/74] refine design sktech --- docs/design-sketch.excalidraw | 3713 ++++++++++++++++++++------------- 1 file changed, 2209 insertions(+), 1504 deletions(-) diff --git a/docs/design-sketch.excalidraw b/docs/design-sketch.excalidraw index 0302c74..f56b875 100644 --- a/docs/design-sketch.excalidraw +++ b/docs/design-sketch.excalidraw @@ -4,373 +4,367 @@ "source": "https://excalidraw.com", "elements": [ { - "id": "2NnJJjV86T5odL5GtC1ks", "type": "rectangle", - "x": 1249.3721739451767, - "y": 470.2745060602467, - "width": 326.1064877828345, - "height": 576.5049453205854, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 107, + "versionNonce": 813559860, + "isDeleted": false, + "id": "2NnJJjV86T5odL5GtC1ks", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1249.3721739451767, + "y": 470.2745060602467, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 326.1064877828345, + "height": 576.5049453205854, + "seed": 507841804, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 507841804, - "version": 107, - "versionNonce": 813559860, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308548, "link": null, "locked": false }, { - "id": "jFOyMZAVXQS6gJhF5Ay0i", "type": "rectangle", - "x": 1823.0625, - "y": 514.19921875, - "width": 256.7265625, - "height": 365.30468749999994, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffd43b", + "version": 274, + "versionNonce": 314531084, + "isDeleted": false, + "id": "jFOyMZAVXQS6gJhF5Ay0i", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1823.0625, + "y": 514.19921875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 831586228, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 831586228, - "version": 274, - "versionNonce": 314531084, - "isDeleted": false, "boundElements": [], "updated": 1686846308548, "link": null, "locked": false }, { - "id": "s9JQwlBkYdPnXpB6EPvJt", "type": "text", - "x": -1970.6214253274663, - "y": -160.96790517968884, - "width": 1653.358154296875, - "height": 138.0724988820408, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 196, + "versionNonce": 526900108, + "isDeleted": false, + "id": "s9JQwlBkYdPnXpB6EPvJt", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -1970.6214253274663, + "y": -160.96790517968884, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1653.358154296875, + "height": 138.0724988820408, + "seed": 1665275148, "groupIds": [ "gIv5MV4I8j4l6fs1Ixtvy" ], "frameId": null, "roundness": null, - "seed": 1665275148, - "version": 196, - "versionNonce": 526900108, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308548, "link": null, "locked": false, - "text": "Realtime Messaging Application", "fontSize": 110.45799910563265, "fontFamily": 1, + "text": "Realtime Messaging Application", "textAlign": "left", "verticalAlign": "top", - "baseline": 97, "containerId": null, "originalText": "Realtime Messaging Application", "lineHeight": 1.25, - "isFrameName": false + "baseline": 97 }, { - "id": "cistJy24NoPXXVNI-pYRv", "type": "text", - "x": -1947.3216911411218, - "y": -10.754135345607438, - "width": 1181.8984375, - "height": 107.38972135269842, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 265, + "versionNonce": 1346270004, + "isDeleted": false, + "id": "cistJy24NoPXXVNI-pYRv", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -1947.3216911411218, + "y": -10.754135345607438, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1181.8984375, + "height": 107.38972135269842, + "seed": 1122347532, "groupIds": [ "gIv5MV4I8j4l6fs1Ixtvy" ], "frameId": null, "roundness": null, - "seed": 1122347532, - "version": 265, - "versionNonce": 1346270004, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308548, "link": null, "locked": false, - "text": "- A React & Nats marriage", "fontSize": 85.91177708215874, "fontFamily": 1, + "text": "- A React & Nats marriage", "textAlign": "left", "verticalAlign": "top", - "baseline": 75, "containerId": null, "originalText": "- A React & Nats marriage", "lineHeight": 1.25, - "isFrameName": false + "baseline": 75 }, { - "id": "jVS3GfBZ3h9R0yZ10SHO_", "type": "text", - "x": -1916.6389136117796, - "y": 138.0093938318136, - "width": 468.2950439453125, - "height": 153.413887646712, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 343, + "versionNonce": 796690956, + "isDeleted": false, + "id": "jVS3GfBZ3h9R0yZ10SHO_", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -1916.6389136117796, + "y": 138.0093938318136, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 468.2950439453125, + "height": 153.413887646712, + "seed": 341473588, "groupIds": [ "gIv5MV4I8j4l6fs1Ixtvy" ], "frameId": null, "roundness": null, - "seed": 341473588, - "version": 343, - "versionNonce": 796690956, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308548, "link": null, "locked": false, - "text": "Frontend React\nBackend Nats", "fontSize": 61.365555058684805, "fontFamily": 1, + "text": "Frontend React\nBackend Nats", "textAlign": "left", "verticalAlign": "top", - "baseline": 130, "containerId": null, "originalText": "Frontend React\nBackend Nats", "lineHeight": 1.25, - "isFrameName": false + "baseline": 130 }, { - "id": "I-uff2L2tV72Gh9g8XCUe", "type": "text", - "x": -398.816761802002, - "y": 546.8751211658464, - "width": 641.5984497070312, - "height": 192.20100433075237, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 173, + "versionNonce": 1877959052, + "isDeleted": false, + "id": "I-uff2L2tV72Gh9g8XCUe", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -398.816761802002, + "y": 546.8751211658464, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 641.5984497070312, + "height": 192.20100433075237, + "seed": 96038540, "groupIds": [], "frameId": null, "roundness": null, - "seed": 96038540, - "version": 173, - "versionNonce": 1877959052, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846768034, "link": null, "locked": false, - "text": "Frontend", "fontSize": 153.7608034646019, "fontFamily": 1, + "text": "Frontend", "textAlign": "left", "verticalAlign": "top", - "baseline": 135, "containerId": null, "originalText": "Frontend", "lineHeight": 1.25, - "isFrameName": false + "baseline": 135 }, { - "id": "yHX0dbG1wc-8omtspSsHV", "type": "text", - "x": -483.85704450460105, - "y": 1584.621735634211, - "width": 733.0797729492188, - "height": 192.20100433075237, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 338, + "versionNonce": 1849217716, + "isDeleted": false, + "id": "yHX0dbG1wc-8omtspSsHV", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -483.85704450460105, + "y": 1584.621735634211, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 733.0797729492188, + "height": 192.20100433075237, + "seed": 614123700, "groupIds": [], "frameId": null, "roundness": null, - "seed": 614123700, - "version": 338, - "versionNonce": 1849217716, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846623042, "link": null, "locked": false, - "text": "Crossover", "fontSize": 153.7608034646019, "fontFamily": 1, + "text": "Crossover", "textAlign": "left", "verticalAlign": "top", - "baseline": 135, "containerId": null, "originalText": "Crossover", "lineHeight": 1.25, - "isFrameName": false + "baseline": 135 }, { - "id": "G4i4vWUwfGFOigdCgZnMY", "type": "text", - "x": -373.9133523062176, - "y": 2372.3549130845145, - "width": 609.772216796875, - "height": 192.20100433075237, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 438, + "versionNonce": 753692964, + "isDeleted": false, + "id": "G4i4vWUwfGFOigdCgZnMY", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -442.0566313189886, + "y": 2290.219414029718, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 609.772216796875, + "height": 192.20100433075237, + "seed": 62593332, "groupIds": [], "frameId": null, "roundness": null, - "seed": 62593332, - "version": 351, - "versionNonce": 1998778292, - "isDeleted": false, - "boundElements": null, - "updated": 1686846770630, + "boundElements": [], + "updated": 1687002399198, "link": null, "locked": false, - "text": "Backend", "fontSize": 153.7608034646019, "fontFamily": 1, + "text": "Backend", "textAlign": "left", "verticalAlign": "top", - "baseline": 135, "containerId": null, "originalText": "Backend", "lineHeight": 1.25, - "isFrameName": false + "baseline": 135 }, { - "id": "4WFtskqO2YVxjSVGHxFbG", "type": "rectangle", - "x": 724.7109375, - "y": 445.53515625, - "width": 274.76953125, - "height": 488.234375, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 120, + "versionNonce": 1989310220, + "isDeleted": false, + "id": "4WFtskqO2YVxjSVGHxFbG", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 724.7109375, + "y": 445.53515625, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 857775796, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 857775796, - "version": 120, - "versionNonce": 1989310220, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308549, "link": null, "locked": false }, { - "id": "JDePAyKXG9qod5Y8209gy", "type": "rectangle", - "x": 732.4921875, - "y": 451.0234375, - "width": 256.7265625, - "height": 50.3203125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 60, + "versionNonce": 231191948, + "isDeleted": false, + "id": "JDePAyKXG9qod5Y8209gy", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 732.4921875, + "y": 451.0234375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1829146892, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1829146892, - "version": 60, - "versionNonce": 231191948, - "isDeleted": false, "boundElements": [], "updated": 1686846308549, "link": null, "locked": false }, { - "id": "rOc-G2NluWXWZb7gKav8y", "type": "rectangle", - "x": 1284.609375, - "y": 338.02734375, - "width": 256.7265625, - "height": 50.3203125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 114, + "versionNonce": 1541486900, + "isDeleted": false, + "id": "rOc-G2NluWXWZb7gKav8y", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1284.609375, + "y": 338.02734375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1325422516, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1325422516, - "version": 114, - "versionNonce": 1541486900, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -382,66 +376,65 @@ "locked": false }, { - "id": "NEEff7IOVEBYgMHlbE9XM", "type": "text", - "x": 1347.5643844604492, - "y": 345.6875, - "width": 130.81654357910156, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 21, + "versionNonce": 953230348, + "isDeleted": false, + "id": "NEEff7IOVEBYgMHlbE9XM", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1347.5643844604492, + "y": 345.6875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 130.81654357910156, + "height": 35, + "seed": 1403047860, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1403047860, - "version": 21, - "versionNonce": 953230348, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308549, "link": null, "locked": false, - "text": "Menu Bar", "fontSize": 28, "fontFamily": 1, + "text": "Menu Bar", "textAlign": "center", "verticalAlign": "middle", - "baseline": 25, "containerId": "rOc-G2NluWXWZb7gKav8y", "originalText": "Menu Bar", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "QYv-EvPoFYFi_0S5Gn4d-", "type": "rectangle", - "x": 1820.5429317535506, - "y": 291.71966306665155, - "width": 256.7265625, - "height": 50.3203125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 151, + "versionNonce": 1397486260, + "isDeleted": false, + "id": "QYv-EvPoFYFi_0S5Gn4d-", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1820.5429317535506, + "y": 291.71966306665155, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1061199028, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1061199028, - "version": 151, - "versionNonce": 1397486260, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -453,95 +446,94 @@ "locked": false }, { - "id": "x1xbjtX_YvyoTqBKzSMzV", "type": "text", - "x": 1898.8280040802108, - "y": 299.37981931665155, - "width": 100.15641784667969, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 72, + "versionNonce": 1302905484, + "isDeleted": false, + "id": "x1xbjtX_YvyoTqBKzSMzV", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1898.8280040802108, + "y": 299.37981931665155, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 100.15641784667969, + "height": 35, + "seed": 1210824844, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1210824844, - "version": 72, - "versionNonce": 1302905484, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308549, "link": null, "locked": false, - "text": "R Mess", "fontSize": 28, "fontFamily": 1, + "text": "R Mess", "textAlign": "center", "verticalAlign": "middle", - "baseline": 25, "containerId": "QYv-EvPoFYFi_0S5Gn4d-", "originalText": "R Mess", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "VrhGl9Y92XBqEO7HkUmmr", "type": "rectangle", - "x": 736.08203125, - "y": 870.87890625, - "width": 256.7265625, - "height": 50.3203125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#69db7c", + "version": 153, + "versionNonce": 351338292, + "isDeleted": false, + "id": "VrhGl9Y92XBqEO7HkUmmr", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 736.08203125, + "y": 870.87890625, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1960725388, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1960725388, - "version": 153, - "versionNonce": 351338292, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308549, "link": null, "locked": false }, { - "id": "_py2r2v0KIpSiBOQoqb-8", "type": "rectangle", - "x": 1288.19921875, - "y": 966.984375, - "width": 256.7265625, - "height": 45, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#69db7c", + "version": 201, + "versionNonce": 772324876, + "isDeleted": false, + "id": "_py2r2v0KIpSiBOQoqb-8", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1288.19921875, + "y": 966.984375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 256.7265625, + "height": 45, + "seed": 33767732, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 33767732, - "version": 201, - "versionNonce": 772324876, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -553,182 +545,181 @@ "locked": false }, { - "id": "EqiVCiYvjPDLQnbeOx9Oi", "type": "text", - "x": 1339.4501724243164, - "y": 971.984375, - "width": 154.2246551513672, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 31, + "versionNonce": 577960116, + "isDeleted": false, + "id": "EqiVCiYvjPDLQnbeOx9Oi", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1339.4501724243164, + "y": 971.984375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 154.2246551513672, + "height": 35, + "seed": 1707537332, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1707537332, - "version": 31, - "versionNonce": 577960116, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308549, "link": null, "locked": false, - "text": "Chat Input", "fontSize": 28, "fontFamily": 1, + "text": "Chat Input", "textAlign": "center", "verticalAlign": "middle", - "baseline": 25, "containerId": "_py2r2v0KIpSiBOQoqb-8", "originalText": "Chat Input", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "V6asxRJ-YmvL2wIQtWwMx", "type": "rectangle", - "x": 1836.0625, - "y": 1119.95703125, - "width": 256.7265625, - "height": 50.3203125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#69db7c", + "version": 319, + "versionNonce": 752688268, + "isDeleted": false, + "id": "V6asxRJ-YmvL2wIQtWwMx", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1836.0625, + "y": 1119.95703125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1977882124, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1977882124, - "version": 319, - "versionNonce": 752688268, - "isDeleted": false, "boundElements": [], "updated": 1686846308549, "link": null, "locked": false }, { - "id": "isheprMHDXuRgQ1fKZCh2", "type": "rectangle", - "x": 2218.98046875, - "y": 1034.92578125, - "width": 661.8451436597576, - "height": 129.72656249999997, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#69db7c", + "version": 454, + "versionNonce": 1887027764, + "isDeleted": false, + "id": "isheprMHDXuRgQ1fKZCh2", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2218.98046875, + "y": 1034.92578125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 661.8451436597576, + "height": 129.72656249999997, + "seed": 413437964, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 413437964, - "version": 454, - "versionNonce": 1887027764, - "isDeleted": false, "boundElements": [], "updated": 1686846308550, "link": null, "locked": false }, { - "id": "JHGyC4hOY4MG-Vv4STlCw", "type": "rectangle", - "x": 2219.67578125, - "y": 676.15234375, - "width": 658.0357090441122, - "height": 138.27734375000006, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 569, + "versionNonce": 904616884, + "isDeleted": false, + "id": "JHGyC4hOY4MG-Vv4STlCw", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "seed": 1254789772, - "version": 569, - "versionNonce": 904616884, - "isDeleted": false, - "boundElements": null, + "angle": 0, + "x": 2219.67578125, + "y": 676.15234375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 658.0357090441122, + "height": 138.27734375000006, + "seed": 1254789772, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false }, { - "id": "btUBP2TLtZSQLqkn62JHA", "type": "rectangle", - "x": 732.28515625, - "y": 500.0078125, - "width": 256.7265625, - "height": 365.30468749999994, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffd43b", + "version": 174, + "versionNonce": 705984140, + "isDeleted": false, + "id": "btUBP2TLtZSQLqkn62JHA", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 732.28515625, + "y": 500.0078125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 1328164108, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1328164108, - "version": 174, - "versionNonce": 705984140, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false }, { - "id": "oiBr8ryOdc0pQX2fzpe7G", "type": "rectangle", - "x": 1284.40234375, - "y": 504.19921875, - "width": 256.7265625, - "height": 365.30468749999994, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffd43b", + "version": 199, + "versionNonce": 142411828, + "isDeleted": false, + "id": "oiBr8ryOdc0pQX2fzpe7G", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1284.40234375, + "y": 504.19921875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 62102540, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 62102540, - "version": 199, - "versionNonce": 142411828, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -740,206 +731,202 @@ "locked": false }, { - "id": "10DOqZGRPhp2dGZfAzgXO", "type": "text", - "x": 1316.851219177246, - "y": 669.3515625, - "width": 191.8288116455078, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#f783ac", + "version": 43, + "versionNonce": 266192140, + "isDeleted": false, + "id": "10DOqZGRPhp2dGZfAzgXO", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1316.851219177246, + "y": 669.3515625, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 191.8288116455078, + "height": 35, + "seed": 2061822348, "groupIds": [], "frameId": null, "roundness": null, - "seed": 2061822348, - "version": 43, - "versionNonce": 266192140, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false, - "text": "Message Feed", "fontSize": 28, "fontFamily": 1, + "text": "Message Feed", "textAlign": "center", "verticalAlign": "middle", - "baseline": 25, "containerId": "oiBr8ryOdc0pQX2fzpe7G", "originalText": "Message Feed", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "s-KQ7QdskpV7Ec1Zkqqjn", "type": "text", - "x": 2217.609375, - "y": 621.18359375, - "width": 115.19247436523438, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 44, + "versionNonce": 1014580108, + "isDeleted": false, + "id": "s-KQ7QdskpV7Ec1Zkqqjn", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2217.609375, + "y": 621.18359375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 115.19247436523438, + "height": 35, + "seed": 1475764748, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1475764748, - "version": 44, - "versionNonce": 1014580108, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false, - "text": "Message", "fontSize": 28, "fontFamily": 1, + "text": "Message", "textAlign": "left", "verticalAlign": "top", - "baseline": 25, "containerId": null, "originalText": "Message", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "s8KqK22AGAmqo1XK-lZrK", "type": "text", - "x": 2230.87109375, - "y": 989.14453125, - "width": 154.2246551513672, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 117, + "versionNonce": 1431800628, + "isDeleted": false, + "id": "s8KqK22AGAmqo1XK-lZrK", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2230.87109375, + "y": 989.14453125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 154.2246551513672, + "height": 35, + "seed": 1180755468, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1180755468, - "version": 117, - "versionNonce": 1431800628, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false, - "text": "Chat Input", "fontSize": 28, "fontFamily": 1, + "text": "Chat Input", "textAlign": "left", "verticalAlign": "top", - "baseline": 25, "containerId": null, "originalText": "Chat Input", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "4xGiPYTB8pvKNQ63m_YZV", "type": "text", - "x": 1860.9140625, - "y": 466.4609375, - "width": 191.8288116455078, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 86, + "versionNonce": 1981870604, + "isDeleted": false, + "id": "4xGiPYTB8pvKNQ63m_YZV", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1860.9140625, + "y": 466.4609375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 191.8288116455078, + "height": 35, + "seed": 922458764, "groupIds": [], "frameId": null, "roundness": null, - "seed": 922458764, - "version": 86, - "versionNonce": 1981870604, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false, - "text": "Message Feed", "fontSize": 28, "fontFamily": 1, + "text": "Message Feed", "textAlign": "left", "verticalAlign": "top", - "baseline": 25, "containerId": null, "originalText": "Message Feed", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "sdXYSV0Z79HH-23f_7m6y", "type": "rectangle", - "x": 2246.24609375, - "y": 689.80078125, - "width": 281.9609375, - "height": 32.4453125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 208, + "versionNonce": 774374580, + "isDeleted": false, + "id": "sdXYSV0Z79HH-23f_7m6y", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2246.24609375, + "y": 689.80078125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 281.9609375, + "height": 32.4453125, + "seed": 1450925452, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1450925452, - "version": 208, - "versionNonce": 774374580, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false }, { - "id": "tQKReu0JgEKxoLPRuYYZQ", "type": "rectangle", - "x": 2249.50390625, - "y": 693.40234375, - "width": 126.03906249999999, - "height": 24.50000000000001, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 275, + "versionNonce": 734974092, + "isDeleted": false, + "id": "tQKReu0JgEKxoLPRuYYZQ", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2249.50390625, + "y": 693.40234375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 126.03906249999999, + "height": 24.50000000000001, + "seed": 1602455348, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1602455348, - "version": 275, - "versionNonce": 734974092, - "isDeleted": false, "boundElements": [ { "id": "f_AjgbclMoM0aAi5SylQM", @@ -951,29 +938,29 @@ "locked": false }, { - "id": "yy3dcNpXE8shpfEsjUJCR", "type": "rectangle", - "x": 2391.484375, - "y": 692.5625, - "width": 126.03906249999999, - "height": 24.50000000000001, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 317, + "versionNonce": 1504529972, + "isDeleted": false, + "id": "yy3dcNpXE8shpfEsjUJCR", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2391.484375, + "y": 692.5625, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 126.03906249999999, + "height": 24.50000000000001, + "seed": 293740556, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 293740556, - "version": 317, - "versionNonce": 1504529972, - "isDeleted": false, "boundElements": [ { "id": "iEMEY_hP-UrxDIGHGvUmg", @@ -985,29 +972,29 @@ "locked": false }, { - "id": "R2L_CYGjP9H0W8clB1yB2", "type": "rectangle", - "x": 2244.171875, - "y": 729.9921875, - "width": 615.3007812500001, - "height": 72.36328125000003, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 277, + "versionNonce": 1564270348, + "isDeleted": false, + "id": "R2L_CYGjP9H0W8clB1yB2", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2244.171875, + "y": 729.9921875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 615.3007812500001, + "height": 72.36328125000003, + "seed": 1793211404, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1793211404, - "version": 277, - "versionNonce": 1564270348, - "isDeleted": false, "boundElements": [ { "id": "P2aa7RB2j-dxeiaswlXId", @@ -1019,20 +1006,24 @@ "locked": false }, { - "id": "P5q3CA6s4L_2uVXbyH2Zv", "type": "rectangle", - "x": 1857.671875, - "y": 805.4834123763314, - "width": 199.3169590441121, - "height": 41.883775123668535, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 843, + "versionNonce": 1221420980, + "isDeleted": false, + "id": "P5q3CA6s4L_2uVXbyH2Zv", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1857.671875, + "y": 805.4834123763314, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 616470540, "groupIds": [ "eWsPAGKLt9sU2QCdPMnF8" ], @@ -1040,10 +1031,6 @@ "roundness": { "type": 3 }, - "seed": 616470540, - "version": 843, - "versionNonce": 1221420980, - "isDeleted": false, "boundElements": [ { "id": "iEMEY_hP-UrxDIGHGvUmg", @@ -1055,20 +1042,24 @@ "locked": false }, { - "id": "cLUJbly4Xpyb8QBsfchXj", "type": "rectangle", - "x": 1865.7199395891464, - "y": 809.6174814257989, - "width": 85.40508647070936, - "height": 9.827583722059682, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 481, + "versionNonce": 48569740, + "isDeleted": false, + "id": "cLUJbly4Xpyb8QBsfchXj", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.7199395891464, + "y": 809.6174814257989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 2116009652, "groupIds": [ "eWsPAGKLt9sU2QCdPMnF8" ], @@ -1076,30 +1067,30 @@ "roundness": { "type": 3 }, - "seed": 2116009652, - "version": 481, - "versionNonce": 48569740, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308550, "link": null, "locked": false }, { - "id": "1iL1N-oRMdJOYCxtPKUm-", "type": "rectangle", - "x": 1866.706720810456, - "y": 810.7083834474386, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 548, + "versionNonce": 1605259572, + "isDeleted": false, + "id": "1iL1N-oRMdJOYCxtPKUm-", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1866.706720810456, + "y": 810.7083834474386, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1137161868, "groupIds": [ "eWsPAGKLt9sU2QCdPMnF8" ], @@ -1107,30 +1098,30 @@ "roundness": { "type": 3 }, - "seed": 1137161868, - "version": 548, - "versionNonce": 1605259572, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "8k8pvl407049GASCGvcvU", "type": "rectangle", - "x": 1909.712160919498, - "y": 810.4539974011777, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 589, + "versionNonce": 1979812876, + "isDeleted": false, + "id": "8k8pvl407049GASCGvcvU", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1909.712160919498, + "y": 810.4539974011777, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 111003700, "groupIds": [ "eWsPAGKLt9sU2QCdPMnF8" ], @@ -1138,30 +1129,30 @@ "roundness": { "type": 3 }, - "seed": 111003700, - "version": 589, - "versionNonce": 1979812876, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "Tb56HtGscEIrQZ7pGUp2m", "type": "rectangle", - "x": 1865.0916652144276, - "y": 821.7913327280229, - "width": 186.37268301802015, - "height": 21.918611660384745, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 550, + "versionNonce": 230034100, + "isDeleted": false, + "id": "Tb56HtGscEIrQZ7pGUp2m", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.0916652144276, + "y": 821.7913327280229, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 287900940, "groupIds": [ "eWsPAGKLt9sU2QCdPMnF8" ], @@ -1169,30 +1160,30 @@ "roundness": { "type": 3 }, - "seed": 287900940, - "version": 550, - "versionNonce": 230034100, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "UAZ3IVT74-afPycfxBQdV", "type": "rectangle", - "x": 1857.796875, - "y": 757.3037248763314, - "width": 199.3169590441121, - "height": 41.883775123668535, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 868, + "versionNonce": 1485580940, + "isDeleted": false, + "id": "UAZ3IVT74-afPycfxBQdV", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1857.796875, + "y": 757.3037248763314, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1038183308, "groupIds": [ "hEVQC9JMjSafNRGoOJoxa" ], @@ -1200,30 +1191,30 @@ "roundness": { "type": 3 }, - "seed": 1038183308, - "version": 868, - "versionNonce": 1485580940, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "Op4PQ0MZ9a3pyXXQhL-75", "type": "rectangle", - "x": 1865.8449395891464, - "y": 761.4377939257989, - "width": 85.40508647070936, - "height": 9.827583722059682, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 506, + "versionNonce": 1703580724, + "isDeleted": false, + "id": "Op4PQ0MZ9a3pyXXQhL-75", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.8449395891464, + "y": 761.4377939257989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 468050740, "groupIds": [ "hEVQC9JMjSafNRGoOJoxa" ], @@ -1231,30 +1222,30 @@ "roundness": { "type": 3 }, - "seed": 468050740, - "version": 506, - "versionNonce": 1703580724, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "a0Fpgz2U2BdbKbGdS7M8q", "type": "rectangle", - "x": 1866.831720810456, - "y": 762.5286959474386, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 573, + "versionNonce": 2101278988, + "isDeleted": false, + "id": "a0Fpgz2U2BdbKbGdS7M8q", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1866.831720810456, + "y": 762.5286959474386, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1749293580, "groupIds": [ "hEVQC9JMjSafNRGoOJoxa" ], @@ -1262,30 +1253,30 @@ "roundness": { "type": 3 }, - "seed": 1749293580, - "version": 573, - "versionNonce": 2101278988, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "cmfLGKHr6YBYvpR2P-0rr", "type": "rectangle", - "x": 1909.837160919498, - "y": 762.2743099011777, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 614, + "versionNonce": 890367412, + "isDeleted": false, + "id": "cmfLGKHr6YBYvpR2P-0rr", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1909.837160919498, + "y": 762.2743099011777, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1093360820, "groupIds": [ "hEVQC9JMjSafNRGoOJoxa" ], @@ -1293,30 +1284,30 @@ "roundness": { "type": 3 }, - "seed": 1093360820, - "version": 614, - "versionNonce": 890367412, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "kfQ0rl3-kRiEPNRYGO05d", "type": "rectangle", - "x": 1865.2166652144276, - "y": 773.6116452280229, - "width": 186.37268301802015, - "height": 21.918611660384745, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 575, + "versionNonce": 1335097228, + "isDeleted": false, + "id": "kfQ0rl3-kRiEPNRYGO05d", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.2166652144276, + "y": 773.6116452280229, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1062008972, "groupIds": [ "hEVQC9JMjSafNRGoOJoxa" ], @@ -1324,30 +1315,30 @@ "roundness": { "type": 3 }, - "seed": 1062008972, - "version": 575, - "versionNonce": 1335097228, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "ScGca8wGOjVzfHAg-gsSs", "type": "rectangle", - "x": 1856.6953125, - "y": 693.0185686263314, - "width": 199.3169590441121, - "height": 41.883775123668535, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 895, + "versionNonce": 494016308, + "isDeleted": false, + "id": "ScGca8wGOjVzfHAg-gsSs", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1856.6953125, + "y": 693.0185686263314, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1130609844, "groupIds": [ "3LIGMdEFl2MvDmamc0OxW" ], @@ -1355,30 +1346,30 @@ "roundness": { "type": 3 }, - "seed": 1130609844, - "version": 895, - "versionNonce": 494016308, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "kP7UlavR-yPNq9V2Z8183", "type": "rectangle", - "x": 1864.7433770891464, - "y": 697.1526376757989, - "width": 85.40508647070936, - "height": 9.827583722059682, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 533, + "versionNonce": 1002776076, + "isDeleted": false, + "id": "kP7UlavR-yPNq9V2Z8183", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1864.7433770891464, + "y": 697.1526376757989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1665833100, "groupIds": [ "3LIGMdEFl2MvDmamc0OxW" ], @@ -1386,30 +1377,30 @@ "roundness": { "type": 3 }, - "seed": 1665833100, - "version": 533, - "versionNonce": 1002776076, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "qbiYaOVhJQZ0UGnKDKzll", "type": "rectangle", - "x": 1865.730158310456, - "y": 698.2435396974386, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 600, + "versionNonce": 722538676, + "isDeleted": false, + "id": "qbiYaOVhJQZ0UGnKDKzll", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.730158310456, + "y": 698.2435396974386, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1051854388, "groupIds": [ "3LIGMdEFl2MvDmamc0OxW" ], @@ -1417,30 +1408,30 @@ "roundness": { "type": 3 }, - "seed": 1051854388, - "version": 600, - "versionNonce": 722538676, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "tlfyEXbkUUq6xr0yY0JQk", "type": "rectangle", - "x": 1908.735598419498, - "y": 697.9891536511777, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 641, + "versionNonce": 382502028, + "isDeleted": false, + "id": "tlfyEXbkUUq6xr0yY0JQk", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1908.735598419498, + "y": 697.9891536511777, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1107273484, "groupIds": [ "3LIGMdEFl2MvDmamc0OxW" ], @@ -1448,30 +1439,30 @@ "roundness": { "type": 3 }, - "seed": 1107273484, - "version": 641, - "versionNonce": 382502028, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "dbWUkMQRXklhozMLHoZmF", "type": "rectangle", - "x": 1864.1151027144276, - "y": 709.3264889780229, - "width": 186.37268301802015, - "height": 21.918611660384745, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 602, + "versionNonce": 1838471732, + "isDeleted": false, + "id": "dbWUkMQRXklhozMLHoZmF", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1864.1151027144276, + "y": 709.3264889780229, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 477831092, "groupIds": [ "3LIGMdEFl2MvDmamc0OxW" ], @@ -1479,30 +1470,30 @@ "roundness": { "type": 3 }, - "seed": 477831092, - "version": 602, - "versionNonce": 1838471732, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "r0lvI3VF8C3GCV3bP0Y28", "type": "rectangle", - "x": 1856.5859375, - "y": 637.9326311263314, - "width": 199.3169590441121, - "height": 41.883775123668535, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 908, + "versionNonce": 107221772, + "isDeleted": false, + "id": "r0lvI3VF8C3GCV3bP0Y28", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1856.5859375, + "y": 637.9326311263314, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1843355532, "groupIds": [ "PtIOKf1gkbCZ2jfH2-Eaj" ], @@ -1510,30 +1501,30 @@ "roundness": { "type": 3 }, - "seed": 1843355532, - "version": 908, - "versionNonce": 107221772, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "rNGvB1b94qRdjq3-NdTFt", "type": "rectangle", - "x": 1864.6340020891464, - "y": 642.0667001757989, - "width": 85.40508647070936, - "height": 9.827583722059682, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 546, + "versionNonce": 266564532, + "isDeleted": false, + "id": "rNGvB1b94qRdjq3-NdTFt", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1864.6340020891464, + "y": 642.0667001757989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1777413940, "groupIds": [ "PtIOKf1gkbCZ2jfH2-Eaj" ], @@ -1541,30 +1532,30 @@ "roundness": { "type": 3 }, - "seed": 1777413940, - "version": 546, - "versionNonce": 266564532, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "gPLNgydgh7P_3OsnfhC9L", "type": "rectangle", - "x": 1865.620783310456, - "y": 643.1576021974386, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 613, + "versionNonce": 1761989004, + "isDeleted": false, + "id": "gPLNgydgh7P_3OsnfhC9L", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.620783310456, + "y": 643.1576021974386, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1281592844, "groupIds": [ "PtIOKf1gkbCZ2jfH2-Eaj" ], @@ -1572,30 +1563,30 @@ "roundness": { "type": 3 }, - "seed": 1281592844, - "version": 613, - "versionNonce": 1761989004, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "NJ_PywgHm-BOR1kTsfD1q", "type": "rectangle", - "x": 1908.626223419498, - "y": 642.9032161511777, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 654, + "versionNonce": 1881333044, + "isDeleted": false, + "id": "NJ_PywgHm-BOR1kTsfD1q", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1908.626223419498, + "y": 642.9032161511777, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1206724788, "groupIds": [ "PtIOKf1gkbCZ2jfH2-Eaj" ], @@ -1603,30 +1594,30 @@ "roundness": { "type": 3 }, - "seed": 1206724788, - "version": 654, - "versionNonce": 1881333044, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "AMIKY6bozMr5SvHFH_5tg", "type": "rectangle", - "x": 1864.0057277144276, - "y": 654.2405514780229, - "width": 186.37268301802015, - "height": 21.918611660384745, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 615, + "versionNonce": 1038860300, + "isDeleted": false, + "id": "AMIKY6bozMr5SvHFH_5tg", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1864.0057277144276, + "y": 654.2405514780229, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1465773196, "groupIds": [ "PtIOKf1gkbCZ2jfH2-Eaj" ], @@ -1634,30 +1625,30 @@ "roundness": { "type": 3 }, - "seed": 1465773196, - "version": 615, - "versionNonce": 1038860300, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "w8jh35gQVfQAv1fMdU-Nd", "type": "rectangle", - "x": 1856.04296875, - "y": 580.8935686263314, - "width": 199.3169590441121, - "height": 41.883775123668535, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 932, + "versionNonce": 934876852, + "isDeleted": false, + "id": "w8jh35gQVfQAv1fMdU-Nd", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1856.04296875, + "y": 580.8935686263314, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 110738356, "groupIds": [ "DGqyxj05QDkIpqqYxg7os" ], @@ -1665,30 +1656,30 @@ "roundness": { "type": 3 }, - "seed": 110738356, - "version": 932, - "versionNonce": 934876852, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "3xZPjG-QC0VcZH3Wp_NyP", "type": "rectangle", - "x": 1864.0910333391464, - "y": 585.0276376757989, - "width": 85.40508647070936, - "height": 9.827583722059682, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 570, + "versionNonce": 219143820, + "isDeleted": false, + "id": "3xZPjG-QC0VcZH3Wp_NyP", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1864.0910333391464, + "y": 585.0276376757989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 364382604, "groupIds": [ "DGqyxj05QDkIpqqYxg7os" ], @@ -1696,30 +1687,30 @@ "roundness": { "type": 3 }, - "seed": 364382604, - "version": 570, - "versionNonce": 219143820, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "qZPM0f_S41GmhyA7dDxWx", "type": "rectangle", - "x": 1865.077814560456, - "y": 586.1185396974386, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 637, + "versionNonce": 1934368820, + "isDeleted": false, + "id": "qZPM0f_S41GmhyA7dDxWx", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1865.077814560456, + "y": 586.1185396974386, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1221600564, "groupIds": [ "DGqyxj05QDkIpqqYxg7os" ], @@ -1727,30 +1718,30 @@ "roundness": { "type": 3 }, - "seed": 1221600564, - "version": 637, - "versionNonce": 1934368820, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "Zza20wYVOD2B6V154nGxN", "type": "rectangle", - "x": 1908.083254669498, - "y": 585.8641536511777, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 678, + "versionNonce": 1328295180, + "isDeleted": false, + "id": "Zza20wYVOD2B6V154nGxN", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1908.083254669498, + "y": 585.8641536511777, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 127334412, "groupIds": [ "DGqyxj05QDkIpqqYxg7os" ], @@ -1758,30 +1749,30 @@ "roundness": { "type": 3 }, - "seed": 127334412, - "version": 678, - "versionNonce": 1328295180, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "jjKhYaOP-TCxxQu3Hm0Qq", "type": "rectangle", - "x": 1863.4627589644276, - "y": 597.2014889780229, - "width": 186.37268301802015, - "height": 21.918611660384745, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 639, + "versionNonce": 717355444, + "isDeleted": false, + "id": "jjKhYaOP-TCxxQu3Hm0Qq", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1863.4627589644276, + "y": 597.2014889780229, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 461201076, "groupIds": [ "DGqyxj05QDkIpqqYxg7os" ], @@ -1789,30 +1780,30 @@ "roundness": { "type": 3 }, - "seed": 461201076, - "version": 639, - "versionNonce": 717355444, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "wJiZIA32Zww_Oq90r5cCR", "type": "rectangle", - "x": 1855.35546875, - "y": 530.1513811263314, - "width": 199.3169590441121, - "height": 41.883775123668535, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#228be6", + "version": 947, + "versionNonce": 1438296972, + "isDeleted": false, + "id": "wJiZIA32Zww_Oq90r5cCR", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1855.35546875, + "y": 530.1513811263314, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 566264372, "groupIds": [ "m8GR8x2_mbBZp-yVdO6O7" ], @@ -1820,30 +1811,30 @@ "roundness": { "type": 3 }, - "seed": 566264372, - "version": 947, - "versionNonce": 1438296972, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308551, "link": null, "locked": false }, { - "id": "6fyQsXgWmtM3UbD86pN8t", "type": "rectangle", - "x": 1863.4035333391464, - "y": 534.2854501757989, - "width": 85.40508647070936, - "height": 9.827583722059682, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 585, + "versionNonce": 2034279220, + "isDeleted": false, + "id": "6fyQsXgWmtM3UbD86pN8t", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1863.4035333391464, + "y": 534.2854501757989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 975629068, "groupIds": [ "m8GR8x2_mbBZp-yVdO6O7" ], @@ -1851,30 +1842,30 @@ "roundness": { "type": 3 }, - "seed": 975629068, - "version": 585, - "versionNonce": 2034279220, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false }, { - "id": "N_NNtVVLigo-EBK2CQjVF", "type": "rectangle", - "x": 1864.390314560456, - "y": 535.3763521974386, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 652, + "versionNonce": 854940172, + "isDeleted": false, + "id": "N_NNtVVLigo-EBK2CQjVF", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1864.390314560456, + "y": 535.3763521974386, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 274340788, "groupIds": [ "m8GR8x2_mbBZp-yVdO6O7" ], @@ -1882,61 +1873,61 @@ "roundness": { "type": 3 }, - "seed": 274340788, - "version": 652, - "versionNonce": 854940172, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false }, { - "id": "1JFLHbeZyKtT_BmhEOQM-", "type": "rectangle", - "x": 1907.395754669498, - "y": 535.1219661511777, - "width": 38.17683799373678, - "height": 7.420973405340519, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 693, + "versionNonce": 623778996, + "isDeleted": false, + "id": "1JFLHbeZyKtT_BmhEOQM-", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [ - "m8GR8x2_mbBZp-yVdO6O7" - ], - "frameId": null, - "roundness": { + "angle": 0, + "x": 1907.395754669498, + "y": 535.1219661511777, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1320003980, + "groupIds": [ + "m8GR8x2_mbBZp-yVdO6O7" + ], + "frameId": null, + "roundness": { "type": 3 }, - "seed": 1320003980, - "version": 693, - "versionNonce": 623778996, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false }, { - "id": "nOikQ_ZiQph0fmYw3TIBT", "type": "rectangle", - "x": 1862.7752589644276, - "y": 546.4593014780229, - "width": 186.37268301802015, - "height": 21.918611660384745, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 654, + "versionNonce": 567687308, + "isDeleted": false, + "id": "nOikQ_ZiQph0fmYw3TIBT", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1862.7752589644276, + "y": 546.4593014780229, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 2072282420, "groupIds": [ "m8GR8x2_mbBZp-yVdO6O7" ], @@ -1944,37 +1935,33 @@ "roundness": { "type": 3 }, - "seed": 2072282420, - "version": 654, - "versionNonce": 567687308, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false }, { - "id": "WSzl9l-O3mSUT8GVHiwmy", "type": "text", - "x": 2427.875, - "y": 586.421875, - "width": 101.63987731933594, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 44, + "versionNonce": 942695988, + "isDeleted": false, + "id": "WSzl9l-O3mSUT8GVHiwmy", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2427.875, + "y": 586.421875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 101.63987731933594, + "height": 25, + "seed": 1483998604, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1483998604, - "version": 44, - "versionNonce": 942695988, - "isDeleted": false, "boundElements": [ { "id": "f_AjgbclMoM0aAi5SylQM", @@ -1984,39 +1971,38 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "User Alias", "fontSize": 20, "fontFamily": 1, + "text": "User Alias", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "User Alias", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "Y6guI15JPdAg1a3-4RRhY", "type": "text", - "x": 2583.40234375, - "y": 613.9609375, - "width": 103.19989013671875, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 81, + "versionNonce": 1847019276, + "isDeleted": false, + "id": "Y6guI15JPdAg1a3-4RRhY", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2583.40234375, + "y": 613.9609375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 103.19989013671875, + "height": 25, + "seed": 1717909428, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1717909428, - "version": 81, - "versionNonce": 1847019276, - "isDeleted": false, "boundElements": [ { "id": "iEMEY_hP-UrxDIGHGvUmg", @@ -2026,39 +2012,38 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "Posted At", "fontSize": 20, "fontFamily": 1, + "text": "Posted At", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Posted At", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "DHQl7PbXVWcg6W_GXGthK", "type": "text", - "x": 2543.890625, - "y": 955.46484375, - "width": 112.31988525390625, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 182, + "versionNonce": 388857780, + "isDeleted": false, + "id": "DHQl7PbXVWcg6W_GXGthK", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2543.890625, + "y": 955.46484375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 112.31988525390625, + "height": 25, + "seed": 1373270196, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1373270196, - "version": 182, - "versionNonce": 388857780, - "isDeleted": false, "boundElements": [ { "id": "c5V0m6pqAT7lYcs5aJTCE", @@ -2068,39 +2053,38 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "Text Input", "fontSize": 20, "fontFamily": 1, + "text": "Text Input", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Text Input", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "w8SIhtOMFG14l2LG29_-S", "type": "text", - "x": 2720.1484375, - "y": 954.0703125, - "width": 62.019927978515625, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 237, + "versionNonce": 1546814860, + "isDeleted": false, + "id": "w8SIhtOMFG14l2LG29_-S", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2720.1484375, + "y": 954.0703125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 62.019927978515625, + "height": 25, + "seed": 1239087412, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1239087412, - "version": 237, - "versionNonce": 1546814860, - "isDeleted": false, "boundElements": [ { "id": "wQlNWgks1sriCOYZywo4v", @@ -2110,39 +2094,38 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "Submit", "fontSize": 20, "fontFamily": 1, + "text": "Submit", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Submit", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "4jv_Obt_4YXVJZfYpp7b8", "type": "text", - "x": 2280.96484375, - "y": 853.2265625, - "width": 156.6998291015625, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 97, + "versionNonce": 441149748, + "isDeleted": false, + "id": "4jv_Obt_4YXVJZfYpp7b8", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2280.96484375, + "y": 853.2265625, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 156.6998291015625, + "height": 25, + "seed": 20629300, "groupIds": [], "frameId": null, "roundness": null, - "seed": 20629300, - "version": 97, - "versionNonce": 441149748, - "isDeleted": false, "boundElements": [ { "id": "P2aa7RB2j-dxeiaswlXId", @@ -2152,45 +2135,57 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "Actual Message", "fontSize": 20, "fontFamily": 1, + "text": "Actual Message", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Actual Message", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "P2aa7RB2j-dxeiaswlXId", "type": "arrow", - "x": 2352.39453125, - "y": 846.03515625, - "width": 40.07421875, - "height": 37.69140625, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 106, + "versionNonce": 291632140, + "isDeleted": false, + "id": "P2aa7RB2j-dxeiaswlXId", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2352.39453125, + "y": 846.03515625, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 40.07421875, + "height": 37.69140625, + "seed": 513356084, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 513356084, - "version": 106, - "versionNonce": 291632140, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false, + "startBinding": { + "elementId": "4jv_Obt_4YXVJZfYpp7b8", + "focus": 0.5199471956709676, + "gap": 7.19140625 + }, + "endBinding": { + "elementId": "R2L_CYGjP9H0W8clB1yB2", + "focus": 0.7797000892057244, + "gap": 5.98828125 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, @@ -2204,64 +2199,36 @@ -40.07421875, -37.69140625 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "4jv_Obt_4YXVJZfYpp7b8", - "focus": 0.5199471956709676, - "gap": 7.19140625 - }, - "endBinding": { - "elementId": "R2L_CYGjP9H0W8clB1yB2", - "focus": 0.7797000892057244, - "gap": 5.98828125 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + ] }, { - "id": "f_AjgbclMoM0aAi5SylQM", "type": "arrow", - "x": 2463.2109375, - "y": 616.7578125, - "width": 112.41015625, - "height": 75.05078125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#7950f2", + "version": 108, + "versionNonce": 619717300, + "isDeleted": false, + "id": "f_AjgbclMoM0aAi5SylQM", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2463.2109375, + "y": 616.7578125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 112.41015625, + "height": 75.05078125, + "seed": 346699956, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 346699956, - "version": 108, - "versionNonce": 619717300, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -62.62890625, - 19.9765625 - ], - [ - -112.41015625, - 75.05078125 - ] - ], - "lastCommittedPoint": null, "startBinding": { "elementId": "WSzl9l-O3mSUT8GVHiwmy", "focus": -0.4492197666532797, @@ -2272,37 +2239,65 @@ "focus": 0.34772960896145166, "gap": 1.59375 }, + "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -62.62890625, + 19.9765625 + ], + [ + -112.41015625, + 75.05078125 + ] + ] }, { - "id": "iEMEY_hP-UrxDIGHGvUmg", "type": "arrow", - "x": 2581.12109375, - "y": 637.30859375, - "width": 120.09171537269322, - "height": 51.09032941967871, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 189, + "versionNonce": 2074055308, + "isDeleted": false, + "id": "iEMEY_hP-UrxDIGHGvUmg", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2581.12109375, + "y": 637.30859375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 120.09171537269322, + "height": 51.09032941967871, + "seed": 882938124, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 882938124, - "version": 189, - "versionNonce": 2074055308, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false, + "startBinding": { + "elementId": "Y6guI15JPdAg1a3-4RRhY", + "focus": -0.8960036137095557, + "gap": 2.28125 + }, + "endBinding": { + "elementId": "yy3dcNpXE8shpfEsjUJCR", + "focus": -0.2140327538347811, + "gap": 6.83545183032129 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, @@ -2316,43 +2311,30 @@ -120.09171537269322, 48.41845441967871 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "Y6guI15JPdAg1a3-4RRhY", - "focus": -0.8960036137095557, - "gap": 2.28125 - }, - "endBinding": { - "elementId": "yy3dcNpXE8shpfEsjUJCR", - "focus": -0.2140327538347811, - "gap": 6.83545183032129 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + ] }, { - "id": "tWTmIdBIIs8OOUS0CRSAr", "type": "text", - "x": 1723.171875, - "y": 521.8359375, - "width": 64.25993347167969, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 29, + "versionNonce": 1036102708, + "isDeleted": false, + "id": "tWTmIdBIIs8OOUS0CRSAr", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1723.171875, + "y": 521.8359375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 64.25993347167969, + "height": 25, + "seed": 747585844, "groupIds": [], "frameId": null, "roundness": null, - "seed": 747585844, - "version": 29, - "versionNonce": 1036102708, - "isDeleted": false, "boundElements": [ { "id": "WvBvAD3-CGvDoWB5ru6-g", @@ -2362,39 +2344,38 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "Oldest", "fontSize": 20, "fontFamily": 1, + "text": "Oldest", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Oldest", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "3i50dViGyXwbLN6ClGoyo", "type": "text", - "x": 1720.55859375, - "y": 815.2890625, - "width": 69.09992980957031, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 76, + "versionNonce": 967139596, + "isDeleted": false, + "id": "3i50dViGyXwbLN6ClGoyo", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1720.55859375, + "y": 815.2890625, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 69.09992980957031, + "height": 25, + "seed": 1585120652, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1585120652, - "version": 76, - "versionNonce": 967139596, - "isDeleted": false, "boundElements": [ { "id": "WvBvAD3-CGvDoWB5ru6-g", @@ -2404,56 +2385,44 @@ "updated": 1686846308552, "link": null, "locked": false, - "text": "Newest", "fontSize": 20, "fontFamily": 1, + "text": "Newest", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Newest", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "WvBvAD3-CGvDoWB5ru6-g", "type": "arrow", - "x": 1802.97265625, - "y": 521.86328125, - "width": 0, - "height": 324.14453125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 75, + "versionNonce": 49110924, + "isDeleted": false, + "id": "WvBvAD3-CGvDoWB5ru6-g", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1802.97265625, + "y": 521.86328125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 0, + "height": 324.14453125, + "seed": 1923525132, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1923525132, - "version": 75, - "versionNonce": 49110924, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 324.14453125 - ] - ], - "lastCommittedPoint": null, "startBinding": { "elementId": "tWTmIdBIIs8OOUS0CRSAr", "focus": -1.483687017359562, @@ -2464,33 +2433,44 @@ "focus": 1.385358790584059, "gap": 13.314132690429688 }, + "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0, + 324.14453125 + ] + ] }, { - "id": "H54jBuFZQqq6m_TSCqn7c", "type": "rectangle", - "x": 2244.0546875, - "y": 1054.39453125, - "width": 532.40625, - "height": 101.55078125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#fab005", + "version": 73, + "versionNonce": 1958948660, + "isDeleted": false, + "id": "H54jBuFZQqq6m_TSCqn7c", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2244.0546875, + "y": 1054.39453125, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 532.40625, + "height": 101.55078125, + "seed": 500854412, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 500854412, - "version": 73, - "versionNonce": 1958948660, - "isDeleted": false, "boundElements": [ { "id": "c5V0m6pqAT7lYcs5aJTCE", @@ -2502,29 +2482,29 @@ "locked": false }, { - "id": "2CoOLLhZNalLow-D-1P4l", "type": "rectangle", - "x": 2782.6328125, - "y": 1053.38671875, - "width": 87.78125, - "height": 101.55078125, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 307, + "versionNonce": 263294476, + "isDeleted": false, + "id": "2CoOLLhZNalLow-D-1P4l", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2782.6328125, + "y": 1053.38671875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 87.78125, + "height": 101.55078125, + "seed": 435424140, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 435424140, - "version": 307, - "versionNonce": 263294476, - "isDeleted": false, "boundElements": [ { "id": "wQlNWgks1sriCOYZywo4v", @@ -2536,48 +2516,33 @@ "locked": false }, { - "id": "wQlNWgks1sriCOYZywo4v", "type": "arrow", - "x": 2783.49609375, - "y": 966.3616354975012, - "width": 52.44140625, - "height": 85.2828957524988, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 127, + "versionNonce": 679422132, + "isDeleted": false, + "id": "wQlNWgks1sriCOYZywo4v", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2783.49609375, + "y": 966.3616354975012, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 52.44140625, + "height": 85.2828957524988, + "seed": 892369036, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 892369036, - "version": 127, - "versionNonce": 679422132, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308552, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 52.37890625, - 7.759458252498803 - ], - [ - 52.44140625, - 85.2828957524988 - ] - ], - "lastCommittedPoint": null, "startBinding": { "elementId": "w8SIhtOMFG14l2LG29_-S", "focus": -0.2924568528065123, @@ -2588,37 +2553,65 @@ "focus": 0.21525305429763703, "gap": 1.7421875 }, + "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": "arrow" + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 52.37890625, + 7.759458252498803 + ], + [ + 52.44140625, + 85.2828957524988 + ] + ] }, { - "id": "c5V0m6pqAT7lYcs5aJTCE", "type": "arrow", - "x": 2538.49609375, - "y": 967.93359375, - "width": 62.42578125, - "height": 76.47265625, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 41, + "versionNonce": 1166012980, + "isDeleted": false, + "id": "c5V0m6pqAT7lYcs5aJTCE", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2538.49609375, + "y": 967.93359375, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 62.42578125, + "height": 76.47265625, + "seed": 2080862860, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 2080862860, - "version": 41, - "versionNonce": 1166012980, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308553, "link": null, "locked": false, + "startBinding": { + "elementId": "DHQl7PbXVWcg6W_GXGthK", + "focus": 0.6251936840168677, + "gap": 5.39453125 + }, + "endBinding": { + "elementId": "H54jBuFZQqq6m_TSCqn7c", + "focus": -0.07947551054412004, + "gap": 9.98828125 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, @@ -2632,43 +2625,30 @@ -56.265625, 76.47265625 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "DHQl7PbXVWcg6W_GXGthK", - "focus": 0.6251936840168677, - "gap": 5.39453125 - }, - "endBinding": { - "elementId": "H54jBuFZQqq6m_TSCqn7c", - "focus": -0.07947551054412004, - "gap": 9.98828125 - }, - "startArrowhead": null, - "endArrowhead": "arrow" + ] }, { - "id": "jGy3ujg4R6uH704n6c7gX", "type": "text", - "x": 2060.2602772844057, - "y": 243.95499453896983, - "width": 159.91981506347656, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 21, + "versionNonce": 1213627148, + "isDeleted": false, + "id": "jGy3ujg4R6uH704n6c7gX", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2060.2602772844057, + "y": 243.95499453896983, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 159.91981506347656, + "height": 25, + "seed": 546837004, "groupIds": [], "frameId": null, "roundness": null, - "seed": 546837004, - "version": 21, - "versionNonce": 1213627148, - "isDeleted": false, "boundElements": [ { "id": "oyOWvgLxjhZPA1-lssish", @@ -2678,45 +2658,53 @@ "updated": 1686846308553, "link": null, "locked": false, - "text": "Application Title", "fontSize": 20, "fontFamily": 1, + "text": "Application Title", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Application Title", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "oyOWvgLxjhZPA1-lssish", "type": "arrow", - "x": 2052.227136512543, - "y": 255.48932335285753, - "width": 86.22988048141497, - "height": 46.482583517614785, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 44, + "versionNonce": 1789627316, + "isDeleted": false, + "id": "oyOWvgLxjhZPA1-lssish", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2052.227136512543, + "y": 255.48932335285753, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 86.22988048141497, + "height": 46.482583517614785, + "seed": 1482930740, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1482930740, - "version": 44, - "versionNonce": 1789627316, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846308553, "link": null, "locked": false, + "startBinding": { + "elementId": "jGy3ujg4R6uH704n6c7gX", + "focus": 0.3740675093956681, + "gap": 8.03314077186269 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, @@ -2730,45 +2718,41 @@ -86.22988048141497, 46.482583517614785 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "jGy3ujg4R6uH704n6c7gX", - "focus": 0.3740675093956681, - "gap": 8.03314077186269 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + ] }, { - "id": "gRoaDC0wP-9mb4Z3zvHWP", "type": "line", - "x": -493.4398337018496, - "y": 1256.008050506959, - "width": 4455.785896564273, - "height": 0, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 140, + "versionNonce": 1950489140, + "isDeleted": false, + "id": "gRoaDC0wP-9mb4Z3zvHWP", "fillStyle": "hachure", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -493.4398337018496, + "y": 1256.008050506959, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 4455.785896564273, + "height": 0, + "seed": 935593012, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 935593012, - "version": 140, - "versionNonce": 1950489140, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846740576, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2778,41 +2762,41 @@ 4455.785896564273, 0 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "DTGuPLCNfZf76FDvREWKq", "type": "line", - "x": -483.9280825692116, - "y": 2145.4560296594536, - "width": 4461.089518040396, - "height": 0, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#099268", + "version": 204, + "versionNonce": 699216436, + "isDeleted": false, + "id": "DTGuPLCNfZf76FDvREWKq", "fillStyle": "hachure", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -483.9280825692116, + "y": 2145.4560296594536, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 4461.089518040396, + "height": 0, + "seed": 438610612, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 438610612, - "version": 204, - "versionNonce": 699216436, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846744554, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2822,661 +2806,1315 @@ 4461.089518040396, 0 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "GCA102uC2C9vRQcCBPOoA", "type": "text", - "x": 535.1404190941762, - "y": 1575.5557900114695, - "width": 352.63348388671875, - "height": 70, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 302, + "versionNonce": 1351506100, + "isDeleted": false, + "id": "GCA102uC2C9vRQcCBPOoA", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 535.1404190941762, + "y": 1575.5557900114695, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 352.63348388671875, + "height": 70, + "seed": 343741196, "groupIds": [], "frameId": null, "roundness": null, - "seed": 343741196, - "version": 302, - "versionNonce": 1351506100, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846516466, "link": null, "locked": false, - "text": "Listen for new messages\n(Subscribe to Chat Room)", "fontSize": 28, "fontFamily": 1, + "text": "Listen for new messages\n(Subscribe to Chat Room)", "textAlign": "left", "verticalAlign": "top", - "baseline": 60, "containerId": null, "originalText": "Listen for new messages\n(Subscribe to Chat Room)", "lineHeight": 1.25, - "isFrameName": false + "baseline": 60 }, { - "id": "WfqIS7S4LLHxnlJBaWwBn", "type": "text", - "x": 1271.9569395392964, - "y": 1548.1165946425533, - "width": 319.6773376464844, - "height": 70, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 421, + "versionNonce": 968096268, + "isDeleted": false, + "id": "WfqIS7S4LLHxnlJBaWwBn", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 70088500, - "version": 421, - "versionNonce": 968096268, - "isDeleted": false, - "boundElements": null, + "angle": 0, + "x": 1271.9569395392964, + "y": 1548.1165946425533, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 319.6773376464844, + "height": 70, + "seed": 70088500, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], "updated": 1686846519047, "link": null, "locked": false, - "text": "Post new messages\n(Publish to Chat Room)", "fontSize": 28, "fontFamily": 1, + "text": "Post new messages\n(Publish to Chat Room)", "textAlign": "left", "verticalAlign": "top", - "baseline": 60, "containerId": null, "originalText": "Post new messages\n(Publish to Chat Room)", "lineHeight": 1.25, - "isFrameName": false + "baseline": 60 }, { - "id": "wk_RBThpsXtzqV78XszZc", "type": "text", - "x": 2059.021829304612, - "y": 1538.7059908244635, - "width": 707.1710815429688, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 608, + "versionNonce": 2002180532, + "isDeleted": false, + "id": "wk_RBThpsXtzqV78XszZc", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2059.021829304612, + "y": 1538.7059908244635, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 707.1710815429688, + "height": 35, + "seed": 237933964, "groupIds": [], "frameId": null, "roundness": null, - "seed": 237933964, - "version": 608, - "versionNonce": 2002180532, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846679836, "link": null, "locked": false, - "text": "It might be nice to group these into one collection.", "fontSize": 28, "fontFamily": 1, + "text": "It might be nice to group these into one collection.", "textAlign": "left", "verticalAlign": "top", - "baseline": 25, "containerId": null, "originalText": "It might be nice to group these into one collection.", "lineHeight": 1.25, - "isFrameName": false + "baseline": 25 }, { - "id": "TTKeaLWtUaXzQCIbNTWv2", "type": "text", - "x": 555.7616130682386, - "y": 1660.28146181498, - "width": 539.0625, - "height": 240, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 555, + "versionNonce": 145210508, + "isDeleted": false, + "id": "TTKeaLWtUaXzQCIbNTWv2", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 555.7616130682386, + "y": 1660.28146181498, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 539.0625, + "height": 240, + "seed": 1581269684, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1581269684, - "version": 555, - "versionNonce": 145210508, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846516466, "link": null, "locked": false, - "text": "// Function Signature\nsubsrcibeTo(chatRoom) {\n // Some logic\n return {\n messages: messages[]\n }\n}\n\n// Usage inside our component\nconst { messages } = subscribeTo(\"commonRoom\")", "fontSize": 20, "fontFamily": 3, + "text": "// Function Signature\nsubsrcibeTo(chatRoom) {\n // Some logic\n return {\n messages: messages[]\n }\n}\n\n// Usage inside our component\nconst { messages } = subscribeTo(\"commonRoom\")", "textAlign": "left", "verticalAlign": "top", - "baseline": 235, "containerId": null, "originalText": "// Function Signature\nsubsrcibeTo(chatRoom) {\n // Some logic\n return {\n messages: messages[]\n }\n}\n\n// Usage inside our component\nconst { messages } = subscribeTo(\"commonRoom\")", "lineHeight": 1.2, - "isFrameName": false + "baseline": 235 }, { - "id": "ujj7zntFwlsf2_6C0_ES2", "type": "text", - "x": 1278.5952669023486, - "y": 1622.629837527304, - "width": 527.34375, - "height": 288, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 834, + "versionNonce": 1730772148, + "isDeleted": false, + "id": "ujj7zntFwlsf2_6C0_ES2", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1278.5952669023486, + "y": 1622.629837527304, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 527.34375, + "height": 288, + "seed": 1198590260, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1198590260, - "version": 834, - "versionNonce": 1730772148, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846519047, "link": null, "locked": false, - "text": "// Function Signature\npostMessageTo(chatRoom, message) {\n // Some logic\n return {\n success: boolean\n }\n}\n\n// Using in an event handler\nfunction postMessage() {\n postMessageTo(\"commonRoom\", \"hello you!\")\n}", "fontSize": 20, "fontFamily": 3, + "text": "// Function Signature\npostMessageTo(chatRoom, message) {\n // Some logic\n return {\n success: boolean\n }\n}\n\n// Using in an event handler\nfunction postMessage() {\n postMessageTo(\"commonRoom\", \"hello you!\")\n}", "textAlign": "left", "verticalAlign": "top", - "baseline": 283, "containerId": null, "originalText": "// Function Signature\npostMessageTo(chatRoom, message) {\n // Some logic\n return {\n success: boolean\n }\n}\n\n// Using in an event handler\nfunction postMessage() {\n postMessageTo(\"commonRoom\", \"hello you!\")\n}", "lineHeight": 1.2, - "isFrameName": false + "baseline": 283 }, { - "id": "jT255Sd1MsvD_VkEi6_8Q", "type": "text", - "x": 2151.851391258926, - "y": 1627.9887620491515, - "width": 621.09375, - "height": 216, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 1124, + "versionNonce": 940225676, + "isDeleted": false, + "id": "jT255Sd1MsvD_VkEi6_8Q", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2151.851391258926, + "y": 1627.9887620491515, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 621.09375, + "height": 216, + "seed": 681859980, "groupIds": [], "frameId": null, "roundness": null, - "seed": 681859980, - "version": 1124, - "versionNonce": 940225676, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846487147, "link": null, "locked": false, - "text": "function useChat(room) {\n return {\n messages: messages[],\n postMessage: (message: string) => bool\n }\n}\n\n// Inside our component\nconst {messages, postMessage} = useChat(\"commonRoom\")", "fontSize": 20, "fontFamily": 3, + "text": "function useChat(room) {\n return {\n messages: messages[],\n postMessage: (message: string) => bool\n }\n}\n\n// Inside our component\nconst {messages, postMessage} = useChat(\"commonRoom\")", "textAlign": "left", "verticalAlign": "top", - "baseline": 211, "containerId": null, "originalText": "function useChat(room) {\n return {\n messages: messages[],\n postMessage: (message: string) => bool\n }\n}\n\n// Inside our component\nconst {messages, postMessage} = useChat(\"commonRoom\")", "lineHeight": 1.2, - "isFrameName": false + "baseline": 211 }, { - "id": "ho-4q0XiZfwPqifDHRzUa", "type": "text", - "x": 2982.7299160532966, - "y": 1624.1829960975579, - "width": 199.6197509765625, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 198, + "versionNonce": 284452660, + "isDeleted": false, + "id": "ho-4q0XiZfwPqifDHRzUa", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2982.7299160532966, + "y": 1624.1829960975579, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 199.6197509765625, + "height": 25, + "seed": 1364695220, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1364695220, - "version": 198, - "versionNonce": 284452660, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846541291, "link": null, "locked": false, - "text": "What is a Message?", "fontSize": 20, "fontFamily": 1, + "text": "What is a Message?", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "What is a Message?", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "zmjnXWHYCdqWRMcBwLHJZ", "type": "text", - "x": 3315.5125837400556, - "y": 1622.4130047989654, - "width": 413.39947509765625, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 372, + "versionNonce": 610464284, + "isDeleted": false, + "id": "zmjnXWHYCdqWRMcBwLHJZ", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 3371.8629541049845, + "y": 1594.5500886714199, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 413.39947509765625, + "height": 25, + "seed": 1951389196, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1951389196, - "version": 361, - "versionNonce": 1345570100, - "isDeleted": false, - "boundElements": null, - "updated": 1686846896361, + "boundElements": [], + "updated": 1687092131082, "link": null, "locked": false, - "text": "Does a user needs to be more than this?", "fontSize": 20, "fontFamily": 1, + "text": "Does a user needs to be more than this?", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, "originalText": "Does a user needs to be more than this?", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "CsE2qnjJCE6LL30vkMpOi", "type": "text", - "x": 3569.5727491983903, - "y": 1940.9679088905348, - "width": 492.139404296875, - "height": 25, + "version": 624, + "versionNonce": 1025393180, + "isDeleted": false, + "id": "CsE2qnjJCE6LL30vkMpOi", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, "angle": 0, + "x": 3652.3997503409973, + "y": 1834.7491167249045, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", + "width": 492.139404296875, + "height": 50, + "seed": 1405439756, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687092350887, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Why are there so many ways to represent time???\nWe at least will only be using one format", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Why are there so many ways to represent time???\nWe at least will only be using one format", + "lineHeight": 1.25, + "baseline": 43 + }, + { + "type": "text", + "version": 730, + "versionNonce": 845777052, + "isDeleted": false, + "id": "izV6Ek-q3HfHf1LOBfpkP", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 4317.554444448358, + "y": 1846.4805720029776, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 294.0396728515625, + "height": 25, + "seed": 375787812, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1405439756, - "version": 551, - "versionNonce": 37296652, - "isDeleted": false, "boundElements": null, - "updated": 1686847084639, + "updated": 1687093403838, "link": null, "locked": false, - "text": "Why are there so many ways to represent time???", "fontSize": 20, "fontFamily": 1, + "text": "Collection of generic functions", "textAlign": "left", "verticalAlign": "top", - "baseline": 18, "containerId": null, - "originalText": "Why are there so many ways to represent time???", + "originalText": "Collection of generic functions", "lineHeight": 1.25, - "isFrameName": false + "baseline": 18 }, { - "id": "ba7RHQtw-BIVnC19wwGLp", - "type": "rectangle", - "x": 3014.210135514199, - "y": 1677.5658905060857, - "width": 278, - "height": 235, + "type": "text", + "version": 696, + "versionNonce": 733785636, + "isDeleted": false, + "id": "hD51kac2U9YO7qhDNXMv0", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, "angle": 0, + "x": 2937.154870291614, + "y": 1989.343883200353, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", + "width": 462.9993896484375, + "height": 50, + "seed": 1814680604, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687092242358, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "We need some way to separate messages from\neach other", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "We need some way to separate messages from\neach other", + "lineHeight": 1.25, + "baseline": 43 + }, + { + "type": "text", + "version": 732, + "versionNonce": 909433508, + "isDeleted": false, + "id": "a66Juf5rZpFh2VKdutKI2", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 3472.926063138192, + "y": 1999.755510590928, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 151.11981201171875, + "height": 25, + "seed": 1402679588, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687092248188, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Same for users", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Same for users", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 438, + "versionNonce": 1226497316, + "isDeleted": false, + "id": "ba7RHQtw-BIVnC19wwGLp", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2968.1457185643294, + "y": 1678.6351754517175, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 295, + "height": 226, + "seed": 1883274292, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "N1PBVcTIhtbUIjmtx9-Wi" + } + ], + "updated": 1687092124956, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 405, + "versionNonce": 1775609636, + "isDeleted": false, + "id": "N1PBVcTIhtbUIjmtx9-Wi", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2973.1457185643294, + "y": 1683.6351754517175, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 269.53125, + "height": 216, + "seed": 2111673612, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687092150000, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nChatMessage:\n{\n id: MessageID\n author: User\n body: string\n createdAt: DateTime\n}\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "ba7RHQtw-BIVnC19wwGLp", + "originalText": "\nChatMessage:\n{\n id: MessageID\n author: User\n body: string\n createdAt: DateTime\n}\n", + "lineHeight": 1.2, + "baseline": 211 + }, + { + "type": "rectangle", + "version": 488, + "versionNonce": 268530588, + "isDeleted": false, + "id": "mJ36ILzAlU2AL15FwGfnu", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3384.699321929879, + "y": 1627.5679665506877, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 217, + "height": 178, + "seed": 1403413300, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "AeYsbu_iqyTKO1fy3IRRn" + } + ], + "updated": 1687092277957, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 376, + "versionNonce": 1697058212, + "isDeleted": false, + "id": "AeYsbu_iqyTKO1fy3IRRn", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3389.699321929879, + "y": 1632.5679665506877, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 199.21875, + "height": 168, + "seed": 1791728140, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687092281944, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nUser:\n{\n id: UserID\n alias: string\n}\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "mJ36ILzAlU2AL15FwGfnu", + "originalText": "\nUser:\n{\n id: UserID\n alias: string\n}\n", + "lineHeight": 1.2, + "baseline": 163 + }, + { + "type": "rectangle", + "version": 743, + "versionNonce": 237977636, + "isDeleted": false, + "id": "OmUhDFSdt6wpPv0Q9A-EH", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5585.407560880047, + "y": 1443.1286626032877, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 497, + "height": 154, + "seed": 423285668, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "eIqanj_geBcZPGXvA5-u8" + } + ], + "updated": 1687093142670, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 760, + "versionNonce": 528434204, + "isDeleted": false, + "id": "eIqanj_geBcZPGXvA5-u8", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5590.407560880047, + "y": 1448.1286626032877, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 445.3125, + "height": 144, + "seed": 1263052956, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093142670, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nChatService\n isConnected: boolean\n connect: () => Request\n disconnect: () => void\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "OmUhDFSdt6wpPv0Q9A-EH", + "originalText": "\nChatService\n isConnected: boolean\n connect: () => Request\n disconnect: () => void\n", + "lineHeight": 1.2, + "baseline": 139 + }, + { + "type": "rectangle", + "version": 929, + "versionNonce": 2109469988, + "isDeleted": false, + "id": "6lkXt_-1ljzMMyiFT0-Of", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4809.210252121065, + "y": 1362.2555230417634, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 549, + "height": 178, + "seed": 1720278052, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "L5JGDjaETWqCkXy07ZDdk" + } + ], + "updated": 1687093380761, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 983, + "versionNonce": 1390549916, + "isDeleted": false, + "id": "L5JGDjaETWqCkXy07ZDdk", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4814.210252121065, + "y": 1367.2555230417634, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 515.625, + "height": 168, + "seed": 644147228, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093394026, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nRequest\n Promise<{\n success: true | Type\n error: {message: string, error: any}\n }>\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "6lkXt_-1ljzMMyiFT0-Of", + "originalText": "\nRequest\n Promise<{\n success: true | Type\n error: {message: string, error: any}\n }>\n", + "lineHeight": 1.2, + "baseline": 163 + }, + { + "type": "rectangle", + "version": 782, + "versionNonce": 236690340, + "isDeleted": false, + "id": "Rce04p4YFmPknUBm16gfM", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5589.06282144601, + "y": 1642.2217694046944, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 586, + "height": 160, + "seed": 1600352028, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Y1CL0U5wSkY0EUv-t7WJP" + } + ], + "updated": 1687093142670, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 907, + "versionNonce": 666394780, + "isDeleted": false, + "id": "Y1CL0U5wSkY0EUv-t7WJP", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5594.06282144601, + "y": 1647.2217694046944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 539.0625, + "height": 120, + "seed": 1310957732, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093142670, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nChatServer\n subscriptions: ChatRoom[]\n subscribe: (roomName) => Request\n unsubscribe: (roomName) => void", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "Rce04p4YFmPknUBm16gfM", + "originalText": "\nChatServer\n subscriptions: ChatRoom[]\n subscribe: (roomName) => Request\n unsubscribe: (roomName) => void", + "lineHeight": 1.2, + "baseline": 115 + }, + { + "type": "rectangle", + "version": 1021, + "versionNonce": 384861988, + "isDeleted": false, + "id": "t976sP9wUqXHN-L6NZff7", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5590.593706168661, + "y": 1843.0465500561068, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 708, + "height": 178, + "seed": 1104183196, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vqA5gwfLxK0bDaAUmSGrL" + } + ], + "updated": 1687093142670, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1228, + "versionNonce": 1939467548, + "isDeleted": false, + "id": "vqA5gwfLxK0bDaAUmSGrL", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5595.593706168661, + "y": 1848.0465500561068, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 656.25, + "height": 168, + "seed": 1630394404, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093142670, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nChatRoom\n roomName: string\n isConnected: boolean\n postMessage: (message: ChatMessage) => Request\n onMessage: (newMessage: ChatMessage) => void\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "t976sP9wUqXHN-L6NZff7", + "originalText": "\nChatRoom\n roomName: string\n isConnected: boolean\n postMessage: (message: ChatMessage) => Request\n onMessage: (newMessage: ChatMessage) => void\n", + "lineHeight": 1.2, + "baseline": 163 + }, + { + "type": "rectangle", + "version": 1163, + "versionNonce": 1818296092, + "isDeleted": false, + "id": "ldG_5EJlUiGTEGNPSijiz", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4336.516839419581, + "y": 1897.804475509083, + "strokeColor": "#1e1e1e", + "backgroundColor": "#d0bfff", + "width": 604, + "height": 130, + "seed": 1409034532, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "6LLqwnBMK_4eN3aFMRfpF" + } + ], + "updated": 1687093231534, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1452, + "versionNonce": 1166479524, + "isDeleted": false, + "id": "6LLqwnBMK_4eN3aFMRfpF", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4341.516839419581, + "y": 1902.804475509083, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 562.5, + "height": 120, + "seed": 403794716, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093231534, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nCodec\n encode: (message: ChatMessage) => Uint8Array\n decode: (raw: Uint8Array) => ChatMessage\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "ldG_5EJlUiGTEGNPSijiz", + "originalText": "\nCodec\n encode: (message: ChatMessage) => Uint8Array\n decode: (raw: Uint8Array) => ChatMessage\n", + "lineHeight": 1.2, + "baseline": 115 + }, + { + "type": "rectangle", + "version": 1452, + "versionNonce": 493672988, + "isDeleted": false, + "id": "8ofcVhggmdXKx3hG3NJ4F", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4335.655549223089, + "y": 2067.1745007799177, + "strokeColor": "#1e1e1e", + "backgroundColor": "#d0bfff", + "width": 604, + "height": 154, + "seed": 462736156, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "6fAjju1egMxW-1KbhCgcK" + } + ], + "updated": 1687093219328, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1875, + "versionNonce": 1610245540, + "isDeleted": false, + "id": "6fAjju1egMxW-1KbhCgcK", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4340.655549223089, + "y": 2072.1745007799177, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 386.71875, + "height": 144, + "seed": 759563428, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093219328, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nget\n newMessageID: () => MessageID\n newUserID: () => UserID\n currentTime: () => DateTime\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "8ofcVhggmdXKx3hG3NJ4F", + "originalText": "\nget\n newMessageID: () => MessageID\n newUserID: () => UserID\n currentTime: () => DateTime\n", + "lineHeight": 1.2, + "baseline": 139 + }, + { + "type": "rectangle", + "version": 796, + "versionNonce": 412903972, + "isDeleted": false, + "id": "7wWN8fDJKc3UmzfxsgDzh", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3659.038210597452, + "y": 1887.2693026410539, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 397, + "height": 82, + "seed": 494388492, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1883274292, - "version": 359, - "versionNonce": 258672396, - "isDeleted": false, "boundElements": [ { "type": "text", - "id": "N1PBVcTIhtbUIjmtx9-Wi" + "id": "2qtoSHloN4XcOoTN4u4_9" } ], - "updated": 1686847876209, + "updated": 1687092236330, "link": null, "locked": false }, { - "id": "N1PBVcTIhtbUIjmtx9-Wi", "type": "text", - "x": 3019.210135514199, - "y": 1682.5658905060857, - "width": 251.0397186279297, - "height": 225, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 700, + "versionNonce": 491895324, + "isDeleted": false, + "id": "2qtoSHloN4XcOoTN4u4_9", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 3664.038210597452, + "y": 1892.2693026410539, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 152.34375, + "height": 72, + "seed": 1788600756, "groupIds": [], "frameId": null, "roundness": null, - "seed": 2111673612, - "version": 348, - "versionNonce": 2135836084, - "isDeleted": false, - "boundElements": null, - "updated": 1686847880368, + "boundElements": [], + "updated": 1687092236330, "link": null, "locked": false, - "text": "\nChatMessage:\n{\n id: UUID\n author: User\n body: string\n createdAt: DateTime\n}\n", "fontSize": 20, - "fontFamily": 1, + "fontFamily": 3, + "text": "\nDateTime: UTC\n", "textAlign": "left", "verticalAlign": "top", - "baseline": 218, - "containerId": "ba7RHQtw-BIVnC19wwGLp", - "originalText": "\nChatMessage:\n{\n id: UUID\n author: User\n body: string\n createdAt: DateTime\n}\n", - "lineHeight": 1.25, - "isFrameName": false + "containerId": "7wWN8fDJKc3UmzfxsgDzh", + "originalText": "\nDateTime: UTC\n", + "lineHeight": 1.2, + "baseline": 67 }, { - "id": "mJ36ILzAlU2AL15FwGfnu", "type": "rectangle", - "x": 3359.930708255622, - "y": 1667.3728083542267, - "width": 191, - "height": 160, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 875, + "versionNonce": 1438048420, + "isDeleted": false, + "id": "KgM-d1_HXb358xv-mMVbH", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2956.96540704647, + "y": 2051.2510661613405, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 397, + "height": 82, + "seed": 2112809380, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1403413300, - "version": 430, - "versionNonce": 1371363340, - "isDeleted": false, "boundElements": [ { "type": "text", - "id": "AeYsbu_iqyTKO1fy3IRRn" + "id": "keVlG_dzA96jiv3REh7B8" } ], - "updated": 1686846896361, + "updated": 1687092224972, "link": null, "locked": false }, { - "id": "AeYsbu_iqyTKO1fy3IRRn", "type": "text", - "x": 3364.930708255622, - "y": 1672.3728083542267, - "width": 156.51979064941406, - "height": 150, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 807, + "versionNonce": 773843868, + "isDeleted": false, + "id": "keVlG_dzA96jiv3REh7B8", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2961.96540704647, + "y": 2056.2510661613405, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 222.65625, + "height": 72, + "seed": 1275654812, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1791728140, - "version": 348, - "versionNonce": 896335540, - "isDeleted": false, "boundElements": null, - "updated": 1686846896361, + "updated": 1687092224972, "link": null, "locked": false, - "text": "\nUser:\n{\n alias: string\n}\n", "fontSize": 20, - "fontFamily": 1, + "fontFamily": 3, + "text": "\nMessageID: ?string?\n", "textAlign": "left", "verticalAlign": "top", - "baseline": 143, - "containerId": "mJ36ILzAlU2AL15FwGfnu", - "originalText": "\nUser:\n{\n alias: string\n}\n", - "lineHeight": 1.25, - "isFrameName": false + "containerId": "KgM-d1_HXb358xv-mMVbH", + "originalText": "\nMessageID: ?string?\n", + "lineHeight": 1.2, + "baseline": 67 }, { - "id": "7wWN8fDJKc3UmzfxsgDzh", "type": "rectangle", - "x": 3610.944044790608, - "y": 1983.1453651998215, - "width": 328, - "height": 110, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 927, + "versionNonce": 225129252, + "isDeleted": false, + "id": "pRh6HJweJc9IOFndZu_Id", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 3458.69454155756, + "y": 2038.9806049264348, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 397, + "height": 82, + "seed": 734454556, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 494388492, - "version": 700, - "versionNonce": 351791756, - "isDeleted": false, "boundElements": [ { "type": "text", - "id": "2qtoSHloN4XcOoTN4u4_9" + "id": "IMUMCeRA45KpyvZ1XOU_a" } ], - "updated": 1686847080525, + "updated": 1687092255942, "link": null, "locked": false }, { - "id": "2qtoSHloN4XcOoTN4u4_9", "type": "text", - "x": 3615.944044790608, - "y": 1988.1453651998215, - "width": 300.27960205078125, - "height": 100, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 879, + "versionNonce": 497938852, + "isDeleted": false, + "id": "IMUMCeRA45KpyvZ1XOU_a", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 3463.69454155756, + "y": 2043.9806049264348, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 187.5, + "height": 48, + "seed": 48327844, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1788600756, - "version": 664, - "versionNonce": 1611268660, - "isDeleted": false, "boundElements": null, - "updated": 1686847079424, + "updated": 1687092267132, "link": null, "locked": false, - "text": "\nDateTime: UTC\n(it's a special type of number)\n", "fontSize": 20, - "fontFamily": 1, + "fontFamily": 3, + "text": "\nUserID: ?string?", "textAlign": "left", "verticalAlign": "top", - "baseline": 93, - "containerId": "7wWN8fDJKc3UmzfxsgDzh", - "originalText": "\nDateTime: UTC\n(it's a special type of number)\n", - "lineHeight": 1.25, - "isFrameName": false + "containerId": "pRh6HJweJc9IOFndZu_Id", + "originalText": "\nUserID: ?string?", + "lineHeight": 1.2, + "baseline": 43 }, { - "id": "hFf_3Sq2mYrENCDoQ7WP-", "type": "text", - "x": 2965.4494034656186, - "y": 1364.6540320543227, - "width": 777.9833984375, - "height": 70, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 223, + "versionNonce": 1580044428, + "isDeleted": false, + "id": "hFf_3Sq2mYrENCDoQ7WP-", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2965.4494034656186, + "y": 1364.6540320543227, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 777.9833984375, + "height": 70, + "seed": 1417191308, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1417191308, - "version": 223, - "versionNonce": 1580044428, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846709473, "link": null, "locked": false, - "text": "It would be nice to be able to talk about these object\nour application needs to use.", "fontSize": 28, "fontFamily": 1, + "text": "It would be nice to be able to talk about these object\nour application needs to use.", "textAlign": "left", "verticalAlign": "top", - "baseline": 60, "containerId": null, "originalText": "It would be nice to be able to talk about these object\nour application needs to use.", "lineHeight": 1.25, - "isFrameName": false + "baseline": 60 }, { - "id": "mhHG5MwRtw_iuinqBV6P0", "type": "text", - "x": 2939.4607345333284, - "y": 1295.8091614703883, - "width": 116.71202087402344, - "height": 45, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 22, + "versionNonce": 373710476, + "isDeleted": false, + "id": "mhHG5MwRtw_iuinqBV6P0", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2939.4607345333284, + "y": 1295.8091614703883, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.71202087402344, + "height": 45, + "seed": 1398722100, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1398722100, - "version": 22, - "versionNonce": 373710476, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846422780, "link": null, "locked": false, - "text": "Models", "fontSize": 36, "fontFamily": 1, + "text": "Models", "textAlign": "left", "verticalAlign": "top", - "baseline": 32, "containerId": null, "originalText": "Models", "lineHeight": 1.25, - "isFrameName": false + "baseline": 32 }, { - "id": "8Gp5aHcZ_8tO7Z7gwO1hh", "type": "line", - "x": 2907.4045552809184, - "y": 1252.255069392569, - "width": 0, - "height": 892.2711354497783, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 70, + "versionNonce": 1811196428, + "isDeleted": false, + "id": "8Gp5aHcZ_8tO7Z7gwO1hh", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 2907.4045552809184, + "y": 1252.255069392569, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 892.2711354497783, + "seed": 515743796, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 515743796, - "version": 70, - "versionNonce": 1811196428, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846432986, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -3486,12 +4124,7 @@ 0, 892.2711354497783 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { "type": "text", @@ -3530,33 +4163,38 @@ "baseline": 32 }, { - "id": "tynbWLoCyGl82AhV3_CYR", "type": "line", - "x": 398.6625680604463, - "y": 1255.689049866757, - "width": 0, - "height": 890.699363292438, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 71, + "versionNonce": 1709779084, + "isDeleted": false, + "id": "tynbWLoCyGl82AhV3_CYR", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 398.6625680604463, + "y": 1255.689049866757, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 890.699363292438, + "seed": 212618508, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 212618508, - "version": 71, - "versionNonce": 1709779084, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1686846467258, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -3566,12 +4204,7 @@ 0, 890.699363292438 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { "type": "text", @@ -3608,6 +4241,78 @@ "originalText": "What are the things that our application needs to do?", "lineHeight": 1.25, "baseline": 25 + }, + { + "type": "text", + "version": 930, + "versionNonce": 718123932, + "isDeleted": false, + "id": "vEnGfo2zNNH4OKdrrRKYE", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4808.117225294964, + "y": 1172.81056675277, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 603.3193359375, + "height": 175, + "seed": 383854236, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687093344819, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Interacting with the server might fail critically or\nresult in some other errors, we are packaging everything\nthat can fail in some way into this object. And returning the\nrequested type inside the success field.\n\nSince these are interaction with an external server\nall of these are Promises", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Interacting with the server might fail critically or\nresult in some other errors, we are packaging everything\nthat can fail in some way into this object. And returning the\nrequested type inside the success field.\n\nSince these are interaction with an external server\nall of these are Promises", + "lineHeight": 1.25, + "baseline": 168 + }, + { + "type": "text", + "version": 1129, + "versionNonce": 1023974812, + "isDeleted": false, + "id": "nOlSRvwqHz6kyQK1lMpmW", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 5600.700032089623, + "y": 1328.4626834779729, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 563.639404296875, + "height": 100, + "seed": 1419110812, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687093264823, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "The collection of interaction we have with the\nbackend messaging service. Also include\nsome internal state. This is the API we want to expose\nto our end users", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "The collection of interaction we have with the\nbackend messaging service. Also include\nsome internal state. This is the API we want to expose\nto our end users", + "lineHeight": 1.25, + "baseline": 93 } ], "appState": { From 3a11cf6f32d649b0488ec9af9fccf8c298d2a2e0 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:39:14 +0000 Subject: [PATCH 06/74] setup default palette --- client/ts-variant/src/styles/palettes.css | 333 ++++++++++++++++++++++ 1 file changed, 333 insertions(+) create mode 100644 client/ts-variant/src/styles/palettes.css diff --git a/client/ts-variant/src/styles/palettes.css b/client/ts-variant/src/styles/palettes.css new file mode 100644 index 0000000..2e44019 --- /dev/null +++ b/client/ts-variant/src/styles/palettes.css @@ -0,0 +1,333 @@ +/* The default palette */ +:root { + /* primary */ + --color-primary-50: var(--color-emerald-50); + --color-primary-100: var(--color-emerald-100); + --color-primary-200: var(--color-emerald-200); + --color-primary-300: var(--color-emerald-300); + --color-primary-400: var(--color-emerald-400); + --color-primary-500: var(--color-emerald-500); + --color-primary-600: var(--color-emerald-600); + --color-primary-700: var(--color-emerald-700); + --color-primary-800: var(--color-emerald-800); + --color-primary-900: var(--color-emerald-900); + --color-primary-950: var(--color-emerald-950); + + /* secondary */ + --color-secondary-50: var(--color-teal-50); + --color-secondary-100: var(--color-teal-100); + --color-secondary-200: var(--color-teal-200); + --color-secondary-300: var(--color-teal-300); + --color-secondary-400: var(--color-teal-400); + --color-secondary-500: var(--color-teal-500); + --color-secondary-600: var(--color-teal-600); + --color-secondary-700: var(--color-teal-700); + --color-secondary-800: var(--color-teal-800); + --color-secondary-900: var(--color-teal-900); + --color-secondary-950: var(--color-teal-950); + + /* accent */ + --color-accent-50: var(--color-rose-50); + --color-accent-100: var(--color-rose-100); + --color-accent-200: var(--color-rose-200); + --color-accent-300: var(--color-rose-300); + --color-accent-400: var(--color-rose-400); + --color-accent-500: var(--color-rose-500); + --color-accent-600: var(--color-rose-600); + --color-accent-700: var(--color-rose-700); + --color-accent-800: var(--color-rose-800); + --color-accent-900: var(--color-rose-900); + --color-accent-950: var(--color-rose-950); +} + + +/* All the colors */ +:root { + /* Pallets borrowed from + * https://tailwindcss.com/docs/customizing-colors + */ + /* Slate */ + --color-slate-50: #f8fafc; + --color-slate-100: #f1f5f9; + --color-slate-200: #e2e8f0; + --color-slate-300: #cbd5e1; + --color-slate-400: #94a3b8; + --color-slate-500: #64748b; + --color-slate-600: #475569; + --color-slate-700: #334155; + --color-slate-800: #1e293b; + --color-slate-900: #0f172a; + --color-slate-950: #020617; + /* Gray */ + --color-gray-50: #f9fafb; + --color-gray-100: #f3f4f6; + --color-gray-200: #e5e7eb; + --color-gray-300: #d1d5db; + --color-gray-400: #9ca3af; + --color-gray-500: #6b7280; + --color-gray-600: #4b5563; + --color-gray-700: #374151; + --color-gray-800: #1f2937; + --color-gray-900: #111827; + --color-gray-950: #030712; + + /* Zinc */ + --color-zinc-50: #fafafa; + --color-zinc-100: #f4f4f5; + --color-zinc-200: #e4e4e7; + --color-zinc-300: #d4d4d8; + --color-zinc-400: #a1a1aa; + --color-zinc-500: #71717a; + --color-zinc-600: #52525b; + --color-zinc-700: #3f3f46; + --color-zinc-800: #27272a; + --color-zinc-900: #18181b; + --color-zinc-950: #09090b; + + /* Neutral */ + --color-neutral-50: #fafafa; + --color-neutral-100: #f5f5f5; + --color-neutral-200: #e5e5e5; + --color-neutral-300: #d4d4d4; + --color-neutral-400: #a3a3a3; + --color-neutral-500: #737373; + --color-neutral-600: #525252; + --color-neutral-700: #404040; + --color-neutral-800: #262626; + --color-neutral-900: #171717; + --color-neutral-950: #0a0a0a; + + /* Stone */ + --color-stone-50: #fafaf9; + --color-stone-100: #f5f5f4; + --color-stone-200: #e7e5e4; + --color-stone-300: #d6d3d1; + --color-stone-400: #a8a29e; + --color-stone-500: #78716c; + --color-stone-600: #57534e; + --color-stone-700: #44403c; + --color-stone-800: #292524; + --color-stone-900: #1c1917; + --color-stone-950: #0c0a09; + + /* Red */ + --color-red-50: #fef2f2; + --color-red-100: #fee2e2; + --color-red-200: #fecaca; + --color-red-300: #fca5a5; + --color-red-400: #f87171; + --color-red-500: #ef4444; + --color-red-600: #dc2626; + --color-red-700: #b91c1c; + --color-red-800: #991b1b; + --color-red-900: #7f1d1d; + --color-red-950: #450a0a; + + /* Orange */ + --color-orange-50: #fff7ed; + --color-orange-100: #ffedd5; + --color-orange-200: #fed7aa; + --color-orange-300: #fdba74; + --color-orange-400: #fb923c; + --color-orange-500: #f97316; + --color-orange-600: #ea580c; + --color-orange-700: #c2410c; + --color-orange-800: #9a3412; + --color-orange-900: #7c2d12; + --color-orange-950: #431407; + + /* Amber */ + --color-amber-50: #fffbeb; + --color-amber-100: #fef3c7; + --color-amber-200: #fde68a; + --color-amber-300: #fcd34d; + --color-amber-400: #fbbf24; + --color-amber-500: #f59e0b; + --color-amber-600: #d97706; + --color-amber-700: #b45309; + --color-amber-800: #92400e; + --color-amber-900: #78350f; + --color-amber-950: #451a03; + + /* Yellow */ + --color-yellow-50: #fefce8; + --color-yellow-100: #fef9c3; + --color-yellow-200: #fef08a; + --color-yellow-300: #fde047; + --color-yellow-400: #facc15; + --color-yellow-500: #eab308; + --color-yellow-600: #ca8a04; + --color-yellow-700: #a16207; + --color-yellow-800: #854d0e; + --color-yellow-900: #713f12; + --color-yellow-950: #422006; + + /* Lime */ + --color-lime-50: #f7fee7; + --color-lime-100: #ecfccb; + --color-lime-200: #d9f99d; + --color-lime-300: #bef264; + --color-lime-400: #a3e635; + --color-lime-500: #84cc16; + --color-lime-600: #65a30d; + --color-lime-700: #4d7c0f; + --color-lime-800: #3f6212; + --color-lime-900: #365314; + --color-lime-950: #1a2e05; + + /* Green */ + --color-green-50: #f0fdf4; + --color-green-100: #dcfce7; + --color-green-200: #bbf7d0; + --color-green-300: #86efac; + --color-green-400: #4ade80; + --color-green-500: #22c55e; + --color-green-600: #16a34a; + --color-green-700: #15803d; + --color-green-800: #166534; + --color-green-900: #14532d; + --color-green-950: #052e16; + + /* Emerald */ + --color-emerald-50: #ecfdf5; + --color-emerald-100: #d1fae5; + --color-emerald-200: #a7f3d0; + --color-emerald-300: #6ee7b7; + --color-emerald-400: #34d399; + --color-emerald-500: #10b981; + --color-emerald-600: #059669; + --color-emerald-700: #047857; + --color-emerald-800: #065f46; + --color-emerald-900: #064e3b; + --color-emerald-950: #022c22; + + /* Teal */ + --color-teal-50: #f0fdfa; + --color-teal-100: #ccfbf1; + --color-teal-200: #99f6e4; + --color-teal-300: #5eead4; + --color-teal-400: #2dd4bf; + --color-teal-500: #14b8a6; + --color-teal-600: #0d9488; + --color-teal-700: #0f766e; + --color-teal-800: #115e59; + --color-teal-900: #134e4a; + --color-teal-950: #042f2e; + + /* Cyan */ + --color-cyan-50: #ecfeff; + --color-cyan-100: #cffafe; + --color-cyan-200: #a5f3fc; + --color-cyan-300: #67e8f9; + --color-cyan-400: #22d3ee; + --color-cyan-500: #06b6d4; + --color-cyan-600: #0891b2; + --color-cyan-700: #0e7490; + --color-cyan-800: #155e75; + --color-cyan-900: #164e63; + --color-cyan-950: #083344; + + /* Sky */ + --color-sky-50: #f0f9ff; + --color-sky-100: #e0f2fe; + --color-sky-200: #bae6fd; + --color-sky-300: #7dd3fc; + --color-sky-400: #38bdf8; + --color-sky-500: #0ea5e9; + --color-sky-600: #0284c7; + --color-sky-700: #0369a1; + --color-sky-800: #075985; + --color-sky-900: #0c4a6e; + --color-sky-950: #082f49; + + /* Blue */ + --color-blue-50: #eff6ff; + --color-blue-100: #dbeafe; + --color-blue-200: #bfdbfe; + --color-blue-300: #93c5fd; + --color-blue-400: #60a5fa; + --color-blue-500: #3b82f6; + --color-blue-600: #2563eb; + --color-blue-700: #1d4ed8; + --color-blue-800: #1e40af; + --color-blue-900: #1e3a8a; + --color-blue-950: #172554; + + /* Indigo */ + --color-indigo-50: #eef2ff; + --color-indigo-100: #e0e7ff; + --color-indigo-200: #c7d2fe; + --color-indigo-300: #a5b4fc; + --color-indigo-400: #818cf8; + --color-indigo-500: #6366f1; + --color-indigo-600: #4f46e5; + --color-indigo-700: #4338ca; + --color-indigo-800: #3730a3; + --color-indigo-900: #312e81; + --color-indigo-950: #1e1b4b; + + /* Violet */ + --color-violet-50: #f5f3ff; + --color-violet-100: #ede9fe; + --color-violet-200: #ddd6fe; + --color-violet-300: #c4b5fd; + --color-violet-400: #a78bfa; + --color-violet-500: #8b5cf6; + --color-violet-600: #7c3aed; + --color-violet-700: #6d28d9; + --color-violet-800: #5b21b6; + --color-violet-900: #4c1d95; + --color-violet-950: #2e1065; + + /* Purple */ + --color-purple-50: #faf5ff; + --color-purple-100: #f3e8ff; + --color-purple-200: #e9d5ff; + --color-purple-300: #d8b4fe; + --color-purple-400: #c084fc; + --color-purple-500: #a855f7; + --color-purple-600: #9333ea; + --color-purple-700: #7e22ce; + --color-purple-800: #6b21a8; + --color-purple-900: #581c87; + --color-purple-950: #3b0764; + + /* Fuchsia */ + --color-fuchsia-50: #fdf4ff; + --color-fuchsia-100: #fae8ff; + --color-fuchsia-200: #f5d0fe; + --color-fuchsia-300: #f0abfc; + --color-fuchsia-400: #e879f9; + --color-fuchsia-500: #d946ef; + --color-fuchsia-600: #c026d3; + --color-fuchsia-700: #a21caf; + --color-fuchsia-800: #86198f; + --color-fuchsia-900: #701a75; + --color-fuchsia-950: #4a044e; + + /* Pink */ + --color-pink-50: #fdf2f8; + --color-pink-100: #fce7f3; + --color-pink-200: #fbcfe8; + --color-pink-300: #f9a8d4; + --color-pink-400: #f472b6; + --color-pink-500: #ec4899; + --color-pink-600: #db2777; + --color-pink-700: #be185d; + --color-pink-800: #9d174d; + --color-pink-900: #831843; + --color-pink-950: #500724; + + /* Rose */ + --color-rose-50: #fff1f2; + --color-rose-100: #ffe4e6; + --color-rose-200: #fecdd3; + --color-rose-300: #fda4af; + --color-rose-400: #fb7185; + --color-rose-500: #f43f5e; + --color-rose-600: #e11d48; + --color-rose-700: #be123c; + --color-rose-800: #9f1239; + --color-rose-900: #881337; + --color-rose-950: #4c0519; +} \ No newline at end of file From 1e14095fe02342719f7d2abc197197fc63453f06 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:39:26 +0000 Subject: [PATCH 07/74] update title --- client/ts-variant/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ts-variant/index.html b/client/ts-variant/index.html index e0d1c84..93ad7a2 100644 --- a/client/ts-variant/index.html +++ b/client/ts-variant/index.html @@ -4,7 +4,7 @@ - Vite + React + TS + R-Mess
From 6857eba51f6909026244cc0bb88f5fb511dc54d5 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:40:33 +0000 Subject: [PATCH 08/74] set font type --- client/ts-variant/index.html | 5 +++++ client/ts-variant/src/styles/typography.css | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 client/ts-variant/src/styles/typography.css diff --git a/client/ts-variant/index.html b/client/ts-variant/index.html index 93ad7a2..1b2a3fd 100644 --- a/client/ts-variant/index.html +++ b/client/ts-variant/index.html @@ -4,6 +4,11 @@ + + + + + R-Mess diff --git a/client/ts-variant/src/styles/typography.css b/client/ts-variant/src/styles/typography.css new file mode 100644 index 0000000..f9818ae --- /dev/null +++ b/client/ts-variant/src/styles/typography.css @@ -0,0 +1,3 @@ +:root { + font-family: 'Oswald', sans-serif; +} \ No newline at end of file From e29db34b1526c8b8e5994a3bea6cb81f81a4b972 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:40:58 +0000 Subject: [PATCH 09/74] cleaned out demo app --- .../public/{vite.svg => favicon.svg} | 0 client/ts-variant/src/App.css | 42 ----------- client/ts-variant/src/App.tsx | 37 ++-------- client/ts-variant/src/assets/react.svg | 1 - client/ts-variant/src/index.css | 69 ------------------- 5 files changed, 6 insertions(+), 143 deletions(-) rename client/ts-variant/public/{vite.svg => favicon.svg} (100%) delete mode 100644 client/ts-variant/src/assets/react.svg diff --git a/client/ts-variant/public/vite.svg b/client/ts-variant/public/favicon.svg similarity index 100% rename from client/ts-variant/public/vite.svg rename to client/ts-variant/public/favicon.svg diff --git a/client/ts-variant/src/App.css b/client/ts-variant/src/App.css index b9d355d..e69de29 100644 --- a/client/ts-variant/src/App.css +++ b/client/ts-variant/src/App.css @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index afe48ac..882f4c6 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -1,35 +1,10 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' import './App.css' -function App() { - const [count, setCount] = useState(0) - +export default function App() { return ( - <> - -

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- +
+

Welcome to R-Mess

+

The TypeScript Variant

+
) -} - -export default App +} \ No newline at end of file diff --git a/client/ts-variant/src/assets/react.svg b/client/ts-variant/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/client/ts-variant/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/ts-variant/src/index.css b/client/ts-variant/src/index.css index 2c3fac6..e69de29 100644 --- a/client/ts-variant/src/index.css +++ b/client/ts-variant/src/index.css @@ -1,69 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} From 4cbd9bf2fdba73b53714acb0e769f2a4c2d70935 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 13:46:36 +0000 Subject: [PATCH 10/74] setup custom favicon --- client/ts-variant/public/favicon.svg | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/client/ts-variant/public/favicon.svg b/client/ts-variant/public/favicon.svg index e7b8dfb..14e7338 100644 --- a/client/ts-variant/public/favicon.svg +++ b/client/ts-variant/public/favicon.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + \ No newline at end of file From 1a3da8ec04a8148aade6bc03f52fc22ff0febb52 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:16:10 +0000 Subject: [PATCH 11/74] add ui-ux design file --- docs/ui-ux-design.excalidraw | 7012 ++++++++++++++++++++++++++++++++++ 1 file changed, 7012 insertions(+) create mode 100644 docs/ui-ux-design.excalidraw diff --git a/docs/ui-ux-design.excalidraw b/docs/ui-ux-design.excalidraw new file mode 100644 index 0000000..f6fbbf6 --- /dev/null +++ b/docs/ui-ux-design.excalidraw @@ -0,0 +1,7012 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 149, + "versionNonce": 1623720100, + "isDeleted": false, + "id": "VcOppXoChf5Z5Kw8ObUnB", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1210.3435609844016, + "y": -387.6459867814589, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 326.1064877828345, + "height": 576.5049453205854, + "seed": 839773596, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 316, + "versionNonce": 1882246044, + "isDeleted": false, + "id": "oGrQuFiF52g-xffeT6_eH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1784.033887039225, + "y": -343.7212740917056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 364239388, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 162, + "versionNonce": 13126692, + "isDeleted": false, + "id": "q02w7t2ZmZGKXBaA7aiXH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 685.682324539225, + "y": -412.3853365917056, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 111949468, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 102, + "versionNonce": 130873372, + "isDeleted": false, + "id": "H_Cqev3WuswbDK0tosq1B", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 693.463574539225, + "y": -406.8970553417056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 50.3203125, + "seed": 832766748, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 156, + "versionNonce": 607098012, + "isDeleted": false, + "id": "rJ1k_IvWfT81XdsJDoNVr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1245.580762039225, + "y": -519.8931490917056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1561083804, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "kbZI-PkBvgdQ-8pSPD8--" + } + ], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 63, + "versionNonce": 666276644, + "isDeleted": false, + "id": "kbZI-PkBvgdQ-8pSPD8--", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1308.5357714996742, + "y": -512.2329928417056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 130.81654357910156, + "height": 35, + "seed": 823782428, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Menu Bar", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rJ1k_IvWfT81XdsJDoNVr", + "originalText": "Menu Bar", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 193, + "versionNonce": 1124770076, + "isDeleted": false, + "id": "b35NoOrRQbzS6KdJ40BJr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1781.5143187927756, + "y": -566.2008297750541, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 50.3203125, + "seed": 2143160476, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "cIVuOqiF42lTqfkP4RdJG" + } + ], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 114, + "versionNonce": 1094749860, + "isDeleted": false, + "id": "cIVuOqiF42lTqfkP4RdJG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1859.7993911194358, + "y": -558.5406735250541, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 100.15641784667969, + "height": 35, + "seed": 212505884, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "R Mess", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "b35NoOrRQbzS6KdJ40BJr", + "originalText": "R Mess", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 195, + "versionNonce": 1540365724, + "isDeleted": false, + "id": "kN2PZ1znbocP6bwcNG9-k", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 697.053418289225, + "y": 12.958413408294518, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1431409052, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 243, + "versionNonce": 665979420, + "isDeleted": false, + "id": "9ipHOqA4pk9D30E_FJyNq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1249.170605789225, + "y": 109.06388215829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 256.7265625, + "height": 45, + "seed": 1491402268, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "dU8q2Q1Dnq_sos8w2szRv" + } + ], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 73, + "versionNonce": 1809855908, + "isDeleted": false, + "id": "dU8q2Q1Dnq_sos8w2szRv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1300.4215594635414, + "y": 114.06388215829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 154.2246551513672, + "height": 35, + "seed": 1616304796, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Chat Input", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "9ipHOqA4pk9D30E_FJyNq", + "originalText": "Chat Input", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 361, + "versionNonce": 1772250780, + "isDeleted": false, + "id": "_6wFbuxoKSmsP9AfrfGJ_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1797.033887039225, + "y": 262.0365384082945, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 256.7265625, + "height": 50.3203125, + "seed": 1180247836, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 496, + "versionNonce": 1158799652, + "isDeleted": false, + "id": "fx86HQyWHxdm9ERr0Ma_b", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2179.951855789225, + "y": 177.00528840829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 661.8451436597576, + "height": 129.72656249999997, + "seed": 1063117724, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 611, + "versionNonce": 911422236, + "isDeleted": false, + "id": "ZZu_8lFTi7K5h1cau7Bqm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2180.647168289225, + "y": -181.76814909170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 658.0357090441122, + "height": 138.27734375000006, + "seed": 563548188, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 216, + "versionNonce": 1912741028, + "isDeleted": false, + "id": "RoGP4cCqMWy3DcXIys5H7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 693.256543289225, + "y": -357.9126803417056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 754363548, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 241, + "versionNonce": 1010200476, + "isDeleted": false, + "id": "t8IwvN3ou2d2HcU2hHax7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1245.373730789225, + "y": -353.7212740917056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 1395570972, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "2CRLvFU1TSEgsCZLRKq9B" + } + ], + "updated": 1687097696043, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 86, + "versionNonce": 475981860, + "isDeleted": false, + "id": "2CRLvFU1TSEgsCZLRKq9B", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1277.822606216471, + "y": -188.56893034170565, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 191.8288116455078, + "height": 35, + "seed": 2142320028, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Message Feed", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "t8IwvN3ou2d2HcU2hHax7", + "originalText": "Message Feed", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 86, + "versionNonce": 192814108, + "isDeleted": false, + "id": "avhpBSOhjaPygnUGaxusF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2178.580762039225, + "y": -236.73689909170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 115.19247436523438, + "height": 35, + "seed": 1605378588, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Message", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Message", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 159, + "versionNonce": 135676836, + "isDeleted": false, + "id": "azbI2YGGUHbbd3-pjdDZ6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2191.842480789225, + "y": 131.22403840829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 154.2246551513672, + "height": 35, + "seed": 706576028, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696043, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Chat Input", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Chat Input", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 128, + "versionNonce": 1578907804, + "isDeleted": false, + "id": "LWq0ipNBPAj992ejIFv6l", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1821.885449539225, + "y": -391.4595553417056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 191.8288116455078, + "height": 35, + "seed": 1739279132, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Message Feed", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Message Feed", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "rectangle", + "version": 250, + "versionNonce": 1263939364, + "isDeleted": false, + "id": "s3pqfH7F5tVq3yCG018qx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2207.217480789225, + "y": -168.11971159170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 281.9609375, + "height": 32.4453125, + "seed": 986417052, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 317, + "versionNonce": 1606599964, + "isDeleted": false, + "id": "4OZSxxyCoV4xFw4H8-AIR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2210.475293289225, + "y": -164.51814909170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 126.03906249999999, + "height": 24.50000000000001, + "seed": 665859100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "BEY-UkaUbF9I5QULzC2v0", + "type": "arrow" + } + ], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 359, + "versionNonce": 109882020, + "isDeleted": false, + "id": "hu8zP0_MTagNFCUizlELu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2352.455762039225, + "y": -165.35799284170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 126.03906249999999, + "height": 24.50000000000001, + "seed": 1548439708, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "b5JtAbQtpquM983nzAkOM", + "type": "arrow" + } + ], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 319, + "versionNonce": 1977860508, + "isDeleted": false, + "id": "AbCINP8HwCt8n9mId6h5H", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2205.143262039225, + "y": -127.92830534170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 615.3007812500001, + "height": 72.36328125000003, + "seed": 2018434332, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "8WCO-_RWO0HYNMQRVfrec", + "type": "arrow" + } + ], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 885, + "versionNonce": 476558884, + "isDeleted": false, + "id": "RmTPe-geqpE_cUZr3U1RK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1818.643262039225, + "y": -52.437080465374095, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1429002652, + "groupIds": [ + "KV9QHGF-P97M6voITH7Ce" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "b5JtAbQtpquM983nzAkOM", + "type": "arrow" + } + ], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 523, + "versionNonce": 129052188, + "isDeleted": false, + "id": "TOzk03JdMkmafkofmDmPm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.6913266283714, + "y": -48.303011415906724, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1310148124, + "groupIds": [ + "KV9QHGF-P97M6voITH7Ce" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 590, + "versionNonce": 1775587748, + "isDeleted": false, + "id": "deinp_HdltcZnwrx-pHbm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1827.678107849681, + "y": -47.212109394266975, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 134226588, + "groupIds": [ + "KV9QHGF-P97M6voITH7Ce" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 631, + "versionNonce": 1176308380, + "isDeleted": false, + "id": "SMb6Hq39V2e9Iv8cv0Bix", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1870.683547958723, + "y": -47.46649544052781, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 966356764, + "groupIds": [ + "KV9QHGF-P97M6voITH7Ce" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 592, + "versionNonce": 2114157860, + "isDeleted": false, + "id": "WY_Wm-KoRol9ftrikJmrV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.0630522536526, + "y": -36.12916011368276, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1934961564, + "groupIds": [ + "KV9QHGF-P97M6voITH7Ce" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 910, + "versionNonce": 1943623452, + "isDeleted": false, + "id": "aWosOt4jYtE2t_q02dXwk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1818.768262039225, + "y": -100.6167679653741, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1734694940, + "groupIds": [ + "x9DqfLxu3EwyowOpKXNiP" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 548, + "versionNonce": 1382037668, + "isDeleted": false, + "id": "PGDWlupHx5annJRtYXHEN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.8163266283714, + "y": -96.48269891590672, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 834401436, + "groupIds": [ + "x9DqfLxu3EwyowOpKXNiP" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 615, + "versionNonce": 760746908, + "isDeleted": false, + "id": "bCUcAttcyUdQMD6HRWZBv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1827.803107849681, + "y": -95.39179689426697, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 537592092, + "groupIds": [ + "x9DqfLxu3EwyowOpKXNiP" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 656, + "versionNonce": 43615268, + "isDeleted": false, + "id": "FSwvpYwgcgRR2DS_rT2Xc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1870.808547958723, + "y": -95.64618294052781, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 2042920348, + "groupIds": [ + "x9DqfLxu3EwyowOpKXNiP" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 617, + "versionNonce": 818626588, + "isDeleted": false, + "id": "PA4C2lHbJNVMm73GzEobi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.1880522536526, + "y": -84.30884761368276, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1209690652, + "groupIds": [ + "x9DqfLxu3EwyowOpKXNiP" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 937, + "versionNonce": 77422500, + "isDeleted": false, + "id": "kgI-i4hFqJtbHQY8C_euO", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1817.666699539225, + "y": -164.9019242153741, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 503236252, + "groupIds": [ + "sQWjImb0QEQfu7UdTveWc" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 575, + "versionNonce": 639949980, + "isDeleted": false, + "id": "dzONNVUVgnASw-_46tWyu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1825.7147641283714, + "y": -160.76785516590672, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1612944156, + "groupIds": [ + "sQWjImb0QEQfu7UdTveWc" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696044, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 642, + "versionNonce": 1620691748, + "isDeleted": false, + "id": "VOXY1qVmXFXtqwNVGA-Qr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.701545349681, + "y": -159.67695314426697, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 217763740, + "groupIds": [ + "sQWjImb0QEQfu7UdTveWc" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 683, + "versionNonce": 1729554716, + "isDeleted": false, + "id": "B3KyYSnos0rAdGm3s65v_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1869.706985458723, + "y": -159.9313391905278, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 79068188, + "groupIds": [ + "sQWjImb0QEQfu7UdTveWc" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 644, + "versionNonce": 1761396388, + "isDeleted": false, + "id": "YGvIyvQyhh4dWxqb0d2zg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1825.0864897536526, + "y": -148.59400386368276, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1363712156, + "groupIds": [ + "sQWjImb0QEQfu7UdTveWc" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 950, + "versionNonce": 1192453532, + "isDeleted": false, + "id": "mroIBqU7LGcbZYnFJiSJV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1817.557324539225, + "y": -219.9878617153741, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1851991324, + "groupIds": [ + "adHqaKnthA4MhvyqUjUA2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 588, + "versionNonce": 1920225828, + "isDeleted": false, + "id": "ZX5YSHxn7-CcOW6YMnY3h", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1825.6053891283714, + "y": -215.85379266590672, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 293085596, + "groupIds": [ + "adHqaKnthA4MhvyqUjUA2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 655, + "versionNonce": 1531728412, + "isDeleted": false, + "id": "pUKuR50rohhUj7Io-6Ezl", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.592170349681, + "y": -214.76289064426697, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1907985948, + "groupIds": [ + "adHqaKnthA4MhvyqUjUA2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 696, + "versionNonce": 200175012, + "isDeleted": false, + "id": "GoHPnQTqoK1mvS_pVO6Me", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1869.597610458723, + "y": -215.0172766905278, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 270101148, + "groupIds": [ + "adHqaKnthA4MhvyqUjUA2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 657, + "versionNonce": 1119071900, + "isDeleted": false, + "id": "awuSBNF2zM-RMA2QbZjHn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1824.9771147536526, + "y": -203.67994136368276, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 2135537436, + "groupIds": [ + "adHqaKnthA4MhvyqUjUA2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 974, + "versionNonce": 916003108, + "isDeleted": false, + "id": "sI4Lh3LRbOBgKt8y0FkX-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1817.014355789225, + "y": -277.0269242153741, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 733770652, + "groupIds": [ + "Vl3wRgueXyLujLPmNE-vz" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 612, + "versionNonce": 1845197596, + "isDeleted": false, + "id": "hxB7pShI__vwB-Oz02_FI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1825.0624203783714, + "y": -272.8928551659067, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 597925916, + "groupIds": [ + "Vl3wRgueXyLujLPmNE-vz" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 679, + "versionNonce": 501372068, + "isDeleted": false, + "id": "j248N7GmdUf1L5rBpjAAz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1826.049201599681, + "y": -271.801953144267, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1592867996, + "groupIds": [ + "Vl3wRgueXyLujLPmNE-vz" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696046, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 720, + "versionNonce": 1737865116, + "isDeleted": false, + "id": "kR1t-q_xpsWx7n1bJHhLQ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1869.054641708723, + "y": -272.0563391905278, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 123160860, + "groupIds": [ + "Vl3wRgueXyLujLPmNE-vz" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 681, + "versionNonce": 1333272612, + "isDeleted": false, + "id": "21MCC_UJ0BJezLWqA7ZCe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1824.4341460036526, + "y": -260.71900386368276, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1078445468, + "groupIds": [ + "Vl3wRgueXyLujLPmNE-vz" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 989, + "versionNonce": 464806940, + "isDeleted": false, + "id": "yvoxy7ZjGobNmOwCbq-i9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1816.326855789225, + "y": -327.76911171537415, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1861530140, + "groupIds": [ + "bhKzdiqPG8rI9AhFdVxxE" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 627, + "versionNonce": 1934130084, + "isDeleted": false, + "id": "UJmbZKTaf3blz4VGPU1Fl", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1824.3749203783714, + "y": -323.63504266590667, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 38801052, + "groupIds": [ + "bhKzdiqPG8rI9AhFdVxxE" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 694, + "versionNonce": 541687964, + "isDeleted": false, + "id": "p4CkH0Y0g--ZyAG7LrVTr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1825.361701599681, + "y": -322.54414064426703, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 990632732, + "groupIds": [ + "bhKzdiqPG8rI9AhFdVxxE" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 735, + "versionNonce": 58812196, + "isDeleted": false, + "id": "5fg7JSLx-Ltlgi5kRkOgA", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1868.367141708723, + "y": -322.79852669052786, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1939478428, + "groupIds": [ + "bhKzdiqPG8rI9AhFdVxxE" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 696, + "versionNonce": 2097614108, + "isDeleted": false, + "id": "8_Gjc_JBVtTKxZSeayyK2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1823.7466460036526, + "y": -311.4611913636827, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1747764252, + "groupIds": [ + "bhKzdiqPG8rI9AhFdVxxE" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 86, + "versionNonce": 76604068, + "isDeleted": false, + "id": "3gUBKTIYU7ts3ye9m28b6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2388.846387039225, + "y": -271.49861784170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 101.63987731933594, + "height": 25, + "seed": 2125848732, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "BEY-UkaUbF9I5QULzC2v0", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "User Alias", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "User Alias", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 123, + "versionNonce": 1935608220, + "isDeleted": false, + "id": "M73-YT142htFjAMlSiA3J", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2544.373730789225, + "y": -243.95955534170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 103.19989013671875, + "height": 25, + "seed": 250047772, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "b5JtAbQtpquM983nzAkOM", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Posted At", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Posted At", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 224, + "versionNonce": 1025830436, + "isDeleted": false, + "id": "vcLjvsgrDyzt3gb2ijVIY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2504.862012039225, + "y": 97.54435090829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 112.31988525390625, + "height": 25, + "seed": 708012444, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "9rJ6LMAWu75rrGOMUqb39", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Text Input", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Text Input", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 279, + "versionNonce": 1183020572, + "isDeleted": false, + "id": "m4rzcyyJVzFms0-zC95I8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2681.119824539225, + "y": 96.14981965829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 62.019927978515625, + "height": 25, + "seed": 1674303004, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "CUxuSJwktyE5f4GtfNQ2g", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Submit", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Submit", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 139, + "versionNonce": 1848347044, + "isDeleted": false, + "id": "f5TufFwk8naUlqoDaMohD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2241.936230789225, + "y": -4.6939303417055385, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 156.6998291015625, + "height": 25, + "seed": 413315740, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "8WCO-_RWO0HYNMQRVfrec", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Actual Message", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Actual Message", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 220, + "versionNonce": 57037468, + "isDeleted": false, + "id": "8WCO-_RWO0HYNMQRVfrec", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2313.365918289225, + "y": -11.885336591705538, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 40.07421875, + "height": 37.69140625, + "seed": 929693468, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false, + "startBinding": { + "elementId": "f5TufFwk8naUlqoDaMohD", + "focus": 0.5199471956709676, + "gap": 7.19140625 + }, + "endBinding": { + "elementId": "AbCINP8HwCt8n9mId6h5H", + "focus": 0.7797000892057244, + "gap": 5.988281249999972 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -39.35802108410462, + -10.894563957772561 + ], + [ + -40.07421875, + -37.69140625 + ] + ] + }, + { + "type": "arrow", + "version": 222, + "versionNonce": 181581092, + "isDeleted": false, + "id": "BEY-UkaUbF9I5QULzC2v0", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2424.182324539225, + "y": -241.16268034170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 112.41015625, + "height": 75.05078125, + "seed": 143899548, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false, + "startBinding": { + "elementId": "3gUBKTIYU7ts3ye9m28b6", + "focus": -0.4492197666532797, + "gap": 5.3359375 + }, + "endBinding": { + "elementId": "4OZSxxyCoV4xFw4H8-AIR", + "focus": 0.34772960896145166, + "gap": 1.59375 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -62.62890625, + 19.9765625 + ], + [ + -112.41015625, + 75.05078125 + ] + ] + }, + { + "type": "arrow", + "version": 303, + "versionNonce": 1220124444, + "isDeleted": false, + "id": "b5JtAbQtpquM983nzAkOM", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2542.092480789225, + "y": -220.61189909170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 120.09171537269322, + "height": 51.09032941967871, + "seed": 1985079324, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false, + "startBinding": { + "elementId": "M73-YT142htFjAMlSiA3J", + "focus": -0.8960036137095557, + "gap": 2.28125 + }, + "endBinding": { + "elementId": "hu8zP0_MTagNFCUizlELu", + "focus": -0.2140327538347811, + "gap": 6.83545183032129 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -57.984375, + -2.671875 + ], + [ + -120.09171537269322, + 48.41845441967871 + ] + ] + }, + { + "type": "text", + "version": 71, + "versionNonce": 1887989924, + "isDeleted": false, + "id": "NGL4ehD43dAysVkujhJcW", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1684.143262039225, + "y": -336.0845553417056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 64.25993347167969, + "height": 25, + "seed": 1419150492, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "Q0T6DJOqPyPvhtffz3aAW", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Oldest", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Oldest", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 118, + "versionNonce": 250567580, + "isDeleted": false, + "id": "NLfnjL9iAK5G73G49dWSj", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1681.529980789225, + "y": -42.63143034170554, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 69.09992980957031, + "height": 25, + "seed": 689148188, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "Q0T6DJOqPyPvhtffz3aAW", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Newest", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Newest", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 189, + "versionNonce": 519748644, + "isDeleted": false, + "id": "Q0T6DJOqPyPvhtffz3aAW", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1763.944043289225, + "y": -336.0572115917056, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 0, + "height": 324.14453125, + "seed": 1933249948, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false, + "startBinding": { + "elementId": "NGL4ehD43dAysVkujhJcW", + "focus": -1.483687017359562, + "gap": 15.540847778320312 + }, + "endBinding": { + "elementId": "NLfnjL9iAK5G73G49dWSj", + "focus": 1.385358790584059, + "gap": 13.314132690429688 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0, + 324.14453125 + ] + ] + }, + { + "type": "rectangle", + "version": 115, + "versionNonce": 1882818588, + "isDeleted": false, + "id": "0TlS6kW4EksIWsMQ91cWP", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2205.026074539225, + "y": 196.47403840829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 532.40625, + "height": 101.55078125, + "seed": 1950284316, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "9rJ6LMAWu75rrGOMUqb39", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 349, + "versionNonce": 1880594340, + "isDeleted": false, + "id": "kByyFh-cRQhaRqr4IweK4", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2743.604199539225, + "y": 195.46622590829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 87.78125, + "height": 101.55078125, + "seed": 1997624988, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "CUxuSJwktyE5f4GtfNQ2g", + "type": "arrow" + } + ], + "updated": 1687097696047, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 241, + "versionNonce": 1888101532, + "isDeleted": false, + "id": "CUxuSJwktyE5f4GtfNQ2g", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2744.467480789225, + "y": 108.4411426557956, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 52.44140625, + "height": 85.2828957524988, + "seed": 409215772, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696047, + "link": null, + "locked": false, + "startBinding": { + "elementId": "m4rzcyyJVzFms0-zC95I8", + "focus": -0.29245685280651895, + "gap": 1.327728271484375 + }, + "endBinding": { + "elementId": "kByyFh-cRQhaRqr4IweK4", + "focus": 0.21525305429763703, + "gap": 1.7421875000001137 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 52.37890625, + 7.759458252498803 + ], + [ + 52.44140625, + 85.2828957524988 + ] + ] + }, + { + "type": "arrow", + "version": 155, + "versionNonce": 1343030052, + "isDeleted": false, + "id": "9rJ6LMAWu75rrGOMUqb39", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2499.467480789225, + "y": 110.01310090829452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 62.42578125, + "height": 76.47265625, + "seed": 245981084, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696048, + "link": null, + "locked": false, + "startBinding": { + "elementId": "vcLjvsgrDyzt3gb2ijVIY", + "focus": 0.6251936840168677, + "gap": 5.39453125 + }, + "endBinding": { + "elementId": "0TlS6kW4EksIWsMQ91cWP", + "focus": -0.07947551054412004, + "gap": 9.98828125 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -62.42578125, + 18.375 + ], + [ + -56.265625, + 76.47265625 + ] + ] + }, + { + "type": "text", + "version": 63, + "versionNonce": 1167274268, + "isDeleted": false, + "id": "LclP0QID0S7uOxnBC1r_w", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2021.2316643236306, + "y": -613.9654983027358, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 159.91981506347656, + "height": 25, + "seed": 1913850908, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "bYdkbhRQWp-XN4S--6eHG", + "type": "arrow" + } + ], + "updated": 1687097696048, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Application Title", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Application Title", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 122, + "versionNonce": 1967718052, + "isDeleted": false, + "id": "bYdkbhRQWp-XN4S--6eHG", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2013.198523551768, + "y": -602.4311694888481, + "strokeColor": "#1e1e1e", + "backgroundColor": "#099268", + "width": 86.22988048141497, + "height": 46.482583517614785, + "seed": 76753052, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696048, + "link": null, + "locked": false, + "startBinding": { + "elementId": "LclP0QID0S7uOxnBC1r_w", + "focus": 0.3740675093956721, + "gap": 8.033140771862804 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -72.22979310791175, + 4.613856787991381 + ], + [ + -86.22988048141497, + 46.482583517614785 + ] + ] + }, + { + "id": "c6LbQoAhzD-_EPxq0NERV", + "type": "text", + "x": -1937.0297670680404, + "y": -1024.106489274734, + "width": 1047.535838220108, + "height": 148.73005662498875, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "4dYzeKHt-sZTTgIXUX4Vx" + ], + "frameId": null, + "roundness": null, + "seed": 1063170460, + "version": 87, + "versionNonce": 516337052, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "R-Mess UI Design", + "fontSize": 118.98404529999102, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 103.99999999999997, + "containerId": null, + "originalText": "R-Mess UI Design", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "1mZ4g8ZMsunzFMlPH5THM", + "type": "text", + "x": -1917.8626585492773, + "y": -857.89667802549, + "width": 659.002470061237, + "height": 115.67893293054681, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "4dYzeKHt-sZTTgIXUX4Vx" + ], + "frameId": null, + "roundness": null, + "seed": 281574820, + "version": 165, + "versionNonce": 410618404, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "- A Real Mess", + "fontSize": 92.54314634443743, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 81.00000000000001, + "containerId": null, + "originalText": "- A Real Mess", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "koFqjUI_SW9QMw3JhrjRk", + "type": "text", + "x": -1917.6473540491772, + "y": -713.6842762552963, + "width": 951.2102909401798, + "height": 82.62780923610487, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "4dYzeKHt-sZTTgIXUX4Vx" + ], + "frameId": null, + "roundness": null, + "seed": 696289692, + "version": 251, + "versionNonce": 1834392092, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "Sketches of the user journey", + "fontSize": 66.1022473888839, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 58, + "containerId": null, + "originalText": "Sketches of the user journey", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "5iWtEEDWxmSjNW2egvaZF", + "type": "text", + "x": -398.860578584884, + "y": 1365.0636123988081, + "width": 73.86430358886719, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 772199972, + "version": 197, + "versionNonce": 380653860, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "Lobby", + "fontSize": 28, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 25, + "containerId": null, + "originalText": "Lobby", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 264, + "versionNonce": 672383772, + "isDeleted": false, + "id": "Gq3FkJvRjgILJEdoyuEkI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1120.3708822802312, + "y": 1392.7382478298273, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 1884670364, + "groupIds": [ + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 366, + "versionNonce": 1716685988, + "isDeleted": false, + "id": "VSpJVAll4KEvjw493yD56", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1112.7966635302312, + "y": 1403.818427844683, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 466.57330230041003, + "seed": 1683540388, + "groupIds": [ + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "xewKYY-LO_1uZFZRW548u", + "type": "arrow" + }, + { + "id": "0v_-hmcKds00Q7wRV08Hk", + "type": "arrow" + } + ], + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "id": "iyDnHCINoxerY6qj1R26N", + "type": "rectangle", + "x": -1097.1862396313225, + "y": 1496.8303358211795, + "width": 222.6154202952481, + "height": 264.19777601425136, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1567586596, + "version": 277, + "versionNonce": 1197801372, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "id": "GwgH3a1wza-dKP3qxk9OV", + "type": "rectangle", + "x": -1065.6039342955678, + "y": 1534.56077128215, + "width": 165, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#4dabf7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 400458780, + "version": 447, + "versionNonce": 220289060, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "RKOqVIB5cD75jt-Efo678" + } + ], + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "id": "RKOqVIB5cD75jt-Efo678", + "type": "text", + "x": -1035.3538732604115, + "y": 1539.56077128215, + "width": 104.4998779296875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": null, + "seed": 1032355620, + "version": 423, + "versionNonce": 1381674012, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "User Name", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "GwgH3a1wza-dKP3qxk9OV", + "originalText": "User Name", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "Ctv0wLUyxo9xTKFA1wPEl", + "type": "rectangle", + "x": -1064.1870120033182, + "y": 1579.0956193427521, + "width": 165, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#4dabf7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1511155612, + "version": 465, + "versionNonce": 386577316, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "3oYvy6pxCT9EJdRFRaDDJ" + } + ], + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "id": "3oYvy6pxCT9EJdRFRaDDJ", + "type": "text", + "x": -1027.446960733787, + "y": 1584.0956193427521, + "width": 91.5198974609375, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": null, + "seed": 1415475236, + "version": 448, + "versionNonce": 988203164, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "Password", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "Ctv0wLUyxo9xTKFA1wPEl", + "originalText": "Password", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "XdcwV9I8dAt91SlxaRYRs", + "type": "rectangle", + "x": -1065.9206688381923, + "y": 1627.0015870693767, + "width": 168, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 208882852, + "version": 496, + "versionNonce": 1648140068, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "h0MRwhE-Of24SDtg3-AWx" + } + ], + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "id": "h0MRwhE-Of24SDtg3-AWx", + "type": "text", + "x": -1005.3206474758879, + "y": 1632.0015870693767, + "width": 46.799957275390625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": null, + "seed": 548421532, + "version": 483, + "versionNonce": 1689998620, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "Login", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "XdcwV9I8dAt91SlxaRYRs", + "originalText": "Login", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "5pK8v9cf2pwRbpnKJNgye", + "type": "rectangle", + "x": -1065.5123571691552, + "y": 1702.568597287101, + "width": 168, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1517927076, + "version": 527, + "versionNonce": 1462049444, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "Lge3ZR5qZWQRiAU4wnUy3" + } + ], + "updated": 1687097696048, + "link": null, + "locked": false + }, + { + "id": "Lge3ZR5qZWQRiAU4wnUy3", + "type": "text", + "x": -1042.8522848424948, + "y": 1707.568597287101, + "width": 122.67985534667969, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "qI9B8ALtPLtECFxbdccPW", + "4HIcGr5vUYTQi-4pYGyU1" + ], + "frameId": null, + "roundness": null, + "seed": 1863299484, + "version": 525, + "versionNonce": 1833587100, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696048, + "link": null, + "locked": false, + "text": "Create User", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "5pK8v9cf2pwRbpnKJNgye", + "originalText": "Create User", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 330, + "versionNonce": 904655908, + "isDeleted": false, + "id": "2TmvWUZcLUbWgMOXNZstH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -490.1438102927989, + "y": 1408.063629209081, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 1883716516, + "groupIds": [ + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": null, + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 432, + "versionNonce": 1712836636, + "isDeleted": false, + "id": "MuYVP1XqX199BKBSnThi0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -482.5695915427989, + "y": 1419.1438092239364, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 466.57330230041003, + "seed": 127320220, + "groupIds": [ + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "xewKYY-LO_1uZFZRW548u", + "type": "arrow" + }, + { + "id": "n54cROM5gJodIt-riAozJ", + "type": "arrow" + }, + { + "id": "m1MbvmtOO1BpN3ypaRCXb", + "type": "arrow" + }, + { + "id": "k9reGwpqQAUYhfMrGBVgZ", + "type": "arrow" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "hm1tSxqvbjTwG-HBpj87U", + "type": "rectangle", + "x": -474.4397543883656, + "y": 1431.3668361259884, + "width": 236.32650611222812, + "height": 72.97180079369502, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "spmHsottUsT71WTzUwkwH", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 100478492, + "version": 177, + "versionNonce": 69324708, + "isDeleted": false, + "boundElements": [], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "q3Rfm_KQT97viIMx_WYKP", + "type": "rectangle", + "x": -461.33743940901195, + "y": 1450.5452470402613, + "width": 73, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#da77f2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "spmHsottUsT71WTzUwkwH", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 103734692, + "version": 269, + "versionNonce": 593456284, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "GaPSX5BCO6c7nRGzv9bJ5" + }, + { + "id": "n54cROM5gJodIt-riAozJ", + "type": "arrow" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "GaPSX5BCO6c7nRGzv9bJ5", + "type": "text", + "x": -450.2774189622346, + "y": 1455.5452470402613, + "width": 50.87995910644531, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "spmHsottUsT71WTzUwkwH", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 2030399140, + "version": 325, + "versionNonce": 1443904292, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696049, + "link": null, + "locked": false, + "text": "Admin", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "q3Rfm_KQT97viIMx_WYKP", + "originalText": "Admin", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "Ui7SxoDjAbPknrTYDWGvl", + "type": "rectangle", + "x": -353.90074802204435, + "y": 1449.558226720362, + "width": 105, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#40c057", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "spmHsottUsT71WTzUwkwH", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1936439972, + "version": 310, + "versionNonce": 2122283292, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "QDTDPusbsMvZCz4T69krJ" + }, + { + "id": "m1MbvmtOO1BpN3ypaRCXb", + "type": "arrow" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "QDTDPusbsMvZCz4T69krJ", + "type": "text", + "x": -348.53069949909514, + "y": 1454.558226720362, + "width": 94.25990295410156, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "spmHsottUsT71WTzUwkwH", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 373141916, + "version": 367, + "versionNonce": 1176843940, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696049, + "link": null, + "locked": false, + "text": "Add Room", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "Ui7SxoDjAbPknrTYDWGvl", + "originalText": "Add Room", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "sBu-_jj--0hBzPIqCCK6W", + "type": "rectangle", + "x": -470.5923422905788, + "y": 1523.7790159341105, + "width": 230.23086031908804, + "height": 340.17535297932, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#868e96", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1947596580, + "version": 176, + "versionNonce": 48887196, + "isDeleted": false, + "boundElements": [ + { + "id": "O-Mznzi05nnwcFZw6Y-dh", + "type": "arrow" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "hJkhxklLiNKKkQY5qaaYJ", + "type": "rectangle", + "x": -452.30540491115926, + "y": 1538.2928306769813, + "width": 192, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 894222756, + "version": 126, + "versionNonce": 1896792612, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "h-s1J4VQTF5oT7i9UhXXf" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "h-s1J4VQTF5oT7i9UhXXf", + "type": "text", + "x": -380.4953768349874, + "y": 1545.7928306769813, + "width": 48.37994384765625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 1964618908, + "version": 89, + "versionNonce": 2110841372, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696049, + "link": null, + "locked": false, + "text": "Room", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "hJkhxklLiNKKkQY5qaaYJ", + "originalText": "Room", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "Icp4X-nzllDEJXUJ6baD5", + "type": "rectangle", + "x": -449.3003441824403, + "y": 1591.7951751891524, + "width": 192, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1045395228, + "version": 152, + "versionNonce": 767221156, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "KApH2wXjdX5WIXIrYYgCj" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "KApH2wXjdX5WIXIrYYgCj", + "type": "text", + "x": -377.49031610626844, + "y": 1599.2951751891524, + "width": 48.37994384765625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 702290084, + "version": 114, + "versionNonce": 1176911516, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696049, + "link": null, + "locked": false, + "text": "Room", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "Icp4X-nzllDEJXUJ6baD5", + "originalText": "Room", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "QJASsqFMPYet0yZLn_64L", + "type": "rectangle", + "x": -447.13592735720135, + "y": 1646.924067905266, + "width": 192, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 389081244, + "version": 182, + "versionNonce": 1163364644, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "n5G3VyUsq2OhwQMktRoSd" + }, + { + "id": "O-Mznzi05nnwcFZw6Y-dh", + "type": "arrow" + } + ], + "updated": 1687097696049, + "link": null, + "locked": false + }, + { + "id": "n5G3VyUsq2OhwQMktRoSd", + "type": "text", + "x": -375.3258992810295, + "y": 1654.424067905266, + "width": 48.37994384765625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 1596227364, + "version": 142, + "versionNonce": 77335324, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696049, + "link": null, + "locked": false, + "text": "Room", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "QJASsqFMPYet0yZLn_64L", + "originalText": "Room", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "00grDEJSrbJD7h26BsQPq", + "type": "rectangle", + "x": -447.20410434073915, + "y": 1705.5875749876388, + "width": 192, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 640003996, + "version": 221, + "versionNonce": 726844580, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "WASv0xaG5uFEiuGtphm0k" + } + ], + "updated": 1687097696050, + "link": null, + "locked": false + }, + { + "id": "WASv0xaG5uFEiuGtphm0k", + "type": "text", + "x": -375.3940762645673, + "y": 1713.0875749876388, + "width": 48.37994384765625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 2080614436, + "version": 181, + "versionNonce": 2074363804, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696050, + "link": null, + "locked": false, + "text": "Room", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "00grDEJSrbJD7h26BsQPq", + "originalText": "Room", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "TtmncKINNGthCeR-q5qMO", + "type": "rectangle", + "x": -448.9848489043893, + "y": 1761.3537930817392, + "width": 192, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 937365532, + "version": 244, + "versionNonce": 895127588, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "dSUh9dkh6y3qoua5kj1Wp" + } + ], + "updated": 1687097696050, + "link": null, + "locked": false + }, + { + "id": "dSUh9dkh6y3qoua5kj1Wp", + "type": "text", + "x": -377.17482082821743, + "y": 1768.8537930817392, + "width": 48.37994384765625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "g9Qg_aL14Q-49C_im6i76", + "0qawmsYr4Hju4XRm5TLKB" + ], + "frameId": null, + "roundness": null, + "seed": 91131812, + "version": 203, + "versionNonce": 1332802588, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696050, + "link": null, + "locked": false, + "text": "Room", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "TtmncKINNGthCeR-q5qMO", + "originalText": "Room", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 294, + "versionNonce": 1398598564, + "isDeleted": false, + "id": "dla9kAmA9H7GTlz5AN_zt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 204.78076039132043, + "y": 994.6822193159115, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 1132872996, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696050, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 393, + "versionNonce": 1307840668, + "isDeleted": false, + "id": "LhXnxHv5iVN9-6jQQLq7w", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 212.35497914132043, + "y": 1005.7623993307672, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 466.57330230041003, + "seed": 1816789156, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "n54cROM5gJodIt-riAozJ", + "type": "arrow" + } + ], + "updated": 1687097696050, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 268, + "versionNonce": 2135483036, + "isDeleted": false, + "id": "jEqMVd5fRCynH-FGYAvjZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 199.69791466128368, + "y": 1585.769598478454, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 1821322780, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "m1MbvmtOO1BpN3ypaRCXb", + "type": "arrow" + } + ], + "updated": 1687097696050, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 333, + "versionNonce": 539043108, + "isDeleted": false, + "id": "m7-VBa4iIXeUJV6VRIobi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 554.6743478266602, + "y": 1584.0616292820164, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 488.234375, + "seed": 972656164, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": null, + "updated": 1687097696050, + "link": null, + "locked": false + }, + { + "id": "xewKYY-LO_1uZFZRW548u", + "type": "arrow", + "x": -839.4234895809809, + "y": 1630.2386154578844, + "width": 333.2808160568718, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 858734500, + "version": 169, + "versionNonce": 596923164, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696051, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 333.2808160568718, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "VSpJVAll4KEvjw493yD56", + "focus": -0.029433589548089535, + "gap": 16.64661144925026 + }, + "endBinding": { + "elementId": "MuYVP1XqX199BKBSnThi0", + "focus": 0.09512693849751577, + "gap": 23.573081981310224 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "text", + "version": 255, + "versionNonce": 1289944228, + "isDeleted": false, + "id": "wpJAoleoLi2fa3YXi17DM", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 263.1747105221816, + "y": 943.9884579765106, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 158.17263793945312, + "height": 35, + "seed": 581275044, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696051, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Admin Panel", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Admin Panel", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 321, + "versionNonce": 609456028, + "isDeleted": false, + "id": "aRwTZCEASbQ35YW-fvrhQ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 258.05673218484685, + "y": 1546.1639151672691, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 131.96456909179688, + "height": 35, + "seed": 107795868, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687097696051, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Add Room", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Add Room", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 402, + "versionNonce": 673433636, + "isDeleted": false, + "id": "90dxGxmGmExFoBFd-5sdv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 248.11269033438487, + "y": 2142.9259116430967, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 148.09263610839844, + "height": 35, + "seed": 1299338404, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687097696051, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Chat Room", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Chat Room", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "id": "n54cROM5gJodIt-riAozJ", + "type": "arrow", + "x": -434.05290688767195, + "y": 1442.9205587438325, + "width": 622.1803178581392, + "height": 248.75066738128476, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 303620260, + "version": 358, + "versionNonce": 855063580, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696051, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 37.523542392916454, + -235.48683142801667 + ], + [ + 414.4357559563663, + -248.75066738128476 + ], + [ + 622.1803178581392, + -224.55007852489666 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "q3Rfm_KQT97viIMx_WYKP", + "focus": -0.33645824088166515, + "gap": 7.624688296428758 + }, + "endBinding": { + "elementId": "LhXnxHv5iVN9-6jQQLq7w", + "focus": 0.011694129554446795, + "gap": 24.227568170853147 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "m1MbvmtOO1BpN3ypaRCXb", + "type": "arrow", + "x": -241.99600185283134, + "y": 1469.0021616130427, + "width": 427.4778751855055, + "height": 369.03920055429967, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 81833884, + "version": 439, + "versionNonce": 138355620, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696051, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 274.2034741376373, + 43.333188529659765 + ], + [ + 299.07047938713947, + 324.27606715894933 + ], + [ + 427.4778751855055, + 369.03920055429967 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "Ui7SxoDjAbPknrTYDWGvl", + "focus": -0.28856266545322545, + "gap": 6.904746169213013 + }, + "endBinding": { + "elementId": "jEqMVd5fRCynH-FGYAvjZ", + "focus": -0.20890729816832718, + "gap": 14.216041328609492 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "O-Mznzi05nnwcFZw6Y-dh", + "type": "arrow", + "x": -248.1334818603807, + "y": 1667.8468400712939, + "width": 437.41637286729565, + "height": 770.5531598499513, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1845425308, + "version": 446, + "versionNonce": 1975596828, + "isDeleted": false, + "boundElements": null, + "updated": 1687097706352, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 158.69309077313562, + 98.37703287057195 + ], + [ + 154.93106274749232, + 704.0850423021444 + ], + [ + 437.41637286729565, + 770.5531598499513 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "QJASsqFMPYet0yZLn_64L", + "focus": -0.7914560397219701, + "gap": 7.0024454968206555 + }, + "endBinding": { + "elementId": "FH_uuXji3JW4_zr_1Am6K", + "gap": 10.554245095386705, + "focus": -0.05510349862817124 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 235, + "versionNonce": 728127652, + "isDeleted": false, + "id": "FH_uuXji3JW4_zr_1Am6K", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 199.83713610230166, + "y": 2192.129204919928, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 274.76953125, + "height": 530.0147757867418, + "seed": 2125957796, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "O-Mznzi05nnwcFZw6Y-dh", + "type": "arrow" + } + ], + "updated": 1687097706352, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 419, + "versionNonce": 345685788, + "isDeleted": false, + "id": "lLDTDymXIupojE7vjsY91", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 211.94849864934417, + "y": 2298.165639405415, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 365.30468749999994, + "seed": 204903972, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 988, + "versionNonce": 438279204, + "isDeleted": false, + "id": "g2z0HIaE8xMYNVATtTH2s", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 246.55787364934417, + "y": 2589.449833031746, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1019752868, + "groupIds": [ + "qOdz2nyAO60PN03Cvg-fI" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 626, + "versionNonce": 1314039836, + "isDeleted": false, + "id": "y-vAN2Kd8qblgRn7wspsv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 254.60593823849035, + "y": 2593.583902081213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 798645540, + "groupIds": [ + "qOdz2nyAO60PN03Cvg-fI" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 693, + "versionNonce": 1939896228, + "isDeleted": false, + "id": "7hogtJ0MkRP_-4nU7KSvK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 255.59271945980004, + "y": 2594.6748041028527, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1847269540, + "groupIds": [ + "qOdz2nyAO60PN03Cvg-fI" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 734, + "versionNonce": 1853834396, + "isDeleted": false, + "id": "iIlwyLBPg2umPL3YR6Tc0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 298.598159568842, + "y": 2594.4204180565926, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 603481124, + "groupIds": [ + "qOdz2nyAO60PN03Cvg-fI" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 695, + "versionNonce": 796517156, + "isDeleted": false, + "id": "ndu7jdsSqU32NVkfvo5Z9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253.97766386377157, + "y": 2605.757753383437, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1461731236, + "groupIds": [ + "qOdz2nyAO60PN03Cvg-fI" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1013, + "versionNonce": 132403484, + "isDeleted": false, + "id": "On58GnN4JrS9NzxU3HALS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 246.68287364934417, + "y": 2541.270145531746, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 532720420, + "groupIds": [ + "kcd9nc0a7n_akk1OocJXX" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 651, + "versionNonce": 337239716, + "isDeleted": false, + "id": "KDzyWgtC0Ww7ZqP3cB76Y", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 254.73093823849035, + "y": 2545.404214581213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1615308452, + "groupIds": [ + "kcd9nc0a7n_akk1OocJXX" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 718, + "versionNonce": 972279196, + "isDeleted": false, + "id": "uZgce45qXO9M8ClJmCmQg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 255.71771945980004, + "y": 2546.4951166028527, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 2103652900, + "groupIds": [ + "kcd9nc0a7n_akk1OocJXX" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 759, + "versionNonce": 1781426724, + "isDeleted": false, + "id": "PULqCj6lLipHriHOBzNZy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 298.723159568842, + "y": 2546.2407305565926, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 369184164, + "groupIds": [ + "kcd9nc0a7n_akk1OocJXX" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 720, + "versionNonce": 1709160988, + "isDeleted": false, + "id": "0ng9X7CEWZ6PlyLPWg8at", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 254.10266386377157, + "y": 2557.578065883437, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 995096868, + "groupIds": [ + "kcd9nc0a7n_akk1OocJXX" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696053, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1040, + "versionNonce": 883262884, + "isDeleted": false, + "id": "wDEH8NTQeFsr2XUmLygRo", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 245.58131114934417, + "y": 2476.984989281746, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 683488420, + "groupIds": [ + "ZwMkvKjsUqBCBJbNCg95B" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 678, + "versionNonce": 1989809820, + "isDeleted": false, + "id": "7doMUdf_QxGu7Y-TvgOYK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253.62937573849035, + "y": 2481.119058331213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 2079784996, + "groupIds": [ + "ZwMkvKjsUqBCBJbNCg95B" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 745, + "versionNonce": 1756180772, + "isDeleted": false, + "id": "DBEFf6pjevv01a0314bQo", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 254.61615695980004, + "y": 2482.2099603528527, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1827363748, + "groupIds": [ + "ZwMkvKjsUqBCBJbNCg95B" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 786, + "versionNonce": 685040412, + "isDeleted": false, + "id": "9uuIh3jn0XMoYzoqk4X3o", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 297.621597068842, + "y": 2481.9555743065926, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 97011492, + "groupIds": [ + "ZwMkvKjsUqBCBJbNCg95B" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 747, + "versionNonce": 632515748, + "isDeleted": false, + "id": "gtn1gmJAuo-LtbEjqmB3b", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253.00110136377157, + "y": 2493.292909633437, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1526448804, + "groupIds": [ + "ZwMkvKjsUqBCBJbNCg95B" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1053, + "versionNonce": 1392648092, + "isDeleted": false, + "id": "4Cg1y0nbvR4sI_CLl0qRy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 245.47193614934417, + "y": 2421.899051781746, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1127468580, + "groupIds": [ + "5Udw5bUKWcswgnMvCAlxR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 691, + "versionNonce": 1835415588, + "isDeleted": false, + "id": "dHfwG1S3sYtag-ZFgxYuW", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253.52000073849035, + "y": 2426.033120831213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 257845668, + "groupIds": [ + "5Udw5bUKWcswgnMvCAlxR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 758, + "versionNonce": 760466460, + "isDeleted": false, + "id": "uDFACW12aVcY8IChdo_Mv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 254.50678195980004, + "y": 2427.1240228528527, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1118410020, + "groupIds": [ + "5Udw5bUKWcswgnMvCAlxR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 799, + "versionNonce": 1538495396, + "isDeleted": false, + "id": "rax86qj92L96DcppdeN3i", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 297.512222068842, + "y": 2426.8696368065926, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1250119844, + "groupIds": [ + "5Udw5bUKWcswgnMvCAlxR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 760, + "versionNonce": 431745180, + "isDeleted": false, + "id": "DJGPoSiyfh2r-_zzGwbsw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 252.89172636377157, + "y": 2438.206972133437, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 916036644, + "groupIds": [ + "5Udw5bUKWcswgnMvCAlxR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1077, + "versionNonce": 1590263588, + "isDeleted": false, + "id": "FLEKUglFnx7FkEGT0Juek", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 244.92896739934417, + "y": 2364.859989281746, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1893365668, + "groupIds": [ + "E8M0zOT7JX9A-42nqh7oL" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 715, + "versionNonce": 1810658588, + "isDeleted": false, + "id": "uI5gE43QAPEF_WBnAFbil", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 252.97703198849035, + "y": 2368.994058331213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1970529060, + "groupIds": [ + "E8M0zOT7JX9A-42nqh7oL" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 782, + "versionNonce": 1863711396, + "isDeleted": false, + "id": "m-CKkrG4V0DVPy_Uv2UMH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253.96381320980004, + "y": 2370.0849603528527, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 181657252, + "groupIds": [ + "E8M0zOT7JX9A-42nqh7oL" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 823, + "versionNonce": 827814300, + "isDeleted": false, + "id": "NBLjC_dcOeFoDBTMqo_F7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 296.969253318842, + "y": 2369.8305743065926, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 2041080356, + "groupIds": [ + "E8M0zOT7JX9A-42nqh7oL" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 784, + "versionNonce": 1195836964, + "isDeleted": false, + "id": "HeoSiqlxDPZtBN6NDcqU_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 252.34875761377157, + "y": 2381.167909633437, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 1155499428, + "groupIds": [ + "E8M0zOT7JX9A-42nqh7oL" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1092, + "versionNonce": 2033114652, + "isDeleted": false, + "id": "zSvmBsgpBNu6EjgFrIEN7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 244.24146739934417, + "y": 2314.117801781746, + "strokeColor": "#1e1e1e", + "backgroundColor": "#228be6", + "width": 199.3169590441121, + "height": 41.883775123668535, + "seed": 1638347044, + "groupIds": [ + "bSufkDTLY7nA88qwUAp23" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 730, + "versionNonce": 474653092, + "isDeleted": false, + "id": "-Vepm0K6I19ODDSdZobdn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 252.28953198849035, + "y": 2318.251870831213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 85.40508647070936, + "height": 9.827583722059682, + "seed": 1869442212, + "groupIds": [ + "bSufkDTLY7nA88qwUAp23" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 797, + "versionNonce": 476363420, + "isDeleted": false, + "id": "Myn7UnjukCx-MfapxBj4n", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 253.27631320980004, + "y": 2319.3427728528527, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 1876965412, + "groupIds": [ + "bSufkDTLY7nA88qwUAp23" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 838, + "versionNonce": 1431227684, + "isDeleted": false, + "id": "35h78XV9I1O7EB8VK41Lj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 296.281753318842, + "y": 2319.0883868065926, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fab005", + "width": 38.17683799373678, + "height": 7.420973405340519, + "seed": 2129499044, + "groupIds": [ + "bSufkDTLY7nA88qwUAp23" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 799, + "versionNonce": 95094556, + "isDeleted": false, + "id": "RKcVcuL0mF5AIlQorA-VS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 251.66125761377157, + "y": 2330.425722133437, + "strokeColor": "#1e1e1e", + "backgroundColor": "#7950f2", + "width": 186.37268301802015, + "height": 21.918611660384745, + "seed": 180584228, + "groupIds": [ + "bSufkDTLY7nA88qwUAp23" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 867, + "versionNonce": 1136756900, + "isDeleted": false, + "id": "nEDNy6JtYO1rcI_7NRNCM", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 198.44342491567443, + "y": 2664.4982232896764, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "width": 273.58836796087456, + "height": 53.6895294246408, + "seed": 198179492, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 410, + "versionNonce": 2037629852, + "isDeleted": false, + "id": "miCh4OcFSqQwMlk0RCjR9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 228.23215644954143, + "y": 2674.1547834456783, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 190.8924177310744, + "height": 36.410681045333256, + "seed": 1019282980, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "4fImTga38K-C8jRo_UOKp" + } + ], + "updated": 1687097696054, + "link": null, + "locked": false + }, + { + "id": "4fImTga38K-C8jRo_UOKp", + "type": "text", + "x": 246.55845412123097, + "y": 2679.860123968345, + "width": 154.2398223876953, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1419130788, + "version": 25, + "versionNonce": 1532023844, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696054, + "link": null, + "locked": false, + "text": "Enter message..", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "miCh4OcFSqQwMlk0RCjR9", + "originalText": "Enter message..", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 644, + "versionNonce": 1576071196, + "isDeleted": false, + "id": "HTI2Qg7sH2uV8gAPgH7oD", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 421.3374785946494, + "y": 2673.7934357628806, + "strokeColor": "#1e1e1e", + "backgroundColor": "#40c057", + "width": 31.47366328617644, + "height": 36.410681045333256, + "seed": 1384423844, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 428, + "versionNonce": 1337793316, + "isDeleted": false, + "id": "svfMhd__abPKZh9ISCubx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 206.61996743328234, + "y": 1600.7787790424072, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 102.17678755355941, + "seed": 770005412, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "UbfG0uSYf0lNZfF3idSOY", + "type": "rectangle", + "x": 216.737800535627, + "y": 1610.6835318222386, + "width": 70.24781517862641, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1887226268, + "version": 111, + "versionNonce": 1787861276, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "kfu5CRAH8CeHjhocD0I0j" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "kfu5CRAH8CeHjhocD0I0j", + "type": "text", + "x": 228.03172918206917, + "y": 1615.6835318222386, + "width": 47.65995788574219, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": null, + "seed": 239950492, + "version": 79, + "versionNonce": 926291620, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "Back", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "UbfG0uSYf0lNZfF3idSOY", + "originalText": "Back", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "Xtnee4m3pJlZ-txnQSZqX", + "type": "rectangle", + "x": 225.18248562911936, + "y": 1659.3146572827675, + "width": 71, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1287042076, + "version": 197, + "versionNonce": 265754012, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ynkruEEaqvv_do-iU3THY" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "ynkruEEaqvv_do-iU3THY", + "type": "text", + "x": 246.85249905685373, + "y": 1668.8146572827675, + "width": 27.65997314453125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": null, + "seed": 106113956, + "version": 164, + "versionNonce": 1292083748, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "QR", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "Xtnee4m3pJlZ-txnQSZqX", + "originalText": "QR", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "j629rTVW38Dsry7S6yCS2", + "type": "rectangle", + "x": 305.13027332023773, + "y": 1658.9447417087797, + "width": 71, + "height": 42, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1975696420, + "version": 240, + "versionNonce": 807010844, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "5qYEUrfL30we0AotZLLXO" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "5qYEUrfL30we0AotZLLXO", + "type": "text", + "x": 320.72029254631195, + "y": 1667.4447417087797, + "width": 39.81996154785156, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "WHl0VQm20SQT_Ds9Wotov" + ], + "frameId": null, + "roundness": null, + "seed": 1240565788, + "version": 203, + "versionNonce": 2014559652, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "URL", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "j629rTVW38Dsry7S6yCS2", + "originalText": "URL", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 493, + "versionNonce": 306929308, + "isDeleted": false, + "id": "nN_xmZV1GuZD8YB-p3YnM", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 561.5964005986589, + "y": 1599.0708098459695, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 102.17678755355941, + "seed": 661399972, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "_rhAwMiE9uenVGHliForJ", + "type": "rectangle", + "x": 571.7142337010035, + "y": 1608.9755626258009, + "width": 70.24781517862641, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1946137244, + "version": 178, + "versionNonce": 294938916, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "UeKpQI5w3lAomfz_C4spl" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "UeKpQI5w3lAomfz_C4spl", + "type": "text", + "x": 583.0081623474457, + "y": 1613.9755626258009, + "width": 47.65995788574219, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": null, + "seed": 318723364, + "version": 145, + "versionNonce": 1327311644, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "Back", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "_rhAwMiE9uenVGHliForJ", + "originalText": "Back", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "wc4ySPDLgyZ30MBOz-_XC", + "type": "rectangle", + "x": 580.1589187944959, + "y": 1657.6066880863298, + "width": 71, + "height": 44, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 522649372, + "version": 265, + "versionNonce": 485729444, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "aEEPJ9QA2C-UmEYa0aR_d" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "aEEPJ9QA2C-UmEYa0aR_d", + "type": "text", + "x": 601.8289322222303, + "y": 1667.1066880863298, + "width": 27.65997314453125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": null, + "seed": 169939108, + "version": 230, + "versionNonce": 419522460, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "QR", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "wc4ySPDLgyZ30MBOz-_XC", + "originalText": "QR", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "ed24yT4gcXa5YPXJXW6iY", + "type": "rectangle", + "x": 660.1067064856143, + "y": 1657.236772512342, + "width": 71, + "height": 42, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1890630556, + "version": 309, + "versionNonce": 2145349668, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-SP5I14kxa25kr0xlIF0Y" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "-SP5I14kxa25kr0xlIF0Y", + "type": "text", + "x": 675.6967257116885, + "y": 1665.736772512342, + "width": 39.81996154785156, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "AJrgHBqN0acNbXnws2Wm2" + ], + "frameId": null, + "roundness": null, + "seed": 1014979620, + "version": 269, + "versionNonce": 69866524, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "URL", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "ed24yT4gcXa5YPXJXW6iY", + "originalText": "URL", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 643, + "versionNonce": 977652644, + "isDeleted": false, + "id": "SmcvSheosYKjDmP7Vm9bU", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 205.72026709658644, + "y": 1710.5153645653534, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 354.99066568187123, + "seed": 1597704860, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "m1MbvmtOO1BpN3ypaRCXb", + "type": "arrow" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "6mlkVYx7Ki703DqTiaNxd", + "type": "rectangle", + "x": 219.68979512536225, + "y": 1733.6327270479815, + "width": 233.76969305417526, + "height": 314.96678723094305, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e9ecef", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 527832100, + "version": 155, + "versionNonce": 1317613724, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "cHM6u_RhSSVRaamzFgGob" + } + ], + "updated": 1687097696055, + "link": null, + "locked": false + }, + { + "id": "cHM6u_RhSSVRaamzFgGob", + "type": "text", + "x": 292.2246813253015, + "y": 1878.616120663453, + "width": 88.69992065429688, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": null, + "seed": 512089244, + "version": 96, + "versionNonce": 508868388, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "text": "SCAN QR", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "6mlkVYx7Ki703DqTiaNxd", + "originalText": "SCAN QR", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "hy8GavBXD2gmny4623XN5", + "type": "line", + "x": 235.5084857598423, + "y": 1787.968739613246, + "width": 36.855100678153235, + "height": 33.74447086513783, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 306664092, + "version": 121, + "versionNonce": 667991324, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696055, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 4.993560941514602, + -30.733850214625363 + ], + [ + 36.855100678153235, + -33.74447086513783 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "zqktubn2ltq9VbptBcEhf", + "type": "line", + "x": 401.33655530630347, + "y": 1791.6371250492814, + "width": 36.855100678153235, + "height": 33.74447086513783, + "angle": 1.566120795881722, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1413430052, + "version": 207, + "versionNonce": 142226084, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 4.993560941514602, + -30.733850214625363 + ], + [ + 36.855100678153235, + -33.74447086513783 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "uWIIehR6EJYRJWbTEcXyi", + "type": "line", + "x": 397.76746031706125, + "y": 2029.6703765678953, + "width": 36.855100678153235, + "height": 33.74447086513783, + "angle": 3.078619871027703, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 391888668, + "version": 271, + "versionNonce": 2037561756, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 4.993560941514602, + -30.733850214625363 + ], + [ + 36.855100678153235, + -33.74447086513783 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "uGwzRWEzRTt3duxc8geaI", + "type": "line", + "x": 237.95526124983223, + "y": 2028.846863023578, + "width": 36.855100678153235, + "height": 33.74447086513783, + "angle": 4.718209589827401, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ZIgrlBvEekpbsMQO3RWos" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 131494940, + "version": 375, + "versionNonce": 392445476, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 4.993560941514602, + -30.733850214625363 + ], + [ + 36.855100678153235, + -33.74447086513783 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "rectangle", + "version": 843, + "versionNonce": 1437272988, + "isDeleted": false, + "id": "c6AufL2yukfTGijMNxoLq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 564.2970301120605, + "y": 1710.3868504180957, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffd43b", + "width": 256.7265625, + "height": 354.99066568187123, + "seed": 1389291548, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false + }, + { + "id": "EwyYtqmWUBQ8XMKbnCHa6", + "type": "rectangle", + "x": 599.131454844258, + "y": 1836.2352305921393, + "width": 185.30318375027662, + "height": 79.96249830863098, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e9ecef", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 786274332, + "version": 197, + "versionNonce": 1997671460, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "dYGEnIOD2BRhTYAMHpGSn" + } + ], + "updated": 1687097696056, + "link": null, + "locked": false + }, + { + "id": "dYGEnIOD2BRhTYAMHpGSn", + "type": "text", + "x": 640.0431022613885, + "y": 1863.7164797464543, + "width": 103.47988891601562, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e9ecef", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 326742564, + "version": 167, + "versionNonce": 1140799516, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false, + "text": "Enter URL", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "EwyYtqmWUBQ8XMKbnCHa6", + "originalText": "Enter URL", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "hrRZ128XwQAApC83zi1uU", + "type": "rectangle", + "x": 604.4653094207205, + "y": 1971.4534491383156, + "width": 186, + "height": 36, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#69db7c", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1363541412, + "version": 263, + "versionNonce": 1757734820, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "2Al6sxawHSZkgqGu08kTx" + } + ], + "updated": 1687097696056, + "link": null, + "locked": false + }, + { + "id": "2Al6sxawHSZkgqGu08kTx", + "type": "text", + "x": 666.4553454314627, + "y": 1976.9534491383156, + "width": 62.019927978515625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e9ecef", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1281171100, + "version": 237, + "versionNonce": 538563740, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false, + "text": "Submit", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 18, + "containerId": "hrRZ128XwQAApC83zi1uU", + "originalText": "Submit", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "VnqNLI7pQZy0XCyDQcQoq", + "type": "text", + "x": 300.2377276247569, + "y": 1117.3752154759195, + "width": 83.75542614512145, + "height": 224.6660339330985, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#40c057", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 285982748, + "version": 91, + "versionNonce": 1720734500, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696056, + "link": null, + "locked": false, + "text": "?", + "fontSize": 179.73282714647888, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 157.9999999999999, + "containerId": null, + "originalText": "?", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "text", + "version": 305, + "versionNonce": 1762369828, + "isDeleted": false, + "id": "KsQecmkala7BIcuDiACrL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1634.6380277574303, + "y": 2105.529130549735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 178.22071838378906, + "height": 35, + "seed": 1322336796, + "groupIds": [ + "-PP6Ly0Xsz59WDcvAWSX_" + ], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "c9FlLamos3mdx-ortv63h", + "type": "arrow" + } + ], + "updated": 1687097696057, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Landing Page", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Landing Page", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "arrow", + "version": 427, + "versionNonce": 936735516, + "isDeleted": false, + "id": "c9FlLamos3mdx-ortv63h", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1443.2267662886507, + "y": 2126.2835542425983, + "strokeColor": "#1e1e1e", + "backgroundColor": "#40c057", + "width": 302.61277945955453, + "height": 0, + "seed": 1478139548, + "groupIds": [ + "-PP6Ly0Xsz59WDcvAWSX_" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1687097696057, + "link": null, + "locked": false, + "startBinding": { + "elementId": "KsQecmkala7BIcuDiACrL", + "focus": 0.18596706816362193, + "gap": 13.190543084990622 + }, + "endBinding": { + "elementId": "GM2bDnBieFO5Q1kK9hmQT", + "focus": 0.001988779148197615, + "gap": 1.6647544888094927 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 302.61277945955453, + 0 + ] + ] + }, + { + "id": "GM2bDnBieFO5Q1kK9hmQT", + "type": "diamond", + "x": -1137.5716871482475, + "y": 2040.518352095511, + "width": 298.8825244205202, + "height": 171.87222018182683, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "-PP6Ly0Xsz59WDcvAWSX_" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 20833308, + "version": 158, + "versionNonce": 1891884196, + "isDeleted": false, + "boundElements": [ + { + "id": "c9FlLamos3mdx-ortv63h", + "type": "arrow" + }, + { + "id": "0v_-hmcKds00Q7wRV08Hk", + "type": "arrow" + }, + { + "id": "k9reGwpqQAUYhfMrGBVgZ", + "type": "arrow" + } + ], + "updated": 1687097696057, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 487, + "versionNonce": 1399893916, + "isDeleted": false, + "id": "xvlrGFvvyoKTup5054bSA", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1092.9605345163018, + "y": 2106.9065020976686, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 204.98886108398438, + "height": 35, + "seed": 1392338980, + "groupIds": [ + "-PP6Ly0Xsz59WDcvAWSX_" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097696057, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "User logged in?", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "User logged in?", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "id": "lD4eoMbKBDoTcht4woaaB", + "type": "text", + "x": -838.579949255253, + "y": 2052.9527937013845, + "width": 44.96818542480469, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "-PP6Ly0Xsz59WDcvAWSX_" + ], + "frameId": null, + "roundness": null, + "seed": 234397980, + "version": 78, + "versionNonce": 1558751268, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696057, + "link": null, + "locked": false, + "text": "Yes", + "fontSize": 28, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 25, + "containerId": null, + "originalText": "Yes", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "bwJaKXB_a6DCp-S1AyyHl", + "type": "text", + "x": -1067.2312436062768, + "y": 1997.2807470031757, + "width": 33.54414367675781, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "-PP6Ly0Xsz59WDcvAWSX_" + ], + "frameId": null, + "roundness": null, + "seed": 200547492, + "version": 112, + "versionNonce": 1097882652, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696057, + "link": null, + "locked": false, + "text": "No", + "fontSize": 28, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 25, + "containerId": null, + "originalText": "No", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "0v_-hmcKds00Q7wRV08Hk", + "type": "arrow", + "x": -985.8841023791435, + "y": 2037.0533064688298, + "width": 0, + "height": 142.16615566885685, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1461064868, + "version": 69, + "versionNonce": 292029348, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696057, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + -142.16615566885685 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "GM2bDnBieFO5Q1kK9hmQT", + "focus": 0.015031474745464554, + "gap": 4.123604996882648 + }, + "endBinding": { + "elementId": "VSpJVAll4KEvjw493yD56", + "focus": 0.01130167509575384, + "gap": 24.495420654880036 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "k9reGwpqQAUYhfMrGBVgZ", + "type": "arrow", + "x": -838.1033813753652, + "y": 2125.560897411634, + "width": 481.49977947709095, + "height": 220.6041720606122, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 398367012, + "version": 113, + "versionNonce": 465991836, + "isDeleted": false, + "boundElements": null, + "updated": 1687097696057, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 427.8884566562415, + 0 + ], + [ + 481.49977947709095, + -220.6041720606122 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "GM2bDnBieFO5Q1kK9hmQT", + "focus": -0.010398012824236533, + "gap": 1.0666343412296442 + }, + "endBinding": { + "elementId": "MuYVP1XqX199BKBSnThi0", + "focus": -0.3186685509975969, + "gap": 19.239613826675395 + }, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "rectangle", + "version": 478, + "versionNonce": 1326509852, + "isDeleted": false, + "id": "OIC5giO4l0T4DCqfP2vpv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 212.76775058576942, + "y": 2199.4833034099493, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 256.7265625, + "height": 85.35869106320662, + "seed": 877186340, + "groupIds": [ + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1687097701758, + "link": null, + "locked": false + }, + { + "id": "gtlZssdx9vEhPCJkyDzke", + "type": "rectangle", + "x": 223.16593039958417, + "y": 2242.583812050935, + "width": 108, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 515520292, + "version": 279, + "versionNonce": 437133476, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "UhPC42zy-tSX0o8wG_RHQ" + } + ], + "updated": 1687097701758, + "link": null, + "locked": false + }, + { + "id": "UhPC42zy-tSX0o8wG_RHQ", + "type": "text", + "x": 233.88584769694745, + "y": 2247.583812050935, + "width": 86.56016540527344, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": null, + "seed": 1003980060, + "version": 264, + "versionNonce": 1843178396, + "isDeleted": false, + "boundElements": null, + "updated": 1687097701758, + "link": null, + "locked": false, + "text": "Room Name", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 14, + "containerId": "gtlZssdx9vEhPCJkyDzke", + "originalText": "Room Name", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "id": "WbujsAUQMow-eU9XchM6t", + "type": "rectangle", + "x": 348.2411356807791, + "y": 2243.347899929666, + "width": 108, + "height": 30, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1038877852, + "version": 360, + "versionNonce": 1816816676, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "_t34cGFTH4x6zTYtzhenU" + } + ], + "updated": 1687097701758, + "link": null, + "locked": false + }, + { + "id": "_t34cGFTH4x6zTYtzhenU", + "type": "text", + "x": 359.6170588375174, + "y": 2248.347899929666, + "width": 85.24815368652344, + "height": 20, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": null, + "seed": 1782129444, + "version": 354, + "versionNonce": 620550172, + "isDeleted": false, + "boundElements": null, + "updated": 1687097701758, + "link": null, + "locked": false, + "text": "Connected?", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 14, + "containerId": "WbujsAUQMow-eU9XchM6t", + "originalText": "Connected?", + "lineHeight": 1.25, + "isFrameName": false + }, + { + "type": "rectangle", + "version": 395, + "versionNonce": 1475430308, + "isDeleted": false, + "id": "mekieP1yT1FpNFNQ5YBXu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 226.96451871420453, + "y": 2202.2825329859306, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "width": 70.24781517862641, + "height": 35, + "seed": 1126781732, + "groupIds": [ + "tSfGuxkllWfXmSVLvbdjW", + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vmlJ2EnPg6UUVMNRbAjeR" + } + ], + "updated": 1687097701758, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 363, + "versionNonce": 1348695196, + "isDeleted": false, + "id": "vmlJ2EnPg6UUVMNRbAjeR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 238.2584473606467, + "y": 2207.2825329859306, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f08c00", + "width": 47.65995788574219, + "height": 25, + "seed": 1616596644, + "groupIds": [ + "tSfGuxkllWfXmSVLvbdjW", + "yNd50yKIv4dJ0Ycb_FDJU" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687097701758, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Back", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mekieP1yT1FpNFNQ5YBXu", + "originalText": "Back", + "lineHeight": 1.25, + "baseline": 18 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file From 9b414e6f66ef208c2f20854799cbf55f1f1cbf3f Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:18:50 +0000 Subject: [PATCH 12/74] import global css files --- client/ts-variant/src/index.css | 0 client/ts-variant/src/main.tsx | 6 +++++- client/ts-variant/src/styles/normalize.css | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) delete mode 100644 client/ts-variant/src/index.css create mode 100644 client/ts-variant/src/styles/normalize.css diff --git a/client/ts-variant/src/index.css b/client/ts-variant/src/index.css deleted file mode 100644 index e69de29..0000000 diff --git a/client/ts-variant/src/main.tsx b/client/ts-variant/src/main.tsx index 91c03f3..5f5d19c 100644 --- a/client/ts-variant/src/main.tsx +++ b/client/ts-variant/src/main.tsx @@ -1,7 +1,11 @@ import React from 'react' import ReactDOM from 'react-dom/client' import App from './App.tsx' -import './index.css' + +// Global CSS +import './styles/normalize.css' +import './styles/palettes.css' +import './styles/typography.css' ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( diff --git a/client/ts-variant/src/styles/normalize.css b/client/ts-variant/src/styles/normalize.css new file mode 100644 index 0000000..3b9126f --- /dev/null +++ b/client/ts-variant/src/styles/normalize.css @@ -0,0 +1,14 @@ +* { + margin: 0px; + padding: 0px; + box-sizing: border-box; +} + +a { + color: inherit; + text-decoration: inherit; +} + +li { + list-style-type: none; +} \ No newline at end of file From d5ddfa690e0aa886c66333b75591a34d2b10e618 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:19:24 +0000 Subject: [PATCH 13/74] add react-router --- client/ts-variant/package-lock.json | 25 ++++++++++++++++++++++++- client/ts-variant/package.json | 3 ++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json index a01ef9c..ea3c156 100644 --- a/client/ts-variant/package-lock.json +++ b/client/ts-variant/package-lock.json @@ -9,7 +9,8 @@ "version": "0.0.0", "dependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router": "^6.13.0" }, "devDependencies": { "@types/react": "^18.0.37", @@ -500,6 +501,14 @@ "node": ">= 8" } }, + "node_modules/@remix-run/router": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.6.3.tgz", + "integrity": "sha512-EXJysQ7J3veRECd0kZFQwYYd5sJMcq2O/m60zu1W2l3oVQ9xtub8jTOtYRE0+M2iomyG/W3Ps7+vp2kna0C27Q==", + "engines": { + "node": ">=14" + } + }, "node_modules/@swc/core": { "version": "1.3.64", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.64.tgz", @@ -2095,6 +2104,20 @@ "react": "^18.2.0" } }, + "node_modules/react-router": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.13.0.tgz", + "integrity": "sha512-Si6KnfEnJw7gUQkNa70dlpI1bul46FuSxX5t5WwlUBxE25DAz2BjVkwaK8Y2s242bQrZPXCpmwLPtIO5pv4tXg==", + "dependencies": { + "@remix-run/router": "1.6.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index b83d75b..3140cf3 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -11,7 +11,8 @@ }, "dependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router": "^6.13.0" }, "devDependencies": { "@types/react": "^18.0.37", From 14aaf1a33588c86e00f6993608b3b184155fccee Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:39:25 +0000 Subject: [PATCH 14/74] fix wrong dependency --- client/ts-variant/package-lock.json | 18 +++++++++++++++++- client/ts-variant/package.json | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json index ea3c156..d5ccf8e 100644 --- a/client/ts-variant/package-lock.json +++ b/client/ts-variant/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router": "^6.13.0" + "react-router-dom": "^6.13.0" }, "devDependencies": { "@types/react": "^18.0.37", @@ -2118,6 +2118,22 @@ "react": ">=16.8" } }, + "node_modules/react-router-dom": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.13.0.tgz", + "integrity": "sha512-6Nqoqd7fgwxxVGdbiMHTpDHCYPq62d7Wk1Of7B82vH7ZPwwsRaIa22zRZKPPg413R5REVNiyuQPKDG1bubcOFA==", + "dependencies": { + "@remix-run/router": "1.6.3", + "react-router": "6.13.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index 3140cf3..69124d2 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -12,7 +12,7 @@ "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router": "^6.13.0" + "react-router-dom": "^6.13.0" }, "devDependencies": { "@types/react": "^18.0.37", From 41130a6ae479cad2df7ec5c921382a1482566c6a Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:39:53 +0000 Subject: [PATCH 15/74] component: add AddRoom --- .../src/components/ToAddRoom/ToAddRoom.jsx | 16 ++++++++++++++++ .../src/components/ToAddRoom/style.module.css | 0 2 files changed, 16 insertions(+) create mode 100644 client/ts-variant/src/components/ToAddRoom/ToAddRoom.jsx create mode 100644 client/ts-variant/src/components/ToAddRoom/style.module.css diff --git a/client/ts-variant/src/components/ToAddRoom/ToAddRoom.jsx b/client/ts-variant/src/components/ToAddRoom/ToAddRoom.jsx new file mode 100644 index 0000000..c45d475 --- /dev/null +++ b/client/ts-variant/src/components/ToAddRoom/ToAddRoom.jsx @@ -0,0 +1,16 @@ +import style from './style.module.css' +import {useLocation} from "react-router" + +export function ToAddRoom() { + const location = useLocation() + + // Event Handlers + function navigateToAddRoom() { + console.log("Navigating to Add Room from: ") + console.log(location) + } + + return ( + + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/components/ToAddRoom/style.module.css b/client/ts-variant/src/components/ToAddRoom/style.module.css new file mode 100644 index 0000000..e69de29 From 16b823193ef111bcda0a87d9ffc40258cc84227b Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:40:08 +0000 Subject: [PATCH 16/74] component: Admin --- .../src/components/ToAdmin/ToAdmin.jsx | 16 ++++++++++++++++ .../src/components/ToAdmin/style.module.css | 0 2 files changed, 16 insertions(+) create mode 100644 client/ts-variant/src/components/ToAdmin/ToAdmin.jsx create mode 100644 client/ts-variant/src/components/ToAdmin/style.module.css diff --git a/client/ts-variant/src/components/ToAdmin/ToAdmin.jsx b/client/ts-variant/src/components/ToAdmin/ToAdmin.jsx new file mode 100644 index 0000000..1b25620 --- /dev/null +++ b/client/ts-variant/src/components/ToAdmin/ToAdmin.jsx @@ -0,0 +1,16 @@ +import style from './style.module.css' +import {useLocation} from "react-router" + +export function ToAdmin() { + const location = useLocation() + + // Event Handlers + function navigateToAdminPage() { + console.log("Navigating to Admin Page from: ") + console.log(location) + } + + return ( + + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/components/ToAdmin/style.module.css b/client/ts-variant/src/components/ToAdmin/style.module.css new file mode 100644 index 0000000..e69de29 From 9f316402848f175cfcafbfb72ece3f5c89990fd4 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:54:15 +0000 Subject: [PATCH 17/74] fix wrong file extension --- .../src/components/ToAddRoom/{ToAddRoom.jsx => ToAddRoom.tsx} | 0 .../src/components/ToAdmin/{ToAdmin.jsx => ToAdmin.tsx} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename client/ts-variant/src/components/ToAddRoom/{ToAddRoom.jsx => ToAddRoom.tsx} (100%) rename client/ts-variant/src/components/ToAdmin/{ToAdmin.jsx => ToAdmin.tsx} (100%) diff --git a/client/ts-variant/src/components/ToAddRoom/ToAddRoom.jsx b/client/ts-variant/src/components/ToAddRoom/ToAddRoom.tsx similarity index 100% rename from client/ts-variant/src/components/ToAddRoom/ToAddRoom.jsx rename to client/ts-variant/src/components/ToAddRoom/ToAddRoom.tsx diff --git a/client/ts-variant/src/components/ToAdmin/ToAdmin.jsx b/client/ts-variant/src/components/ToAdmin/ToAdmin.tsx similarity index 100% rename from client/ts-variant/src/components/ToAdmin/ToAdmin.jsx rename to client/ts-variant/src/components/ToAdmin/ToAdmin.tsx From 780e098d524fa188f639bd8006fcc247147197b5 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 14:57:44 +0000 Subject: [PATCH 18/74] update design sketch --- docs/design-sketch.excalidraw | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/design-sketch.excalidraw b/docs/design-sketch.excalidraw index f56b875..413f83b 100644 --- a/docs/design-sketch.excalidraw +++ b/docs/design-sketch.excalidraw @@ -3154,7 +3154,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093403838, "link": null, "locked": false, @@ -3190,7 +3190,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687092242358, "link": null, "locked": false, @@ -3226,7 +3226,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687092248188, "link": null, "locked": false, @@ -3436,7 +3436,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093142670, "link": null, "locked": false, @@ -3506,7 +3506,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093394026, "link": null, "locked": false, @@ -3576,7 +3576,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093142670, "link": null, "locked": false, @@ -3626,8 +3626,8 @@ }, { "type": "text", - "version": 1228, - "versionNonce": 1939467548, + "version": 1232, + "versionNonce": 1481472029, "isDeleted": false, "id": "vqA5gwfLxK0bDaAUmSGrL", "fillStyle": "hachure", @@ -3646,17 +3646,17 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, - "updated": 1687093142670, + "boundElements": [], + "updated": 1687100230900, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "\nChatRoom\n roomName: string\n isConnected: boolean\n postMessage: (message: ChatMessage) => Request\n onMessage: (newMessage: ChatMessage) => void\n", + "text": "\nChatRoom\n name: string\n isConnected: boolean\n postMessage: (message: ChatMessage) => Request\n onMessage: (newMessage: ChatMessage) => void\n", "textAlign": "left", "verticalAlign": "top", "containerId": "t976sP9wUqXHN-L6NZff7", - "originalText": "\nChatRoom\n roomName: string\n isConnected: boolean\n postMessage: (message: ChatMessage) => Request\n onMessage: (newMessage: ChatMessage) => void\n", + "originalText": "\nChatRoom\n name: string\n isConnected: boolean\n postMessage: (message: ChatMessage) => Request\n onMessage: (newMessage: ChatMessage) => void\n", "lineHeight": 1.2, "baseline": 163 }, @@ -3716,7 +3716,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093231534, "link": null, "locked": false, @@ -3786,7 +3786,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093219328, "link": null, "locked": false, @@ -3926,7 +3926,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687092224972, "link": null, "locked": false, @@ -3996,7 +3996,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687092267132, "link": null, "locked": false, @@ -4300,7 +4300,7 @@ "groupIds": [], "frameId": null, "roundness": null, - "boundElements": null, + "boundElements": [], "updated": 1687093264823, "link": null, "locked": false, From 0f451f109218cef9ec3fc277c91cfc37d06eeb8a Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 15:43:22 +0000 Subject: [PATCH 19/74] setup skeleton --- client/ts-variant/src/App.tsx | 27 ++++++++++--- .../src/components/RoomCard/RoomCard.tsx | 22 +++++++++++ .../RoomCard/style.module.css} | 0 .../src/components/RoomList/RoomList.tsx | 32 +++++++++++++++ .../src/components/RoomList/style.module.css | 0 client/ts-variant/src/mocks/MockRoomlist.ts | 39 +++++++++++++++++++ client/ts-variant/src/models/chatService.d.ts | 24 ++++++++++++ client/ts-variant/src/models/generic.d.ts | 17 ++++++++ client/ts-variant/src/routes/index.tsx | 23 +++++++++++ client/ts-variant/src/routes/style.module.css | 3 ++ 10 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 client/ts-variant/src/components/RoomCard/RoomCard.tsx rename client/ts-variant/src/{App.css => components/RoomCard/style.module.css} (100%) create mode 100644 client/ts-variant/src/components/RoomList/RoomList.tsx create mode 100644 client/ts-variant/src/components/RoomList/style.module.css create mode 100644 client/ts-variant/src/mocks/MockRoomlist.ts create mode 100644 client/ts-variant/src/models/chatService.d.ts create mode 100644 client/ts-variant/src/models/generic.d.ts create mode 100644 client/ts-variant/src/routes/index.tsx create mode 100644 client/ts-variant/src/routes/style.module.css diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index 882f4c6..3af661f 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -1,10 +1,27 @@ -import './App.css' +import { + BrowserRouter as Router, + Routes, + Route, + Navigate, +} from "react-router-dom" + +// Routes +import { Lobby } from "./routes" export default function App() { return ( -
-

Welcome to R-Mess

-

The TypeScript Variant

-
+ + + }> + Login} /> + Room} /> + Add new Room} /> + Admin Page} /> + + + {/* Redirect invalid links to the landing page */} + }/> + + ) } \ No newline at end of file diff --git a/client/ts-variant/src/components/RoomCard/RoomCard.tsx b/client/ts-variant/src/components/RoomCard/RoomCard.tsx new file mode 100644 index 0000000..93cbbab --- /dev/null +++ b/client/ts-variant/src/components/RoomCard/RoomCard.tsx @@ -0,0 +1,22 @@ +import { ChatRoom } from "../../models/chatService" +import style from "./style.module.css" + +interface RoomCardProps { + meta: ChatRoom, + onClick: (room: ChatRoom) => void +} + +export function RoomCard({ + meta, + onClick +}: RoomCardProps) { + function enterRoom() { + onClick(meta) + } + + return ( +
+

{`Room name: ${meta.name}`}

+
+ ) +} \ No newline at end of file diff --git a/client/ts-variant/src/App.css b/client/ts-variant/src/components/RoomCard/style.module.css similarity index 100% rename from client/ts-variant/src/App.css rename to client/ts-variant/src/components/RoomCard/style.module.css diff --git a/client/ts-variant/src/components/RoomList/RoomList.tsx b/client/ts-variant/src/components/RoomList/RoomList.tsx new file mode 100644 index 0000000..1d0291d --- /dev/null +++ b/client/ts-variant/src/components/RoomList/RoomList.tsx @@ -0,0 +1,32 @@ +import { useState } from 'react' + +import { mockList } from '../../mocks/MockRoomlist' +import { ChatRoom } from '../../models/chatService' +import { RoomCard } from '../RoomCard/RoomCard' + +import style from './style.module.css' + +export function RoomList() { + const [rooms, setRooms] = useState(mockList) + + // Event Handlers + function navigateToRoom(room: ChatRoom) { + console.log(`Navigating to room: ${room.name}`) + } + + return ( +
    + { + rooms.map( + (room) => { + return ( +
  • + +
  • + ) + } + ) + } +
+ ) +} \ No newline at end of file diff --git a/client/ts-variant/src/components/RoomList/style.module.css b/client/ts-variant/src/components/RoomList/style.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/mocks/MockRoomlist.ts b/client/ts-variant/src/mocks/MockRoomlist.ts new file mode 100644 index 0000000..5161019 --- /dev/null +++ b/client/ts-variant/src/mocks/MockRoomlist.ts @@ -0,0 +1,39 @@ +// A collection of mocking functionality for a the room list + +import { ChatRoom, RequestError, RequestSuccess } from "../models/chatService" +import { ChatMessage } from "../models/generic" + +function mockPost(message: ChatMessage) { + console.log("Posting new message", message) + + return new Promise((resolve, reject) => { + resolve({ + success: true, + error: undefined + }) + + reject({ + success: false, + error: {message: "Failed posting message", error: "oh noes"} + }) + }) +} + +function mockNewMessage(newMessage: ChatMessage) { + console.log(newMessage) +} + +export const mockList: ChatRoom[] = [ + { + name: "common-room", + isConnected: true, + postMessage: (message: ChatMessage) => mockPost(message), + onMessage: mockNewMessage + }, + { + name: "kings-room", + isConnected: true, + postMessage: (message: ChatMessage) => mockPost(message), + onMessage: mockNewMessage + }, +] \ No newline at end of file diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts new file mode 100644 index 0000000..ad59bfb --- /dev/null +++ b/client/ts-variant/src/models/chatService.d.ts @@ -0,0 +1,24 @@ +export type Request = Promise | RequestError>; +export type RequestSuccess = {success: T, error?: ErrorContainer} +export type RequestError = {success: false, error: ErrorContainer} + +export type RoomName = string; + +export interface ChatRoom { + name: RoomName, + isConnected: boolean, + postMessage: (message: ChatMessage) => Request, + onMessage: (newMessage: ChatMessage) => void, +} + +export interface ChatServer { + subscriptions: ChatRoom[], + subscribe: (roomName: RoomName) => Request, + unsubscribe: (roomName: RoomName) => void +} + +export interface ChatService { + isConnected: boolean, + connect: () => Request, + disconnect: () => void +} \ No newline at end of file diff --git a/client/ts-variant/src/models/generic.d.ts b/client/ts-variant/src/models/generic.d.ts new file mode 100644 index 0000000..1eb5acd --- /dev/null +++ b/client/ts-variant/src/models/generic.d.ts @@ -0,0 +1,17 @@ +export type User = { + id: UserID, + alias: string +} + +export type ChatMessage = { + id: MessageID, + author: User, + body: string, + createdAt: DateTime, +}; + +export type UserID = string; +export type MessageID = string; +export type DateTime = string; + +export type ErrorContainer = {message: string, error: any} \ No newline at end of file diff --git a/client/ts-variant/src/routes/index.tsx b/client/ts-variant/src/routes/index.tsx new file mode 100644 index 0000000..cdd228f --- /dev/null +++ b/client/ts-variant/src/routes/index.tsx @@ -0,0 +1,23 @@ +import style from "./style.module.css" + +import { ToAdmin } from "../components/ToAdmin/ToAdmin" +import { ToAddRoom } from "../components/ToAddRoom/ToAddRoom" +import { RoomList } from "../components/RoomList/RoomList" + +/** + * This is the default landing page + */ +export function Lobby() { + return ( +
+
+ + +
+ +
+ +
+
+ ) +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/style.module.css b/client/ts-variant/src/routes/style.module.css new file mode 100644 index 0000000..37c9e4e --- /dev/null +++ b/client/ts-variant/src/routes/style.module.css @@ -0,0 +1,3 @@ +.Lobby { + +} \ No newline at end of file From 5d34c150d2ef9b39bf52949dc7972315d04050f9 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 15:46:59 +0000 Subject: [PATCH 20/74] add prettier --- client/ts-variant/.eslintrc.cjs | 1 + client/ts-variant/.prettierignore | 27 +++++++++++++++++++++++++++ client/ts-variant/.prettierrc.cjs | 1 + client/ts-variant/package-lock.json | 29 +++++++++++++++++++++++++++++ client/ts-variant/package.json | 2 ++ 5 files changed, 60 insertions(+) create mode 100644 client/ts-variant/.prettierignore create mode 100644 client/ts-variant/.prettierrc.cjs diff --git a/client/ts-variant/.eslintrc.cjs b/client/ts-variant/.eslintrc.cjs index 4020bcb..f4d37dc 100644 --- a/client/ts-variant/.eslintrc.cjs +++ b/client/ts-variant/.eslintrc.cjs @@ -4,6 +4,7 @@ module.exports = { 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', + 'prettier', ], parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, diff --git a/client/ts-variant/.prettierignore b/client/ts-variant/.prettierignore new file mode 100644 index 0000000..414ad7a --- /dev/null +++ b/client/ts-variant/.prettierignore @@ -0,0 +1,27 @@ +# Generated files +package-lock.json + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/client/ts-variant/.prettierrc.cjs b/client/ts-variant/.prettierrc.cjs new file mode 100644 index 0000000..4ba52ba --- /dev/null +++ b/client/ts-variant/.prettierrc.cjs @@ -0,0 +1 @@ +module.exports = {} diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json index d5ccf8e..503a599 100644 --- a/client/ts-variant/package-lock.json +++ b/client/ts-variant/package-lock.json @@ -19,8 +19,10 @@ "@typescript-eslint/parser": "^5.59.0", "@vitejs/plugin-react-swc": "^3.0.0", "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.3.4", + "prettier": "2.8.8", "typescript": "^5.0.2", "vite": "^4.3.9" } @@ -1272,6 +1274,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", @@ -2052,6 +2066,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index 69124d2..2ea2c39 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -21,8 +21,10 @@ "@typescript-eslint/parser": "^5.59.0", "@vitejs/plugin-react-swc": "^3.0.0", "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.3.4", + "prettier": "2.8.8", "typescript": "^5.0.2", "vite": "^4.3.9" } From 0122128ed4820c46fcd3a2af8020e88c46c171ba Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 15:47:27 +0000 Subject: [PATCH 21/74] format project --- client/ts-variant/.eslintrc.cjs | 18 ++++----- client/ts-variant/.prettierrc.cjs | 2 +- client/ts-variant/index.html | 9 +++-- client/ts-variant/src/App.tsx | 10 ++--- .../src/components/RoomCard/RoomCard.tsx | 19 ++++------ .../src/components/RoomList/RoomList.tsx | 38 +++++++++---------- .../src/components/ToAddRoom/ToAddRoom.tsx | 18 +++++---- .../src/components/ToAdmin/ToAdmin.tsx | 18 +++++---- client/ts-variant/src/main.tsx | 18 ++++----- client/ts-variant/src/mocks/MockRoomlist.ts | 24 ++++++------ client/ts-variant/src/models/chatService.d.ts | 26 ++++++------- client/ts-variant/src/models/generic.d.ts | 16 ++++---- client/ts-variant/src/routes/index.tsx | 12 +++--- client/ts-variant/src/routes/style.module.css | 3 +- client/ts-variant/src/styles/normalize.css | 2 +- client/ts-variant/src/styles/palettes.css | 3 +- client/ts-variant/src/styles/typography.css | 4 +- client/ts-variant/vite.config.ts | 6 +-- 18 files changed, 122 insertions(+), 124 deletions(-) diff --git a/client/ts-variant/.eslintrc.cjs b/client/ts-variant/.eslintrc.cjs index f4d37dc..c2f7d0d 100644 --- a/client/ts-variant/.eslintrc.cjs +++ b/client/ts-variant/.eslintrc.cjs @@ -1,15 +1,15 @@ module.exports = { env: { browser: true, es2020: true }, extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:react-hooks/recommended', - 'prettier', + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended", + "prettier", ], - parser: '@typescript-eslint/parser', - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - plugins: ['react-refresh'], + parser: "@typescript-eslint/parser", + parserOptions: { ecmaVersion: "latest", sourceType: "module" }, + plugins: ["react-refresh"], rules: { - 'react-refresh/only-export-components': 'warn', + "react-refresh/only-export-components": "warn", }, -} +}; diff --git a/client/ts-variant/.prettierrc.cjs b/client/ts-variant/.prettierrc.cjs index 4ba52ba..f053ebf 100644 --- a/client/ts-variant/.prettierrc.cjs +++ b/client/ts-variant/.prettierrc.cjs @@ -1 +1 @@ -module.exports = {} +module.exports = {}; diff --git a/client/ts-variant/index.html b/client/ts-variant/index.html index 1b2a3fd..3cc1f46 100644 --- a/client/ts-variant/index.html +++ b/client/ts-variant/index.html @@ -5,9 +5,12 @@ - - - + + + R-Mess diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index 3af661f..1df3e00 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -3,10 +3,10 @@ import { Routes, Route, Navigate, -} from "react-router-dom" +} from "react-router-dom"; // Routes -import { Lobby } from "./routes" +import { Lobby } from "./routes"; export default function App() { return ( @@ -20,8 +20,8 @@ export default function App() { {/* Redirect invalid links to the landing page */} - }/> + } /> - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/components/RoomCard/RoomCard.tsx b/client/ts-variant/src/components/RoomCard/RoomCard.tsx index 93cbbab..fe326c9 100644 --- a/client/ts-variant/src/components/RoomCard/RoomCard.tsx +++ b/client/ts-variant/src/components/RoomCard/RoomCard.tsx @@ -1,22 +1,19 @@ -import { ChatRoom } from "../../models/chatService" -import style from "./style.module.css" +import { ChatRoom } from "../../models/chatService"; +import style from "./style.module.css"; interface RoomCardProps { - meta: ChatRoom, - onClick: (room: ChatRoom) => void + meta: ChatRoom; + onClick: (room: ChatRoom) => void; } -export function RoomCard({ - meta, - onClick -}: RoomCardProps) { +export function RoomCard({ meta, onClick }: RoomCardProps) { function enterRoom() { - onClick(meta) + onClick(meta); } return (

{`Room name: ${meta.name}`}

- ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/components/RoomList/RoomList.tsx b/client/ts-variant/src/components/RoomList/RoomList.tsx index 1d0291d..89f9d20 100644 --- a/client/ts-variant/src/components/RoomList/RoomList.tsx +++ b/client/ts-variant/src/components/RoomList/RoomList.tsx @@ -1,32 +1,28 @@ -import { useState } from 'react' +import { useState } from "react"; -import { mockList } from '../../mocks/MockRoomlist' -import { ChatRoom } from '../../models/chatService' -import { RoomCard } from '../RoomCard/RoomCard' +import { mockList } from "../../mocks/MockRoomlist"; +import { ChatRoom } from "../../models/chatService"; +import { RoomCard } from "../RoomCard/RoomCard"; -import style from './style.module.css' +import style from "./style.module.css"; export function RoomList() { - const [rooms, setRooms] = useState(mockList) + const [rooms, setRooms] = useState(mockList); // Event Handlers function navigateToRoom(room: ChatRoom) { - console.log(`Navigating to room: ${room.name}`) + console.log(`Navigating to room: ${room.name}`); } return ( -
    - { - rooms.map( - (room) => { - return ( -
  • - -
  • - ) - } - ) - } +
      + {rooms.map((room) => { + return ( +
    • + +
    • + ); + })}
    - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/components/ToAddRoom/ToAddRoom.tsx b/client/ts-variant/src/components/ToAddRoom/ToAddRoom.tsx index c45d475..58a5ff2 100644 --- a/client/ts-variant/src/components/ToAddRoom/ToAddRoom.tsx +++ b/client/ts-variant/src/components/ToAddRoom/ToAddRoom.tsx @@ -1,16 +1,18 @@ -import style from './style.module.css' -import {useLocation} from "react-router" +import style from "./style.module.css"; +import { useLocation } from "react-router"; export function ToAddRoom() { - const location = useLocation() + const location = useLocation(); // Event Handlers function navigateToAddRoom() { - console.log("Navigating to Add Room from: ") - console.log(location) + console.log("Navigating to Add Room from: "); + console.log(location); } return ( - - ) -} \ No newline at end of file + + ); +} diff --git a/client/ts-variant/src/components/ToAdmin/ToAdmin.tsx b/client/ts-variant/src/components/ToAdmin/ToAdmin.tsx index 1b25620..c4a2f2f 100644 --- a/client/ts-variant/src/components/ToAdmin/ToAdmin.tsx +++ b/client/ts-variant/src/components/ToAdmin/ToAdmin.tsx @@ -1,16 +1,18 @@ -import style from './style.module.css' -import {useLocation} from "react-router" +import style from "./style.module.css"; +import { useLocation } from "react-router"; export function ToAdmin() { - const location = useLocation() + const location = useLocation(); // Event Handlers function navigateToAdminPage() { - console.log("Navigating to Admin Page from: ") - console.log(location) + console.log("Navigating to Admin Page from: "); + console.log(location); } return ( - - ) -} \ No newline at end of file + + ); +} diff --git a/client/ts-variant/src/main.tsx b/client/ts-variant/src/main.tsx index 5f5d19c..bc6acac 100644 --- a/client/ts-variant/src/main.tsx +++ b/client/ts-variant/src/main.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.tsx' +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.tsx"; // Global CSS -import './styles/normalize.css' -import './styles/palettes.css' -import './styles/typography.css' +import "./styles/normalize.css"; +import "./styles/palettes.css"; +import "./styles/typography.css"; -ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( +ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - , -) + +); diff --git a/client/ts-variant/src/mocks/MockRoomlist.ts b/client/ts-variant/src/mocks/MockRoomlist.ts index 5161019..60890f8 100644 --- a/client/ts-variant/src/mocks/MockRoomlist.ts +++ b/client/ts-variant/src/mocks/MockRoomlist.ts @@ -1,26 +1,26 @@ // A collection of mocking functionality for a the room list -import { ChatRoom, RequestError, RequestSuccess } from "../models/chatService" -import { ChatMessage } from "../models/generic" +import { ChatRoom, RequestError, RequestSuccess } from "../models/chatService"; +import { ChatMessage } from "../models/generic"; function mockPost(message: ChatMessage) { - console.log("Posting new message", message) + console.log("Posting new message", message); return new Promise((resolve, reject) => { resolve({ success: true, - error: undefined - }) + error: undefined, + }); reject({ success: false, - error: {message: "Failed posting message", error: "oh noes"} - }) - }) + error: { message: "Failed posting message", error: "oh noes" }, + }); + }); } function mockNewMessage(newMessage: ChatMessage) { - console.log(newMessage) + console.log(newMessage); } export const mockList: ChatRoom[] = [ @@ -28,12 +28,12 @@ export const mockList: ChatRoom[] = [ name: "common-room", isConnected: true, postMessage: (message: ChatMessage) => mockPost(message), - onMessage: mockNewMessage + onMessage: mockNewMessage, }, { name: "kings-room", isConnected: true, postMessage: (message: ChatMessage) => mockPost(message), - onMessage: mockNewMessage + onMessage: mockNewMessage, }, -] \ No newline at end of file +]; diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index ad59bfb..b402ded 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -1,24 +1,24 @@ export type Request = Promise | RequestError>; -export type RequestSuccess = {success: T, error?: ErrorContainer} -export type RequestError = {success: false, error: ErrorContainer} +export type RequestSuccess = { success: T; error?: ErrorContainer }; +export type RequestError = { success: false; error: ErrorContainer }; export type RoomName = string; export interface ChatRoom { - name: RoomName, - isConnected: boolean, - postMessage: (message: ChatMessage) => Request, - onMessage: (newMessage: ChatMessage) => void, + name: RoomName; + isConnected: boolean; + postMessage: (message: ChatMessage) => Request; + onMessage: (newMessage: ChatMessage) => void; } export interface ChatServer { - subscriptions: ChatRoom[], - subscribe: (roomName: RoomName) => Request, - unsubscribe: (roomName: RoomName) => void + subscriptions: ChatRoom[]; + subscribe: (roomName: RoomName) => Request; + unsubscribe: (roomName: RoomName) => void; } export interface ChatService { - isConnected: boolean, - connect: () => Request, - disconnect: () => void -} \ No newline at end of file + isConnected: boolean; + connect: () => Request; + disconnect: () => void; +} diff --git a/client/ts-variant/src/models/generic.d.ts b/client/ts-variant/src/models/generic.d.ts index 1eb5acd..8a0071e 100644 --- a/client/ts-variant/src/models/generic.d.ts +++ b/client/ts-variant/src/models/generic.d.ts @@ -1,17 +1,17 @@ export type User = { - id: UserID, - alias: string -} + id: UserID; + alias: string; +}; export type ChatMessage = { - id: MessageID, - author: User, - body: string, - createdAt: DateTime, + id: MessageID; + author: User; + body: string; + createdAt: DateTime; }; export type UserID = string; export type MessageID = string; export type DateTime = string; -export type ErrorContainer = {message: string, error: any} \ No newline at end of file +export type ErrorContainer = { message: string; error: any }; diff --git a/client/ts-variant/src/routes/index.tsx b/client/ts-variant/src/routes/index.tsx index cdd228f..191c92a 100644 --- a/client/ts-variant/src/routes/index.tsx +++ b/client/ts-variant/src/routes/index.tsx @@ -1,8 +1,8 @@ -import style from "./style.module.css" +import style from "./style.module.css"; -import { ToAdmin } from "../components/ToAdmin/ToAdmin" -import { ToAddRoom } from "../components/ToAddRoom/ToAddRoom" -import { RoomList } from "../components/RoomList/RoomList" +import { ToAdmin } from "../components/ToAdmin/ToAdmin"; +import { ToAddRoom } from "../components/ToAddRoom/ToAddRoom"; +import { RoomList } from "../components/RoomList/RoomList"; /** * This is the default landing page @@ -19,5 +19,5 @@ export function Lobby() { - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/routes/style.module.css b/client/ts-variant/src/routes/style.module.css index 37c9e4e..9b469e1 100644 --- a/client/ts-variant/src/routes/style.module.css +++ b/client/ts-variant/src/routes/style.module.css @@ -1,3 +1,2 @@ .Lobby { - -} \ No newline at end of file +} diff --git a/client/ts-variant/src/styles/normalize.css b/client/ts-variant/src/styles/normalize.css index 3b9126f..30aff04 100644 --- a/client/ts-variant/src/styles/normalize.css +++ b/client/ts-variant/src/styles/normalize.css @@ -11,4 +11,4 @@ a { li { list-style-type: none; -} \ No newline at end of file +} diff --git a/client/ts-variant/src/styles/palettes.css b/client/ts-variant/src/styles/palettes.css index 2e44019..45da95d 100644 --- a/client/ts-variant/src/styles/palettes.css +++ b/client/ts-variant/src/styles/palettes.css @@ -40,7 +40,6 @@ --color-accent-950: var(--color-rose-950); } - /* All the colors */ :root { /* Pallets borrowed from @@ -330,4 +329,4 @@ --color-rose-800: #9f1239; --color-rose-900: #881337; --color-rose-950: #4c0519; -} \ No newline at end of file +} diff --git a/client/ts-variant/src/styles/typography.css b/client/ts-variant/src/styles/typography.css index f9818ae..905ff51 100644 --- a/client/ts-variant/src/styles/typography.css +++ b/client/ts-variant/src/styles/typography.css @@ -1,3 +1,3 @@ :root { - font-family: 'Oswald', sans-serif; -} \ No newline at end of file + font-family: "Oswald", sans-serif; +} diff --git a/client/ts-variant/vite.config.ts b/client/ts-variant/vite.config.ts index 861b04b..d366e8c 100644 --- a/client/ts-variant/vite.config.ts +++ b/client/ts-variant/vite.config.ts @@ -1,7 +1,7 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react-swc' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], -}) +}); From 11bb0d055c99aa0a69b508998ced628648bab5c0 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 15:48:28 +0000 Subject: [PATCH 22/74] setup script --- client/ts-variant/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index 2ea2c39..6bc0561 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -6,6 +6,7 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", + "format": "prettier --write --cache .", "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, From 510a929937b40e0e2a2ee4dd21bbd6db2c8388ad Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 15:56:58 +0000 Subject: [PATCH 23/74] add skeleton routes components --- client/ts-variant/src/App.tsx | 12 ++++++++---- client/ts-variant/src/routes/addRoom/index.tsx | 9 +++++++++ .../ts-variant/src/routes/addRoom/style.module.css | 0 client/ts-variant/src/routes/admin/index.tsx | 9 +++++++++ client/ts-variant/src/routes/admin/style.module.css | 0 client/ts-variant/src/routes/login/index.tsx | 9 +++++++++ client/ts-variant/src/routes/login/style.module.css | 0 client/ts-variant/src/routes/room/index.tsx | 9 +++++++++ client/ts-variant/src/routes/room/style.module.css | 0 9 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 client/ts-variant/src/routes/addRoom/index.tsx create mode 100644 client/ts-variant/src/routes/addRoom/style.module.css create mode 100644 client/ts-variant/src/routes/admin/index.tsx create mode 100644 client/ts-variant/src/routes/admin/style.module.css create mode 100644 client/ts-variant/src/routes/login/index.tsx create mode 100644 client/ts-variant/src/routes/login/style.module.css create mode 100644 client/ts-variant/src/routes/room/index.tsx create mode 100644 client/ts-variant/src/routes/room/style.module.css diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index 1df3e00..33fbf53 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -7,16 +7,20 @@ import { // Routes import { Lobby } from "./routes"; +import { AddRoom } from "./routes/addRoom"; +import { Admin } from "./routes/admin"; +import { Login } from "./routes/login"; +import { Room } from "./routes/room"; export default function App() { return ( }> - Login} /> - Room} /> - Add new Room} /> - Admin Page} /> + } /> + } /> + } /> + } /> {/* Redirect invalid links to the landing page */} diff --git a/client/ts-variant/src/routes/addRoom/index.tsx b/client/ts-variant/src/routes/addRoom/index.tsx new file mode 100644 index 0000000..d306014 --- /dev/null +++ b/client/ts-variant/src/routes/addRoom/index.tsx @@ -0,0 +1,9 @@ +import style from "./style.module.css" + +export function AddRoom() { + return( +
    +

    Login

    +
    + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/addRoom/style.module.css b/client/ts-variant/src/routes/addRoom/style.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/routes/admin/index.tsx b/client/ts-variant/src/routes/admin/index.tsx new file mode 100644 index 0000000..d943a32 --- /dev/null +++ b/client/ts-variant/src/routes/admin/index.tsx @@ -0,0 +1,9 @@ +import style from "./style.module.css" + +export function Admin() { + return( +
    +

    Login

    +
    + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/admin/style.module.css b/client/ts-variant/src/routes/admin/style.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/routes/login/index.tsx b/client/ts-variant/src/routes/login/index.tsx new file mode 100644 index 0000000..0ca643c --- /dev/null +++ b/client/ts-variant/src/routes/login/index.tsx @@ -0,0 +1,9 @@ +import style from "./style.module.css" + +export function Login() { + return( +
    +

    Login

    +
    + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/login/style.module.css b/client/ts-variant/src/routes/login/style.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/routes/room/index.tsx b/client/ts-variant/src/routes/room/index.tsx new file mode 100644 index 0000000..afbff73 --- /dev/null +++ b/client/ts-variant/src/routes/room/index.tsx @@ -0,0 +1,9 @@ +import style from "./style.module.css" + +export function Room() { + return( +
    +

    Room

    +
    + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/room/style.module.css b/client/ts-variant/src/routes/room/style.module.css new file mode 100644 index 0000000..e69de29 From 2861cfaf4a57f86a4b1101d09342bffb6aeafced Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:02:51 +0000 Subject: [PATCH 24/74] add mock not connected --- client/ts-variant/src/mocks/MockRoomlist.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/ts-variant/src/mocks/MockRoomlist.ts b/client/ts-variant/src/mocks/MockRoomlist.ts index 60890f8..d20860f 100644 --- a/client/ts-variant/src/mocks/MockRoomlist.ts +++ b/client/ts-variant/src/mocks/MockRoomlist.ts @@ -36,4 +36,10 @@ export const mockList: ChatRoom[] = [ postMessage: (message: ChatMessage) => mockPost(message), onMessage: mockNewMessage, }, + { + name: "bastards-barracks", + isConnected: false, + postMessage: (message: ChatMessage) => mockPost(message), + onMessage: mockNewMessage, + }, ]; From 9507b79424045c4daf43eff58e2b9f9f432085ca Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:03:15 +0000 Subject: [PATCH 25/74] add guard against room not connected --- client/ts-variant/src/components/RoomCard/RoomCard.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/ts-variant/src/components/RoomCard/RoomCard.tsx b/client/ts-variant/src/components/RoomCard/RoomCard.tsx index fe326c9..3e4b41f 100644 --- a/client/ts-variant/src/components/RoomCard/RoomCard.tsx +++ b/client/ts-variant/src/components/RoomCard/RoomCard.tsx @@ -7,7 +7,13 @@ interface RoomCardProps { } export function RoomCard({ meta, onClick }: RoomCardProps) { + + // Event handlers function enterRoom() { + if (!meta.isConnected) { + console.log("No connections to room") + return + } onClick(meta); } From 0158ef9b52ef2209095cfda9f625b9ce83533836 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:05:30 +0000 Subject: [PATCH 26/74] add nats.ws --- client/ts-variant/package-lock.json | 27 +++++++++++++++++++++++++++ client/ts-variant/package.json | 1 + 2 files changed, 28 insertions(+) diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json index 503a599..5ebfeb7 100644 --- a/client/ts-variant/package-lock.json +++ b/client/ts-variant/package-lock.json @@ -8,6 +8,7 @@ "name": "r-mess-client-ts", "version": "0.0.0", "dependencies": { + "nats.ws": "^1.16.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.13.0" @@ -1895,6 +1896,14 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/nats.ws": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/nats.ws/-/nats.ws-1.16.0.tgz", + "integrity": "sha512-buPOKXlUneCcEJ2rzdMoshlx0oLjGbycIQWuB3Ip8hJMDsqKl0muV9m1cGOx55XOAdH4JxCAnqK11Qg+e8lphg==", + "optionalDependencies": { + "nkeys.js": "1.0.5" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1907,6 +1916,18 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/nkeys.js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nkeys.js/-/nkeys.js-1.0.5.tgz", + "integrity": "sha512-u25YnRPHiGVsNzwyHnn+PT90sgAhnS8jUJ1nxmkHMFYCJ6+Ic0lv291w7uhRBpJVJ3PH2GWbYqA151lGCRrB5g==", + "optional": true, + "dependencies": { + "tweetnacl": "1.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2373,6 +2394,12 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "optional": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index 6bc0561..9de79e0 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -11,6 +11,7 @@ "preview": "vite preview" }, "dependencies": { + "nats.ws": "^1.16.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.13.0" From 3dfaaa81546bc49b25198d8650257e31289fb758 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:19:00 +0000 Subject: [PATCH 27/74] refactor rename --- client/ts-variant/src/models/chatService.d.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index b402ded..ac5fd55 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -1,4 +1,4 @@ -export type Request = Promise | RequestError>; +export type ChatServreRequest = Promise | RequestError>; export type RequestSuccess = { success: T; error?: ErrorContainer }; export type RequestError = { success: false; error: ErrorContainer }; @@ -7,18 +7,18 @@ export type RoomName = string; export interface ChatRoom { name: RoomName; isConnected: boolean; - postMessage: (message: ChatMessage) => Request; + postMessage: (message: ChatMessage) => ChatServreRequest; onMessage: (newMessage: ChatMessage) => void; } export interface ChatServer { subscriptions: ChatRoom[]; - subscribe: (roomName: RoomName) => Request; + subscribe: (roomName: RoomName) => ChatServreRequest; unsubscribe: (roomName: RoomName) => void; } export interface ChatService { isConnected: boolean; - connect: () => Request; + connect: () => ChatServreRequest; disconnect: () => void; } From 409e213e80a1a2e750e61b75b22f8c21d8f1e2d6 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:27:49 +0000 Subject: [PATCH 28/74] refactor rename --- client/ts-variant/src/models/chatService.d.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index ac5fd55..8e8bdd3 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -1,4 +1,4 @@ -export type ChatServreRequest = Promise | RequestError>; +export type ChatServerRequest = Promise | RequestError>; export type RequestSuccess = { success: T; error?: ErrorContainer }; export type RequestError = { success: false; error: ErrorContainer }; @@ -7,18 +7,18 @@ export type RoomName = string; export interface ChatRoom { name: RoomName; isConnected: boolean; - postMessage: (message: ChatMessage) => ChatServreRequest; + postMessage: (message: ChatMessage) => ChatServerRequest; onMessage: (newMessage: ChatMessage) => void; } export interface ChatServer { subscriptions: ChatRoom[]; - subscribe: (roomName: RoomName) => ChatServreRequest; + subscribe: (roomName: RoomName) => ChatServerRequest; unsubscribe: (roomName: RoomName) => void; } export interface ChatService { isConnected: boolean; - connect: () => ChatServreRequest; + connect: () => ChatServerRequest; disconnect: () => void; } From 3f573fa40fb6ccada1e9dc78d72ab05b6c90a9e5 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:31:22 +0000 Subject: [PATCH 29/74] add specific name to server --- client/ts-variant/src/models/chatService.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 8e8bdd3..189bafc 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -3,6 +3,7 @@ export type RequestSuccess = { success: T; error?: ErrorContainer }; export type RequestError = { success: false; error: ErrorContainer }; export type RoomName = string; +export type ServerName = string; export interface ChatRoom { name: RoomName; @@ -12,6 +13,7 @@ export interface ChatRoom { } export interface ChatServer { + name: ServerName; subscriptions: ChatRoom[]; subscribe: (roomName: RoomName) => ChatServerRequest; unsubscribe: (roomName: RoomName) => void; From 7d8b9620eba1432055955bb7e9f0ad5396caac7d Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:33:10 +0000 Subject: [PATCH 30/74] add field list of servers --- client/ts-variant/src/models/chatService.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 189bafc..1c0ba85 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -21,6 +21,7 @@ export interface ChatServer { export interface ChatService { isConnected: boolean; + serverList: ChatServer[]; connect: () => ChatServerRequest; disconnect: () => void; } From b2876a73593e8eca14f6c88b6a1aee33bcbcd4dd Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:35:29 +0000 Subject: [PATCH 31/74] switch to server ids --- client/ts-variant/src/models/chatService.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 1c0ba85..8845937 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -3,7 +3,7 @@ export type RequestSuccess = { success: T; error?: ErrorContainer }; export type RequestError = { success: false; error: ErrorContainer }; export type RoomName = string; -export type ServerName = string; +export type ServerID = string; export interface ChatRoom { name: RoomName; @@ -13,7 +13,7 @@ export interface ChatRoom { } export interface ChatServer { - name: ServerName; + id: ServerID; subscriptions: ChatRoom[]; subscribe: (roomName: RoomName) => ChatServerRequest; unsubscribe: (roomName: RoomName) => void; From dc0b168913d6b82e9d66f7f06fcf808543fad4b4 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 16:45:04 +0000 Subject: [PATCH 32/74] add type serverUrl --- client/ts-variant/src/models/chatService.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 8845937..0b7bb2d 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -4,6 +4,8 @@ export type RequestError = { success: false; error: ErrorContainer }; export type RoomName = string; export type ServerID = string; +export type ServerURL = `ws://${string}:${number}`; + export interface ChatRoom { name: RoomName; From 3b318acdb0770f463bf460f921835ec820b47dae Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 17:01:06 +0000 Subject: [PATCH 33/74] add dep uuid --- client/ts-variant/package-lock.json | 11 ++++++++++- client/ts-variant/package.json | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json index 5ebfeb7..7d2ca04 100644 --- a/client/ts-variant/package-lock.json +++ b/client/ts-variant/package-lock.json @@ -11,7 +11,8 @@ "nats.ws": "^1.16.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.13.0" + "react-router-dom": "^6.13.0", + "uuid": "^9.0.0" }, "devDependencies": { "@types/react": "^18.0.37", @@ -2446,6 +2447,14 @@ "punycode": "^2.1.0" } }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vite": { "version": "4.3.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index 9de79e0..70b8362 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -14,7 +14,8 @@ "nats.ws": "^1.16.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.13.0" + "react-router-dom": "^6.13.0", + "uuid": "^9.0.0" }, "devDependencies": { "@types/react": "^18.0.37", From ceb7205017d238d445abc0ef256c6de8a9ca7884 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 17:02:31 +0000 Subject: [PATCH 34/74] add types for uuid --- client/ts-variant/package-lock.json | 7 +++++++ client/ts-variant/package.json | 1 + 2 files changed, 8 insertions(+) diff --git a/client/ts-variant/package-lock.json b/client/ts-variant/package-lock.json index 7d2ca04..b4340e9 100644 --- a/client/ts-variant/package-lock.json +++ b/client/ts-variant/package-lock.json @@ -17,6 +17,7 @@ "devDependencies": { "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", + "@types/uuid": "^9.0.2", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "@vitejs/plugin-react-swc": "^3.0.0", @@ -751,6 +752,12 @@ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, + "node_modules/@types/uuid": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", + "dev": true + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.59.11", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.11.tgz", diff --git a/client/ts-variant/package.json b/client/ts-variant/package.json index 70b8362..440ce0c 100644 --- a/client/ts-variant/package.json +++ b/client/ts-variant/package.json @@ -20,6 +20,7 @@ "devDependencies": { "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", + "@types/uuid": "^9.0.2", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "@vitejs/plugin-react-swc": "^3.0.0", From 1fb4be65d81226de8206f5e745ed5ff4062e9b3c Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 17:24:59 +0000 Subject: [PATCH 35/74] setup chat service files --- client/ts-variant/src/chatService/chatRoom.ts | 0 client/ts-variant/src/chatService/chatServer.ts | 0 client/ts-variant/src/chatService/chatService.ts | 0 client/ts-variant/src/chatService/index.ts | 0 client/ts-variant/src/models/chatService.d.ts | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 client/ts-variant/src/chatService/chatRoom.ts create mode 100644 client/ts-variant/src/chatService/chatServer.ts create mode 100644 client/ts-variant/src/chatService/chatService.ts create mode 100644 client/ts-variant/src/chatService/index.ts diff --git a/client/ts-variant/src/chatService/chatRoom.ts b/client/ts-variant/src/chatService/chatRoom.ts new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/chatService/chatServer.ts b/client/ts-variant/src/chatService/chatServer.ts new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/chatService/chatService.ts b/client/ts-variant/src/chatService/chatService.ts new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/chatService/index.ts b/client/ts-variant/src/chatService/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 0b7bb2d..993ed0f 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -24,6 +24,6 @@ export interface ChatServer { export interface ChatService { isConnected: boolean; serverList: ChatServer[]; - connect: () => ChatServerRequest; + connect: (serverURL: ServerURL) => ChatServerRequest; disconnect: () => void; } From 5605da8a6cf905796583740e575461d9cc9494af Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 18:30:32 +0000 Subject: [PATCH 36/74] format --- client/ts-variant/src/components/RoomCard/RoomCard.tsx | 5 ++--- client/ts-variant/src/models/chatService.d.ts | 5 +++-- client/ts-variant/src/routes/addRoom/index.tsx | 8 ++++---- client/ts-variant/src/routes/admin/index.tsx | 8 ++++---- client/ts-variant/src/routes/login/index.tsx | 8 ++++---- client/ts-variant/src/routes/room/index.tsx | 8 ++++---- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/client/ts-variant/src/components/RoomCard/RoomCard.tsx b/client/ts-variant/src/components/RoomCard/RoomCard.tsx index 3e4b41f..17e8647 100644 --- a/client/ts-variant/src/components/RoomCard/RoomCard.tsx +++ b/client/ts-variant/src/components/RoomCard/RoomCard.tsx @@ -7,12 +7,11 @@ interface RoomCardProps { } export function RoomCard({ meta, onClick }: RoomCardProps) { - // Event handlers function enterRoom() { if (!meta.isConnected) { - console.log("No connections to room") - return + console.log("No connections to room"); + return; } onClick(meta); } diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 993ed0f..1bdb9aa 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -1,4 +1,6 @@ -export type ChatServerRequest = Promise | RequestError>; +export type ChatServerRequest = Promise< + RequestSuccess | RequestError +>; export type RequestSuccess = { success: T; error?: ErrorContainer }; export type RequestError = { success: false; error: ErrorContainer }; @@ -6,7 +8,6 @@ export type RoomName = string; export type ServerID = string; export type ServerURL = `ws://${string}:${number}`; - export interface ChatRoom { name: RoomName; isConnected: boolean; diff --git a/client/ts-variant/src/routes/addRoom/index.tsx b/client/ts-variant/src/routes/addRoom/index.tsx index d306014..f785e5f 100644 --- a/client/ts-variant/src/routes/addRoom/index.tsx +++ b/client/ts-variant/src/routes/addRoom/index.tsx @@ -1,9 +1,9 @@ -import style from "./style.module.css" +import style from "./style.module.css"; export function AddRoom() { - return( + return (

    Login

    - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/routes/admin/index.tsx b/client/ts-variant/src/routes/admin/index.tsx index d943a32..139e764 100644 --- a/client/ts-variant/src/routes/admin/index.tsx +++ b/client/ts-variant/src/routes/admin/index.tsx @@ -1,9 +1,9 @@ -import style from "./style.module.css" +import style from "./style.module.css"; export function Admin() { - return( + return (

    Login

    - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/routes/login/index.tsx b/client/ts-variant/src/routes/login/index.tsx index 0ca643c..9a89488 100644 --- a/client/ts-variant/src/routes/login/index.tsx +++ b/client/ts-variant/src/routes/login/index.tsx @@ -1,9 +1,9 @@ -import style from "./style.module.css" +import style from "./style.module.css"; export function Login() { - return( + return (

    Login

    - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/routes/room/index.tsx b/client/ts-variant/src/routes/room/index.tsx index afbff73..a259177 100644 --- a/client/ts-variant/src/routes/room/index.tsx +++ b/client/ts-variant/src/routes/room/index.tsx @@ -1,9 +1,9 @@ -import style from "./style.module.css" +import style from "./style.module.css"; export function Room() { - return( + return (

    Room

    - ) -} \ No newline at end of file + ); +} From 45eed646f359cf589bf744c736647a98a708661d Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 18:30:59 +0000 Subject: [PATCH 37/74] docs refined design sketch --- docs/design-sketch.excalidraw | 1064 +++++++++++++++++++++------------ 1 file changed, 690 insertions(+), 374 deletions(-) diff --git a/docs/design-sketch.excalidraw b/docs/design-sketch.excalidraw index 413f83b..37b563e 100644 --- a/docs/design-sketch.excalidraw +++ b/docs/design-sketch.excalidraw @@ -5,8 +5,8 @@ "elements": [ { "type": "rectangle", - "version": 107, - "versionNonce": 813559860, + "version": 108, + "versionNonce": 67927379, "isDeleted": false, "id": "2NnJJjV86T5odL5GtC1ks", "fillStyle": "hachure", @@ -28,14 +28,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308548, + "updated": 1687108532516, "link": null, "locked": false }, { "type": "rectangle", - "version": 274, - "versionNonce": 314531084, + "version": 275, + "versionNonce": 1862464861, "isDeleted": false, "id": "jFOyMZAVXQS6gJhF5Ay0i", "fillStyle": "hachure", @@ -57,14 +57,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308548, + "updated": 1687108532516, "link": null, "locked": false }, { "type": "text", - "version": 196, - "versionNonce": 526900108, + "version": 197, + "versionNonce": 785865459, "isDeleted": false, "id": "s9JQwlBkYdPnXpB6EPvJt", "fillStyle": "hachure", @@ -86,7 +86,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308548, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 110.45799910563265, @@ -101,8 +101,8 @@ }, { "type": "text", - "version": 265, - "versionNonce": 1346270004, + "version": 266, + "versionNonce": 1360413117, "isDeleted": false, "id": "cistJy24NoPXXVNI-pYRv", "fillStyle": "hachure", @@ -124,7 +124,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308548, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 85.91177708215874, @@ -139,8 +139,8 @@ }, { "type": "text", - "version": 343, - "versionNonce": 796690956, + "version": 344, + "versionNonce": 599098515, "isDeleted": false, "id": "jVS3GfBZ3h9R0yZ10SHO_", "fillStyle": "hachure", @@ -162,7 +162,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308548, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 61.365555058684805, @@ -177,8 +177,8 @@ }, { "type": "text", - "version": 173, - "versionNonce": 1877959052, + "version": 174, + "versionNonce": 1069613597, "isDeleted": false, "id": "I-uff2L2tV72Gh9g8XCUe", "fillStyle": "hachure", @@ -198,7 +198,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846768034, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 153.7608034646019, @@ -213,8 +213,8 @@ }, { "type": "text", - "version": 338, - "versionNonce": 1849217716, + "version": 339, + "versionNonce": 1516075571, "isDeleted": false, "id": "yHX0dbG1wc-8omtspSsHV", "fillStyle": "hachure", @@ -234,7 +234,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846623042, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 153.7608034646019, @@ -249,8 +249,8 @@ }, { "type": "text", - "version": 438, - "versionNonce": 753692964, + "version": 439, + "versionNonce": 536131197, "isDeleted": false, "id": "G4i4vWUwfGFOigdCgZnMY", "fillStyle": "hachure", @@ -270,7 +270,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687002399198, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 153.7608034646019, @@ -285,8 +285,8 @@ }, { "type": "rectangle", - "version": 120, - "versionNonce": 1989310220, + "version": 121, + "versionNonce": 263568339, "isDeleted": false, "id": "4WFtskqO2YVxjSVGHxFbG", "fillStyle": "hachure", @@ -308,14 +308,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532516, "link": null, "locked": false }, { "type": "rectangle", - "version": 60, - "versionNonce": 231191948, + "version": 61, + "versionNonce": 1014161117, "isDeleted": false, "id": "JDePAyKXG9qod5Y8209gy", "fillStyle": "hachure", @@ -337,14 +337,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532516, "link": null, "locked": false }, { "type": "rectangle", - "version": 114, - "versionNonce": 1541486900, + "version": 115, + "versionNonce": 534038899, "isDeleted": false, "id": "rOc-G2NluWXWZb7gKav8y", "fillStyle": "hachure", @@ -371,14 +371,14 @@ "id": "NEEff7IOVEBYgMHlbE9XM" } ], - "updated": 1686846308549, + "updated": 1687108532516, "link": null, "locked": false }, { "type": "text", - "version": 21, - "versionNonce": 953230348, + "version": 22, + "versionNonce": 197983037, "isDeleted": false, "id": "NEEff7IOVEBYgMHlbE9XM", "fillStyle": "hachure", @@ -398,7 +398,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532516, "link": null, "locked": false, "fontSize": 28, @@ -413,8 +413,8 @@ }, { "type": "rectangle", - "version": 151, - "versionNonce": 1397486260, + "version": 152, + "versionNonce": 536945427, "isDeleted": false, "id": "QYv-EvPoFYFi_0S5Gn4d-", "fillStyle": "hachure", @@ -441,14 +441,14 @@ "id": "x1xbjtX_YvyoTqBKzSMzV" } ], - "updated": 1686846308549, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "text", - "version": 72, - "versionNonce": 1302905484, + "version": 73, + "versionNonce": 912559005, "isDeleted": false, "id": "x1xbjtX_YvyoTqBKzSMzV", "fillStyle": "hachure", @@ -468,7 +468,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532517, "link": null, "locked": false, "fontSize": 28, @@ -483,8 +483,8 @@ }, { "type": "rectangle", - "version": 153, - "versionNonce": 351338292, + "version": 154, + "versionNonce": 951142579, "isDeleted": false, "id": "VrhGl9Y92XBqEO7HkUmmr", "fillStyle": "hachure", @@ -506,14 +506,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 201, - "versionNonce": 772324876, + "version": 202, + "versionNonce": 1550520317, "isDeleted": false, "id": "_py2r2v0KIpSiBOQoqb-8", "fillStyle": "hachure", @@ -540,14 +540,14 @@ "id": "EqiVCiYvjPDLQnbeOx9Oi" } ], - "updated": 1686846308549, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "text", - "version": 31, - "versionNonce": 577960116, + "version": 32, + "versionNonce": 1066121811, "isDeleted": false, "id": "EqiVCiYvjPDLQnbeOx9Oi", "fillStyle": "hachure", @@ -567,7 +567,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532517, "link": null, "locked": false, "fontSize": 28, @@ -582,8 +582,8 @@ }, { "type": "rectangle", - "version": 319, - "versionNonce": 752688268, + "version": 320, + "versionNonce": 467798109, "isDeleted": false, "id": "V6asxRJ-YmvL2wIQtWwMx", "fillStyle": "hachure", @@ -605,14 +605,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308549, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 454, - "versionNonce": 1887027764, + "version": 455, + "versionNonce": 291960819, "isDeleted": false, "id": "isheprMHDXuRgQ1fKZCh2", "fillStyle": "hachure", @@ -634,14 +634,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 569, - "versionNonce": 904616884, + "version": 570, + "versionNonce": 1452995773, "isDeleted": false, "id": "JHGyC4hOY4MG-Vv4STlCw", "fillStyle": "hachure", @@ -663,14 +663,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 174, - "versionNonce": 705984140, + "version": 175, + "versionNonce": 743014803, "isDeleted": false, "id": "btUBP2TLtZSQLqkn62JHA", "fillStyle": "hachure", @@ -692,14 +692,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 199, - "versionNonce": 142411828, + "version": 200, + "versionNonce": 943150365, "isDeleted": false, "id": "oiBr8ryOdc0pQX2fzpe7G", "fillStyle": "hachure", @@ -726,14 +726,14 @@ "id": "10DOqZGRPhp2dGZfAzgXO" } ], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "text", - "version": 43, - "versionNonce": 266192140, + "version": 44, + "versionNonce": 157931315, "isDeleted": false, "id": "10DOqZGRPhp2dGZfAzgXO", "fillStyle": "hachure", @@ -753,7 +753,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false, "fontSize": 28, @@ -768,8 +768,8 @@ }, { "type": "text", - "version": 44, - "versionNonce": 1014580108, + "version": 45, + "versionNonce": 2083039613, "isDeleted": false, "id": "s-KQ7QdskpV7Ec1Zkqqjn", "fillStyle": "hachure", @@ -789,7 +789,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false, "fontSize": 28, @@ -804,8 +804,8 @@ }, { "type": "text", - "version": 117, - "versionNonce": 1431800628, + "version": 118, + "versionNonce": 925792467, "isDeleted": false, "id": "s8KqK22AGAmqo1XK-lZrK", "fillStyle": "hachure", @@ -825,7 +825,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false, "fontSize": 28, @@ -840,8 +840,8 @@ }, { "type": "text", - "version": 86, - "versionNonce": 1981870604, + "version": 87, + "versionNonce": 1940943325, "isDeleted": false, "id": "4xGiPYTB8pvKNQ63m_YZV", "fillStyle": "hachure", @@ -861,7 +861,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false, "fontSize": 28, @@ -876,8 +876,8 @@ }, { "type": "rectangle", - "version": 208, - "versionNonce": 774374580, + "version": 209, + "versionNonce": 858646131, "isDeleted": false, "id": "sdXYSV0Z79HH-23f_7m6y", "fillStyle": "hachure", @@ -899,14 +899,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 275, - "versionNonce": 734974092, + "version": 276, + "versionNonce": 1272983101, "isDeleted": false, "id": "tQKReu0JgEKxoLPRuYYZQ", "fillStyle": "hachure", @@ -933,14 +933,14 @@ "type": "arrow" } ], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 317, - "versionNonce": 1504529972, + "version": 318, + "versionNonce": 70164499, "isDeleted": false, "id": "yy3dcNpXE8shpfEsjUJCR", "fillStyle": "hachure", @@ -967,14 +967,14 @@ "type": "arrow" } ], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 277, - "versionNonce": 1564270348, + "version": 278, + "versionNonce": 328818333, "isDeleted": false, "id": "R2L_CYGjP9H0W8clB1yB2", "fillStyle": "hachure", @@ -1001,14 +1001,14 @@ "type": "arrow" } ], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 843, - "versionNonce": 1221420980, + "version": 844, + "versionNonce": 338109875, "isDeleted": false, "id": "P5q3CA6s4L_2uVXbyH2Zv", "fillStyle": "hachure", @@ -1037,14 +1037,14 @@ "type": "arrow" } ], - "updated": 1686846308550, + "updated": 1687108532517, "link": null, "locked": false }, { "type": "rectangle", - "version": 481, - "versionNonce": 48569740, + "version": 482, + "versionNonce": 26051325, "isDeleted": false, "id": "cLUJbly4Xpyb8QBsfchXj", "fillStyle": "hachure", @@ -1068,14 +1068,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308550, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 548, - "versionNonce": 1605259572, + "version": 549, + "versionNonce": 1245574995, "isDeleted": false, "id": "1iL1N-oRMdJOYCxtPKUm-", "fillStyle": "hachure", @@ -1099,14 +1099,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 589, - "versionNonce": 1979812876, + "version": 590, + "versionNonce": 2050890589, "isDeleted": false, "id": "8k8pvl407049GASCGvcvU", "fillStyle": "hachure", @@ -1130,14 +1130,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 550, - "versionNonce": 230034100, + "version": 551, + "versionNonce": 1690932467, "isDeleted": false, "id": "Tb56HtGscEIrQZ7pGUp2m", "fillStyle": "hachure", @@ -1161,14 +1161,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 868, - "versionNonce": 1485580940, + "version": 869, + "versionNonce": 1442621373, "isDeleted": false, "id": "UAZ3IVT74-afPycfxBQdV", "fillStyle": "hachure", @@ -1192,14 +1192,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 506, - "versionNonce": 1703580724, + "version": 507, + "versionNonce": 324042387, "isDeleted": false, "id": "Op4PQ0MZ9a3pyXXQhL-75", "fillStyle": "hachure", @@ -1223,14 +1223,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 573, - "versionNonce": 2101278988, + "version": 574, + "versionNonce": 1726654493, "isDeleted": false, "id": "a0Fpgz2U2BdbKbGdS7M8q", "fillStyle": "hachure", @@ -1254,14 +1254,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 614, - "versionNonce": 890367412, + "version": 615, + "versionNonce": 1351169075, "isDeleted": false, "id": "cmfLGKHr6YBYvpR2P-0rr", "fillStyle": "hachure", @@ -1285,14 +1285,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 575, - "versionNonce": 1335097228, + "version": 576, + "versionNonce": 1056545917, "isDeleted": false, "id": "kfQ0rl3-kRiEPNRYGO05d", "fillStyle": "hachure", @@ -1316,14 +1316,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 895, - "versionNonce": 494016308, + "version": 896, + "versionNonce": 2086286803, "isDeleted": false, "id": "ScGca8wGOjVzfHAg-gsSs", "fillStyle": "hachure", @@ -1347,14 +1347,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 533, - "versionNonce": 1002776076, + "version": 534, + "versionNonce": 904594653, "isDeleted": false, "id": "kP7UlavR-yPNq9V2Z8183", "fillStyle": "hachure", @@ -1378,14 +1378,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 600, - "versionNonce": 722538676, + "version": 601, + "versionNonce": 903480179, "isDeleted": false, "id": "qbiYaOVhJQZ0UGnKDKzll", "fillStyle": "hachure", @@ -1409,14 +1409,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 641, - "versionNonce": 382502028, + "version": 642, + "versionNonce": 793796925, "isDeleted": false, "id": "tlfyEXbkUUq6xr0yY0JQk", "fillStyle": "hachure", @@ -1440,14 +1440,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 602, - "versionNonce": 1838471732, + "version": 603, + "versionNonce": 1968119059, "isDeleted": false, "id": "dbWUkMQRXklhozMLHoZmF", "fillStyle": "hachure", @@ -1471,14 +1471,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 908, - "versionNonce": 107221772, + "version": 909, + "versionNonce": 545993117, "isDeleted": false, "id": "r0lvI3VF8C3GCV3bP0Y28", "fillStyle": "hachure", @@ -1502,14 +1502,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 546, - "versionNonce": 266564532, + "version": 547, + "versionNonce": 1714422451, "isDeleted": false, "id": "rNGvB1b94qRdjq3-NdTFt", "fillStyle": "hachure", @@ -1533,14 +1533,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 613, - "versionNonce": 1761989004, + "version": 614, + "versionNonce": 1456272893, "isDeleted": false, "id": "gPLNgydgh7P_3OsnfhC9L", "fillStyle": "hachure", @@ -1564,14 +1564,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 654, - "versionNonce": 1881333044, + "version": 655, + "versionNonce": 19084371, "isDeleted": false, "id": "NJ_PywgHm-BOR1kTsfD1q", "fillStyle": "hachure", @@ -1595,14 +1595,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 615, - "versionNonce": 1038860300, + "version": 616, + "versionNonce": 2098671197, "isDeleted": false, "id": "AMIKY6bozMr5SvHFH_5tg", "fillStyle": "hachure", @@ -1626,14 +1626,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 932, - "versionNonce": 934876852, + "version": 933, + "versionNonce": 1711223283, "isDeleted": false, "id": "w8jh35gQVfQAv1fMdU-Nd", "fillStyle": "hachure", @@ -1657,14 +1657,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 570, - "versionNonce": 219143820, + "version": 571, + "versionNonce": 1648057021, "isDeleted": false, "id": "3xZPjG-QC0VcZH3Wp_NyP", "fillStyle": "hachure", @@ -1688,14 +1688,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 637, - "versionNonce": 1934368820, + "version": 638, + "versionNonce": 1976204179, "isDeleted": false, "id": "qZPM0f_S41GmhyA7dDxWx", "fillStyle": "hachure", @@ -1719,14 +1719,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 678, - "versionNonce": 1328295180, + "version": 679, + "versionNonce": 2128280349, "isDeleted": false, "id": "Zza20wYVOD2B6V154nGxN", "fillStyle": "hachure", @@ -1750,14 +1750,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 639, - "versionNonce": 717355444, + "version": 640, + "versionNonce": 750489907, "isDeleted": false, "id": "jjKhYaOP-TCxxQu3Hm0Qq", "fillStyle": "hachure", @@ -1781,14 +1781,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 947, - "versionNonce": 1438296972, + "version": 948, + "versionNonce": 996642685, "isDeleted": false, "id": "wJiZIA32Zww_Oq90r5cCR", "fillStyle": "hachure", @@ -1812,14 +1812,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308551, + "updated": 1687108532518, "link": null, "locked": false }, { "type": "rectangle", - "version": 585, - "versionNonce": 2034279220, + "version": 586, + "versionNonce": 1010365139, "isDeleted": false, "id": "6fyQsXgWmtM3UbD86pN8t", "fillStyle": "hachure", @@ -1843,14 +1843,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false }, { "type": "rectangle", - "version": 652, - "versionNonce": 854940172, + "version": 653, + "versionNonce": 1981978589, "isDeleted": false, "id": "N_NNtVVLigo-EBK2CQjVF", "fillStyle": "hachure", @@ -1874,14 +1874,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false }, { "type": "rectangle", - "version": 693, - "versionNonce": 623778996, + "version": 694, + "versionNonce": 1691951219, "isDeleted": false, "id": "1JFLHbeZyKtT_BmhEOQM-", "fillStyle": "hachure", @@ -1905,14 +1905,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false }, { "type": "rectangle", - "version": 654, - "versionNonce": 567687308, + "version": 655, + "versionNonce": 1226675261, "isDeleted": false, "id": "nOikQ_ZiQph0fmYw3TIBT", "fillStyle": "hachure", @@ -1936,14 +1936,14 @@ "type": 3 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false }, { "type": "text", - "version": 44, - "versionNonce": 942695988, + "version": 45, + "versionNonce": 274897427, "isDeleted": false, "id": "WSzl9l-O3mSUT8GVHiwmy", "fillStyle": "hachure", @@ -1968,7 +1968,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false, "fontSize": 20, @@ -1983,8 +1983,8 @@ }, { "type": "text", - "version": 81, - "versionNonce": 1847019276, + "version": 82, + "versionNonce": 272237725, "isDeleted": false, "id": "Y6guI15JPdAg1a3-4RRhY", "fillStyle": "hachure", @@ -2009,7 +2009,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false, "fontSize": 20, @@ -2024,8 +2024,8 @@ }, { "type": "text", - "version": 182, - "versionNonce": 388857780, + "version": 183, + "versionNonce": 734781363, "isDeleted": false, "id": "DHQl7PbXVWcg6W_GXGthK", "fillStyle": "hachure", @@ -2050,7 +2050,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false, "fontSize": 20, @@ -2065,8 +2065,8 @@ }, { "type": "text", - "version": 237, - "versionNonce": 1546814860, + "version": 238, + "versionNonce": 791243005, "isDeleted": false, "id": "w8SIhtOMFG14l2LG29_-S", "fillStyle": "hachure", @@ -2091,7 +2091,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532519, "link": null, "locked": false, "fontSize": 20, @@ -2106,8 +2106,8 @@ }, { "type": "text", - "version": 97, - "versionNonce": 441149748, + "version": 98, + "versionNonce": 1094414675, "isDeleted": false, "id": "4jv_Obt_4YXVJZfYpp7b8", "fillStyle": "hachure", @@ -2132,7 +2132,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -2147,8 +2147,8 @@ }, { "type": "arrow", - "version": 106, - "versionNonce": 291632140, + "version": 107, + "versionNonce": 393036125, "isDeleted": false, "id": "P2aa7RB2j-dxeiaswlXId", "fillStyle": "hachure", @@ -2170,7 +2170,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2203,8 +2203,8 @@ }, { "type": "arrow", - "version": 108, - "versionNonce": 619717300, + "version": 109, + "versionNonce": 1376243443, "isDeleted": false, "id": "f_AjgbclMoM0aAi5SylQM", "fillStyle": "hachure", @@ -2226,7 +2226,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2259,8 +2259,8 @@ }, { "type": "arrow", - "version": 189, - "versionNonce": 2074055308, + "version": 190, + "versionNonce": 240586173, "isDeleted": false, "id": "iEMEY_hP-UrxDIGHGvUmg", "fillStyle": "hachure", @@ -2282,7 +2282,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2315,8 +2315,8 @@ }, { "type": "text", - "version": 29, - "versionNonce": 1036102708, + "version": 30, + "versionNonce": 1891072147, "isDeleted": false, "id": "tWTmIdBIIs8OOUS0CRSAr", "fillStyle": "hachure", @@ -2341,7 +2341,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -2356,8 +2356,8 @@ }, { "type": "text", - "version": 76, - "versionNonce": 967139596, + "version": 77, + "versionNonce": 856182301, "isDeleted": false, "id": "3i50dViGyXwbLN6ClGoyo", "fillStyle": "hachure", @@ -2382,7 +2382,7 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -2397,8 +2397,8 @@ }, { "type": "arrow", - "version": 75, - "versionNonce": 49110924, + "version": 76, + "versionNonce": 453045811, "isDeleted": false, "id": "WvBvAD3-CGvDoWB5ru6-g", "fillStyle": "hachure", @@ -2420,7 +2420,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2449,8 +2449,8 @@ }, { "type": "rectangle", - "version": 73, - "versionNonce": 1958948660, + "version": 74, + "versionNonce": 1148355197, "isDeleted": false, "id": "H54jBuFZQqq6m_TSCqn7c", "fillStyle": "hachure", @@ -2477,14 +2477,14 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false }, { "type": "rectangle", - "version": 307, - "versionNonce": 263294476, + "version": 308, + "versionNonce": 1405792211, "isDeleted": false, "id": "2CoOLLhZNalLow-D-1P4l", "fillStyle": "hachure", @@ -2511,14 +2511,14 @@ "type": "arrow" } ], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false }, { "type": "arrow", - "version": 127, - "versionNonce": 679422132, + "version": 128, + "versionNonce": 660024029, "isDeleted": false, "id": "wQlNWgks1sriCOYZywo4v", "fillStyle": "hachure", @@ -2540,7 +2540,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308552, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2573,8 +2573,8 @@ }, { "type": "arrow", - "version": 41, - "versionNonce": 1166012980, + "version": 42, + "versionNonce": 2099985779, "isDeleted": false, "id": "c5V0m6pqAT7lYcs5aJTCE", "fillStyle": "hachure", @@ -2596,7 +2596,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308553, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2629,8 +2629,8 @@ }, { "type": "text", - "version": 21, - "versionNonce": 1213627148, + "version": 22, + "versionNonce": 742901565, "isDeleted": false, "id": "jGy3ujg4R6uH704n6c7gX", "fillStyle": "hachure", @@ -2655,7 +2655,7 @@ "type": "arrow" } ], - "updated": 1686846308553, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -2670,8 +2670,8 @@ }, { "type": "arrow", - "version": 44, - "versionNonce": 1789627316, + "version": 45, + "versionNonce": 1919489811, "isDeleted": false, "id": "oyOWvgLxjhZPA1-lssish", "fillStyle": "hachure", @@ -2693,7 +2693,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846308553, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": { @@ -2722,8 +2722,8 @@ }, { "type": "line", - "version": 140, - "versionNonce": 1950489140, + "version": 141, + "versionNonce": 363190173, "isDeleted": false, "id": "gRoaDC0wP-9mb4Z3zvHWP", "fillStyle": "hachure", @@ -2745,7 +2745,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846740576, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": null, @@ -2766,8 +2766,8 @@ }, { "type": "line", - "version": 204, - "versionNonce": 699216436, + "version": 205, + "versionNonce": 1643822259, "isDeleted": false, "id": "DTGuPLCNfZf76FDvREWKq", "fillStyle": "hachure", @@ -2789,7 +2789,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846744554, + "updated": 1687108532520, "link": null, "locked": false, "startBinding": null, @@ -2810,8 +2810,8 @@ }, { "type": "text", - "version": 302, - "versionNonce": 1351506100, + "version": 303, + "versionNonce": 1570954237, "isDeleted": false, "id": "GCA102uC2C9vRQcCBPOoA", "fillStyle": "hachure", @@ -2831,7 +2831,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846516466, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 28, @@ -2846,8 +2846,8 @@ }, { "type": "text", - "version": 421, - "versionNonce": 968096268, + "version": 422, + "versionNonce": 1736879699, "isDeleted": false, "id": "WfqIS7S4LLHxnlJBaWwBn", "fillStyle": "hachure", @@ -2867,7 +2867,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846519047, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 28, @@ -2882,8 +2882,8 @@ }, { "type": "text", - "version": 608, - "versionNonce": 2002180532, + "version": 609, + "versionNonce": 1010848861, "isDeleted": false, "id": "wk_RBThpsXtzqV78XszZc", "fillStyle": "hachure", @@ -2903,7 +2903,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846679836, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 28, @@ -2918,8 +2918,8 @@ }, { "type": "text", - "version": 555, - "versionNonce": 145210508, + "version": 556, + "versionNonce": 1709403123, "isDeleted": false, "id": "TTKeaLWtUaXzQCIbNTWv2", "fillStyle": "hachure", @@ -2939,7 +2939,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846516466, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -2954,8 +2954,8 @@ }, { "type": "text", - "version": 834, - "versionNonce": 1730772148, + "version": 835, + "versionNonce": 1833943229, "isDeleted": false, "id": "ujj7zntFwlsf2_6C0_ES2", "fillStyle": "hachure", @@ -2975,7 +2975,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846519047, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -2990,8 +2990,8 @@ }, { "type": "text", - "version": 1124, - "versionNonce": 940225676, + "version": 1125, + "versionNonce": 555185555, "isDeleted": false, "id": "jT255Sd1MsvD_VkEi6_8Q", "fillStyle": "hachure", @@ -3011,7 +3011,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846487147, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -3026,8 +3026,8 @@ }, { "type": "text", - "version": 198, - "versionNonce": 284452660, + "version": 199, + "versionNonce": 913482013, "isDeleted": false, "id": "ho-4q0XiZfwPqifDHRzUa", "fillStyle": "hachure", @@ -3047,7 +3047,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846541291, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -3062,8 +3062,8 @@ }, { "type": "text", - "version": 372, - "versionNonce": 610464284, + "version": 373, + "versionNonce": 408505139, "isDeleted": false, "id": "zmjnXWHYCdqWRMcBwLHJZ", "fillStyle": "hachure", @@ -3083,7 +3083,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092131082, + "updated": 1687108532520, "link": null, "locked": false, "fontSize": 20, @@ -3098,8 +3098,8 @@ }, { "type": "text", - "version": 624, - "versionNonce": 1025393180, + "version": 625, + "versionNonce": 756708733, "isDeleted": false, "id": "CsE2qnjJCE6LL30vkMpOi", "fillStyle": "hachure", @@ -3119,7 +3119,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092350887, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3134,8 +3134,8 @@ }, { "type": "text", - "version": 730, - "versionNonce": 845777052, + "version": 731, + "versionNonce": 537881811, "isDeleted": false, "id": "izV6Ek-q3HfHf1LOBfpkP", "fillStyle": "hachure", @@ -3155,7 +3155,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093403838, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3170,8 +3170,44 @@ }, { "type": "text", - "version": 696, - "versionNonce": 733785636, + "version": 810, + "versionNonce": 419031101, + "isDeleted": false, + "id": "WYnRoPd1j4N9d6zCnkGIM", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4402.003667224812, + "y": 2430.2951480127585, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 202.0768585205078, + "height": 35, + "seed": 155547123, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687109802832, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "useChat Hooks", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "useChat Hooks", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 697, + "versionNonce": 1015594461, "isDeleted": false, "id": "hD51kac2U9YO7qhDNXMv0", "fillStyle": "hachure", @@ -3191,7 +3227,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092242358, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3206,8 +3242,8 @@ }, { "type": "text", - "version": 732, - "versionNonce": 909433508, + "version": 733, + "versionNonce": 1003510387, "isDeleted": false, "id": "a66Juf5rZpFh2VKdutKI2", "fillStyle": "hachure", @@ -3227,7 +3263,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092248188, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3242,8 +3278,8 @@ }, { "type": "rectangle", - "version": 438, - "versionNonce": 1226497316, + "version": 439, + "versionNonce": 1808726589, "isDeleted": false, "id": "ba7RHQtw-BIVnC19wwGLp", "fillStyle": "hachure", @@ -3270,14 +3306,14 @@ "id": "N1PBVcTIhtbUIjmtx9-Wi" } ], - "updated": 1687092124956, + "updated": 1687108532521, "link": null, "locked": false }, { "type": "text", - "version": 405, - "versionNonce": 1775609636, + "version": 406, + "versionNonce": 945984531, "isDeleted": false, "id": "N1PBVcTIhtbUIjmtx9-Wi", "fillStyle": "hachure", @@ -3297,7 +3333,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092150000, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3312,8 +3348,8 @@ }, { "type": "rectangle", - "version": 488, - "versionNonce": 268530588, + "version": 489, + "versionNonce": 1674488477, "isDeleted": false, "id": "mJ36ILzAlU2AL15FwGfnu", "fillStyle": "hachure", @@ -3340,14 +3376,14 @@ "id": "AeYsbu_iqyTKO1fy3IRRn" } ], - "updated": 1687092277957, + "updated": 1687108532521, "link": null, "locked": false }, { "type": "text", - "version": 376, - "versionNonce": 1697058212, + "version": 377, + "versionNonce": 96246195, "isDeleted": false, "id": "AeYsbu_iqyTKO1fy3IRRn", "fillStyle": "hachure", @@ -3367,7 +3403,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092281944, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3382,8 +3418,8 @@ }, { "type": "rectangle", - "version": 743, - "versionNonce": 237977636, + "version": 832, + "versionNonce": 318875005, "isDeleted": false, "id": "OmUhDFSdt6wpPv0Q9A-EH", "fillStyle": "hachure", @@ -3396,8 +3432,8 @@ "y": 1443.1286626032877, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", - "width": 497, - "height": 154, + "width": 724, + "height": 178, "seed": 423285668, "groupIds": [], "frameId": null, @@ -3410,14 +3446,14 @@ "id": "eIqanj_geBcZPGXvA5-u8" } ], - "updated": 1687093142670, + "updated": 1687108558237, "link": null, "locked": false }, { "type": "text", - "version": 760, - "versionNonce": 528434204, + "version": 922, + "versionNonce": 216572861, "isDeleted": false, "id": "eIqanj_geBcZPGXvA5-u8", "fillStyle": "hachure", @@ -3430,30 +3466,30 @@ "y": 1448.1286626032877, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 445.3125, - "height": 144, + "width": 679.6875, + "height": 168, "seed": 1263052956, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093142670, + "updated": 1687108571059, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "\nChatService\n isConnected: boolean\n connect: () => Request\n disconnect: () => void\n", + "text": "\nChatService\n isConnected: boolean\n serverList: ChatServer[]\n connect: (serverURL: ServerURL) => Request\n disconnect: (ChatServer) => void\n", "textAlign": "left", "verticalAlign": "top", "containerId": "OmUhDFSdt6wpPv0Q9A-EH", - "originalText": "\nChatService\n isConnected: boolean\n connect: () => Request\n disconnect: () => void\n", + "originalText": "\nChatService\n isConnected: boolean\n serverList: ChatServer[]\n connect: (serverURL: ServerURL) => Request\n disconnect: (ChatServer) => void\n", "lineHeight": 1.2, - "baseline": 139 + "baseline": 163 }, { "type": "rectangle", - "version": 929, - "versionNonce": 2109469988, + "version": 930, + "versionNonce": 1586521949, "isDeleted": false, "id": "6lkXt_-1ljzMMyiFT0-Of", "fillStyle": "hachure", @@ -3480,14 +3516,14 @@ "id": "L5JGDjaETWqCkXy07ZDdk" } ], - "updated": 1687093380761, + "updated": 1687108532521, "link": null, "locked": false }, { "type": "text", - "version": 983, - "versionNonce": 1390549916, + "version": 984, + "versionNonce": 1586628851, "isDeleted": false, "id": "L5JGDjaETWqCkXy07ZDdk", "fillStyle": "hachure", @@ -3507,7 +3543,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093394026, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3522,8 +3558,8 @@ }, { "type": "rectangle", - "version": 782, - "versionNonce": 236690340, + "version": 789, + "versionNonce": 1686224573, "isDeleted": false, "id": "Rce04p4YFmPknUBm16gfM", "fillStyle": "hachure", @@ -3532,8 +3568,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 5589.06282144601, - "y": 1642.2217694046944, + "x": 5597.776684099098, + "y": 1662.7571007485503, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", "width": 586, @@ -3550,14 +3586,14 @@ "id": "Y1CL0U5wSkY0EUv-t7WJP" } ], - "updated": 1687093142670, + "updated": 1687108552572, "link": null, "locked": false }, { "type": "text", - "version": 907, - "versionNonce": 666394780, + "version": 914, + "versionNonce": 1821136787, "isDeleted": false, "id": "Y1CL0U5wSkY0EUv-t7WJP", "fillStyle": "hachure", @@ -3566,8 +3602,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 5594.06282144601, - "y": 1647.2217694046944, + "x": 5602.776684099098, + "y": 1667.7571007485503, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 539.0625, @@ -3577,7 +3613,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093142670, + "updated": 1687108552572, "link": null, "locked": false, "fontSize": 20, @@ -3592,8 +3628,8 @@ }, { "type": "rectangle", - "version": 1021, - "versionNonce": 384861988, + "version": 1022, + "versionNonce": 1008333853, "isDeleted": false, "id": "t976sP9wUqXHN-L6NZff7", "fillStyle": "hachure", @@ -3620,14 +3656,14 @@ "id": "vqA5gwfLxK0bDaAUmSGrL" } ], - "updated": 1687093142670, + "updated": 1687108532521, "link": null, "locked": false }, { "type": "text", - "version": 1232, - "versionNonce": 1481472029, + "version": 1233, + "versionNonce": 566536243, "isDeleted": false, "id": "vqA5gwfLxK0bDaAUmSGrL", "fillStyle": "hachure", @@ -3647,7 +3683,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687100230900, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3662,8 +3698,8 @@ }, { "type": "rectangle", - "version": 1163, - "versionNonce": 1818296092, + "version": 1164, + "versionNonce": 1214212221, "isDeleted": false, "id": "ldG_5EJlUiGTEGNPSijiz", "fillStyle": "hachure", @@ -3690,14 +3726,14 @@ "id": "6LLqwnBMK_4eN3aFMRfpF" } ], - "updated": 1687093231534, + "updated": 1687108532521, "link": null, "locked": false }, { "type": "text", - "version": 1452, - "versionNonce": 1166479524, + "version": 1453, + "versionNonce": 2114398675, "isDeleted": false, "id": "6LLqwnBMK_4eN3aFMRfpF", "fillStyle": "hachure", @@ -3717,7 +3753,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093231534, + "updated": 1687108532521, "link": null, "locked": false, "fontSize": 20, @@ -3732,8 +3768,8 @@ }, { "type": "rectangle", - "version": 1452, - "versionNonce": 493672988, + "version": 1453, + "versionNonce": 683102429, "isDeleted": false, "id": "8ofcVhggmdXKx3hG3NJ4F", "fillStyle": "hachure", @@ -3760,14 +3796,14 @@ "id": "6fAjju1egMxW-1KbhCgcK" } ], - "updated": 1687093219328, + "updated": 1687108532521, "link": null, "locked": false }, { "type": "text", - "version": 1875, - "versionNonce": 1610245540, + "version": 1876, + "versionNonce": 1573418867, "isDeleted": false, "id": "6fAjju1egMxW-1KbhCgcK", "fillStyle": "hachure", @@ -3787,7 +3823,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093219328, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 20, @@ -3802,8 +3838,8 @@ }, { "type": "rectangle", - "version": 796, - "versionNonce": 412903972, + "version": 797, + "versionNonce": 447950141, "isDeleted": false, "id": "7wWN8fDJKc3UmzfxsgDzh", "fillStyle": "hachure", @@ -3830,14 +3866,14 @@ "id": "2qtoSHloN4XcOoTN4u4_9" } ], - "updated": 1687092236330, + "updated": 1687108532522, "link": null, "locked": false }, { "type": "text", - "version": 700, - "versionNonce": 491895324, + "version": 701, + "versionNonce": 2135888147, "isDeleted": false, "id": "2qtoSHloN4XcOoTN4u4_9", "fillStyle": "hachure", @@ -3857,7 +3893,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092236330, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 20, @@ -3872,8 +3908,8 @@ }, { "type": "rectangle", - "version": 875, - "versionNonce": 1438048420, + "version": 876, + "versionNonce": 766803357, "isDeleted": false, "id": "KgM-d1_HXb358xv-mMVbH", "fillStyle": "hachure", @@ -3900,14 +3936,14 @@ "id": "keVlG_dzA96jiv3REh7B8" } ], - "updated": 1687092224972, + "updated": 1687108532522, "link": null, "locked": false }, { "type": "text", - "version": 807, - "versionNonce": 773843868, + "version": 808, + "versionNonce": 336688819, "isDeleted": false, "id": "keVlG_dzA96jiv3REh7B8", "fillStyle": "hachure", @@ -3927,7 +3963,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092224972, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 20, @@ -3942,8 +3978,8 @@ }, { "type": "rectangle", - "version": 927, - "versionNonce": 225129252, + "version": 928, + "versionNonce": 149733885, "isDeleted": false, "id": "pRh6HJweJc9IOFndZu_Id", "fillStyle": "hachure", @@ -3970,14 +4006,14 @@ "id": "IMUMCeRA45KpyvZ1XOU_a" } ], - "updated": 1687092255942, + "updated": 1687108532522, "link": null, "locked": false }, { "type": "text", - "version": 879, - "versionNonce": 497938852, + "version": 880, + "versionNonce": 1521887315, "isDeleted": false, "id": "IMUMCeRA45KpyvZ1XOU_a", "fillStyle": "hachure", @@ -3997,7 +4033,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687092267132, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 20, @@ -4012,8 +4048,8 @@ }, { "type": "text", - "version": 223, - "versionNonce": 1580044428, + "version": 224, + "versionNonce": 1901951581, "isDeleted": false, "id": "hFf_3Sq2mYrENCDoQ7WP-", "fillStyle": "hachure", @@ -4033,7 +4069,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846709473, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 28, @@ -4048,8 +4084,8 @@ }, { "type": "text", - "version": 22, - "versionNonce": 373710476, + "version": 23, + "versionNonce": 2031330803, "isDeleted": false, "id": "mhHG5MwRtw_iuinqBV6P0", "fillStyle": "hachure", @@ -4069,7 +4105,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846422780, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 36, @@ -4084,8 +4120,8 @@ }, { "type": "line", - "version": 70, - "versionNonce": 1811196428, + "version": 71, + "versionNonce": 265823933, "isDeleted": false, "id": "8Gp5aHcZ_8tO7Z7gwO1hh", "fillStyle": "hachure", @@ -4107,7 +4143,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846432986, + "updated": 1687108532522, "link": null, "locked": false, "startBinding": null, @@ -4128,8 +4164,8 @@ }, { "type": "text", - "version": 74, - "versionNonce": 1310348, + "version": 75, + "versionNonce": 372273043, "isDeleted": false, "id": "0a8F4a-GlVabcXUcm2F-N", "fillStyle": "hachure", @@ -4149,7 +4185,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846453811, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 36, @@ -4164,8 +4200,8 @@ }, { "type": "line", - "version": 71, - "versionNonce": 1709779084, + "version": 72, + "versionNonce": 1996375837, "isDeleted": false, "id": "tynbWLoCyGl82AhV3_CYR", "fillStyle": "hachure", @@ -4187,7 +4223,7 @@ "type": 2 }, "boundElements": [], - "updated": 1686846467258, + "updated": 1687108532522, "link": null, "locked": false, "startBinding": null, @@ -4208,8 +4244,8 @@ }, { "type": "text", - "version": 294, - "versionNonce": 2007978252, + "version": 295, + "versionNonce": 876807475, "isDeleted": false, "id": "NXAw2o8DJyC4BVR7nnMIO", "fillStyle": "hachure", @@ -4229,7 +4265,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1686846701313, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 28, @@ -4244,8 +4280,8 @@ }, { "type": "text", - "version": 930, - "versionNonce": 718123932, + "version": 931, + "versionNonce": 1765890941, "isDeleted": false, "id": "vEnGfo2zNNH4OKdrrRKYE", "fillStyle": "hachure", @@ -4265,7 +4301,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093344819, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 20, @@ -4280,8 +4316,8 @@ }, { "type": "text", - "version": 1129, - "versionNonce": 1023974812, + "version": 1130, + "versionNonce": 1253172947, "isDeleted": false, "id": "nOlSRvwqHz6kyQK1lMpmW", "fillStyle": "hachure", @@ -4301,7 +4337,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1687093264823, + "updated": 1687108532522, "link": null, "locked": false, "fontSize": 20, @@ -4313,6 +4349,286 @@ "originalText": "The collection of interaction we have with the\nbackend messaging service. Also include\nsome internal state. This is the API we want to expose\nto our end users", "lineHeight": 1.25, "baseline": 93 + }, + { + "type": "rectangle", + "version": 941, + "versionNonce": 1591927773, + "isDeleted": false, + "id": "OyRgpyXE-OfEoseMob3EC", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6510.301396580023, + "y": 1449.4919472872398, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 397, + "height": 82, + "seed": 1408560307, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "a5Sp0hnOgZZoAzsTOw0Jk" + } + ], + "updated": 1687108532522, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 926, + "versionNonce": 538154099, + "isDeleted": false, + "id": "a5Sp0hnOgZZoAzsTOw0Jk", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6515.301396580023, + "y": 1454.4919472872398, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 187.5, + "height": 48, + "seed": 2059066963, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687108532522, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nServerURL: ws://", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "OyRgpyXE-OfEoseMob3EC", + "originalText": "\nServerURL: ws://", + "lineHeight": 1.2, + "baseline": 43 + }, + { + "type": "rectangle", + "version": 972, + "versionNonce": 1274306621, + "isDeleted": false, + "id": "CaAQaRXJqYbJbvSrKG7PD", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6513.694713137555, + "y": 1548.9939009603072, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 397, + "height": 82, + "seed": 952187667, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "KOBGcJo51R9G7S-jSJsqO" + } + ], + "updated": 1687108532522, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 989, + "versionNonce": 1680772627, + "isDeleted": false, + "id": "KOBGcJo51R9G7S-jSJsqO", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6518.694713137555, + "y": 1553.9939009603072, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 187.5, + "height": 48, + "seed": 458355613, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687108532522, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nServerID: string", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "CaAQaRXJqYbJbvSrKG7PD", + "originalText": "\nServerID: string", + "lineHeight": 1.2, + "baseline": 43 + }, + { + "type": "rectangle", + "version": 1101, + "versionNonce": 1221427219, + "isDeleted": false, + "id": "5jwihdzdDwh-qFdXN8n7J", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4410.152682001534, + "y": 2486.192971094497, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 648, + "height": 178, + "seed": 839418077, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "o9WcSsNBJK4k4P82Q9b2F" + } + ], + "updated": 1687109848940, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1434, + "versionNonce": 1537500307, + "isDeleted": false, + "id": "o9WcSsNBJK4k4P82Q9b2F", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4415.152682001534, + "y": 2491.192971094497, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 527.34375, + "height": 168, + "seed": 1113480509, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1687109846368, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nuseChatServer(server: ChatServer)\n isConnected: boolean\n rooms: ChatRoom[]\n join: (roomID: RoomID) => ChatRoom | null\n leave: (roomID: RoomID) => void\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "5jwihdzdDwh-qFdXN8n7J", + "originalText": "\nuseChatServer(server: ChatServer)\n isConnected: boolean\n rooms: ChatRoom[]\n join: (roomID: RoomID) => ChatRoom | null\n leave: (roomID: RoomID) => void\n", + "lineHeight": 1.2, + "baseline": 163 + }, + { + "type": "rectangle", + "version": 1229, + "versionNonce": 1954433757, + "isDeleted": false, + "id": "wKZjHF0xcjCZcSk-ebN-j", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4412.8307514100225, + "y": 2710.7480422875183, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 772, + "height": 178, + "seed": 1261391699, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Ik9JMyqJDsLPZkVrdmIRE" + } + ], + "updated": 1687112215399, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1647, + "versionNonce": 1706595261, + "isDeleted": false, + "id": "Ik9JMyqJDsLPZkVrdmIRE", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4417.8307514100225, + "y": 2715.7480422875183, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 632.8125, + "height": 168, + "seed": 1034830685, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1687112224314, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "\nuseChatRoom(room: ChatRoom, onNewMessage: Callback)\n id: RoomID\n messages: ChatMessage[]\n isConnected: boolean\n sendMessage: (message: ChatMessage) => RoomRequest\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "wKZjHF0xcjCZcSk-ebN-j", + "originalText": "\nuseChatRoom(room: ChatRoom, onNewMessage: Callback)\n id: RoomID\n messages: ChatMessage[]\n isConnected: boolean\n sendMessage: (message: ChatMessage) => RoomRequest\n", + "lineHeight": 1.2, + "baseline": 163 } ], "appState": { From 11e4d565b31e8b6724355e11f393c29f14c3ea20 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 18:33:38 +0000 Subject: [PATCH 38/74] remove nested router route --- client/ts-variant/src/App.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index 33fbf53..5a95d57 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -16,12 +16,11 @@ export default function App() { return ( - }> - } /> - } /> - } /> - } /> - + } /> + } /> + } /> + } /> + } /> {/* Redirect invalid links to the landing page */} } /> From 401b1c5f2fa3f4e9ed17ef62a671f304ee15c3f5 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 20:56:52 +0000 Subject: [PATCH 39/74] set server default to dev mode --- backend/start-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/start-server.sh b/backend/start-server.sh index f7b0994..cb924d0 100755 --- a/backend/start-server.sh +++ b/backend/start-server.sh @@ -2,4 +2,4 @@ CONFIG="${PWD}/config/nats-server.conf" -docker run --name nats-server --rm -v $CONFIG:/nats-server.conf nats -c /nats-server.conf \ No newline at end of file +docker run --name nats-server --rm -v $CONFIG:/nats-server.conf nats -c /nats-server.conf -D \ No newline at end of file From b411090b9ea5486c99f7cf61aab74ef4811ac373 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 20:57:12 +0000 Subject: [PATCH 40/74] really messy commit, its working tough --- client/ts-variant/src/App.tsx | 39 ++++--- client/ts-variant/src/chatService/chatRoom.ts | 0 .../ts-variant/src/chatService/chatServer.ts | 0 .../ts-variant/src/chatService/chatService.ts | 0 client/ts-variant/src/chatService/index.ts | 0 .../src/components/RoomCard/RoomCard.tsx | 24 ----- .../src/components/RoomLink/RoomLink.tsx | 16 +++ .../{RoomCard => RoomLink}/style.module.css | 0 .../src/components/RoomList/RoomList.tsx | 28 ----- client/ts-variant/src/mocks/MockRoomlist.ts | 45 -------- client/ts-variant/src/models/chatService.d.ts | 28 +---- client/ts-variant/src/routes/index.tsx | 27 ++++- .../src/routes/room/:roomID/index.tsx | 100 ++++++++++++++++++ .../room/:roomID}/style.module.css | 0 client/ts-variant/src/routes/room/index.tsx | 16 ++- client/ts-variant/src/utilities/server.ts | 10 ++ 16 files changed, 193 insertions(+), 140 deletions(-) delete mode 100644 client/ts-variant/src/chatService/chatRoom.ts delete mode 100644 client/ts-variant/src/chatService/chatServer.ts delete mode 100644 client/ts-variant/src/chatService/chatService.ts delete mode 100644 client/ts-variant/src/chatService/index.ts delete mode 100644 client/ts-variant/src/components/RoomCard/RoomCard.tsx create mode 100644 client/ts-variant/src/components/RoomLink/RoomLink.tsx rename client/ts-variant/src/components/{RoomCard => RoomLink}/style.module.css (100%) delete mode 100644 client/ts-variant/src/components/RoomList/RoomList.tsx delete mode 100644 client/ts-variant/src/mocks/MockRoomlist.ts create mode 100644 client/ts-variant/src/routes/room/:roomID/index.tsx rename client/ts-variant/src/{components/RoomList => routes/room/:roomID}/style.module.css (100%) create mode 100644 client/ts-variant/src/utilities/server.ts diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index 5a95d57..e5871f4 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -10,21 +10,36 @@ import { Lobby } from "./routes"; import { AddRoom } from "./routes/addRoom"; import { Admin } from "./routes/admin"; import { Login } from "./routes/login"; -import { Room } from "./routes/room"; +import { RoomLayout } from "./routes/room"; +import { Room } from "./routes/room/:roomID"; +import { createContext, useEffect, useState } from "react"; +import { NatsConnection } from "nats.ws"; +import { connect } from "./utilities/server"; + +export const connectionContext = createContext(null) export default function App() { + const [connection, setConnection] = useState(null) + + useEffect(() => {connect().then(setConnection)}, []) + return ( - - - } /> - } /> - } /> - } /> - } /> + + + + } /> + } /> + } /> + } /> + + } > + } /> + - {/* Redirect invalid links to the landing page */} - } /> - - + {/* Redirect invalid links to the landing page */} + } /> + + + ); } diff --git a/client/ts-variant/src/chatService/chatRoom.ts b/client/ts-variant/src/chatService/chatRoom.ts deleted file mode 100644 index e69de29..0000000 diff --git a/client/ts-variant/src/chatService/chatServer.ts b/client/ts-variant/src/chatService/chatServer.ts deleted file mode 100644 index e69de29..0000000 diff --git a/client/ts-variant/src/chatService/chatService.ts b/client/ts-variant/src/chatService/chatService.ts deleted file mode 100644 index e69de29..0000000 diff --git a/client/ts-variant/src/chatService/index.ts b/client/ts-variant/src/chatService/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/client/ts-variant/src/components/RoomCard/RoomCard.tsx b/client/ts-variant/src/components/RoomCard/RoomCard.tsx deleted file mode 100644 index 17e8647..0000000 --- a/client/ts-variant/src/components/RoomCard/RoomCard.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { ChatRoom } from "../../models/chatService"; -import style from "./style.module.css"; - -interface RoomCardProps { - meta: ChatRoom; - onClick: (room: ChatRoom) => void; -} - -export function RoomCard({ meta, onClick }: RoomCardProps) { - // Event handlers - function enterRoom() { - if (!meta.isConnected) { - console.log("No connections to room"); - return; - } - onClick(meta); - } - - return ( -
    -

    {`Room name: ${meta.name}`}

    -
    - ); -} diff --git a/client/ts-variant/src/components/RoomLink/RoomLink.tsx b/client/ts-variant/src/components/RoomLink/RoomLink.tsx new file mode 100644 index 0000000..bc5f12f --- /dev/null +++ b/client/ts-variant/src/components/RoomLink/RoomLink.tsx @@ -0,0 +1,16 @@ +import { Link } from "react-router-dom" +import { ChatRoom } from "../../models/chatService" + +interface RoomLinkProps { + room: ChatRoom +} + +export function RoomLink({ + room +}: RoomLinkProps) { + return ( + + {room.name} + + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/components/RoomCard/style.module.css b/client/ts-variant/src/components/RoomLink/style.module.css similarity index 100% rename from client/ts-variant/src/components/RoomCard/style.module.css rename to client/ts-variant/src/components/RoomLink/style.module.css diff --git a/client/ts-variant/src/components/RoomList/RoomList.tsx b/client/ts-variant/src/components/RoomList/RoomList.tsx deleted file mode 100644 index 89f9d20..0000000 --- a/client/ts-variant/src/components/RoomList/RoomList.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { useState } from "react"; - -import { mockList } from "../../mocks/MockRoomlist"; -import { ChatRoom } from "../../models/chatService"; -import { RoomCard } from "../RoomCard/RoomCard"; - -import style from "./style.module.css"; - -export function RoomList() { - const [rooms, setRooms] = useState(mockList); - - // Event Handlers - function navigateToRoom(room: ChatRoom) { - console.log(`Navigating to room: ${room.name}`); - } - - return ( -
      - {rooms.map((room) => { - return ( -
    • - -
    • - ); - })} -
    - ); -} diff --git a/client/ts-variant/src/mocks/MockRoomlist.ts b/client/ts-variant/src/mocks/MockRoomlist.ts deleted file mode 100644 index d20860f..0000000 --- a/client/ts-variant/src/mocks/MockRoomlist.ts +++ /dev/null @@ -1,45 +0,0 @@ -// A collection of mocking functionality for a the room list - -import { ChatRoom, RequestError, RequestSuccess } from "../models/chatService"; -import { ChatMessage } from "../models/generic"; - -function mockPost(message: ChatMessage) { - console.log("Posting new message", message); - - return new Promise((resolve, reject) => { - resolve({ - success: true, - error: undefined, - }); - - reject({ - success: false, - error: { message: "Failed posting message", error: "oh noes" }, - }); - }); -} - -function mockNewMessage(newMessage: ChatMessage) { - console.log(newMessage); -} - -export const mockList: ChatRoom[] = [ - { - name: "common-room", - isConnected: true, - postMessage: (message: ChatMessage) => mockPost(message), - onMessage: mockNewMessage, - }, - { - name: "kings-room", - isConnected: true, - postMessage: (message: ChatMessage) => mockPost(message), - onMessage: mockNewMessage, - }, - { - name: "bastards-barracks", - isConnected: false, - postMessage: (message: ChatMessage) => mockPost(message), - onMessage: mockNewMessage, - }, -]; diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index 1bdb9aa..bb72605 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -1,30 +1,8 @@ -export type ChatServerRequest = Promise< - RequestSuccess | RequestError ->; -export type RequestSuccess = { success: T; error?: ErrorContainer }; -export type RequestError = { success: false; error: ErrorContainer }; - -export type RoomName = string; +export type RoomID = string; export type ServerID = string; export type ServerURL = `ws://${string}:${number}`; export interface ChatRoom { - name: RoomName; - isConnected: boolean; - postMessage: (message: ChatMessage) => ChatServerRequest; - onMessage: (newMessage: ChatMessage) => void; -} - -export interface ChatServer { - id: ServerID; - subscriptions: ChatRoom[]; - subscribe: (roomName: RoomName) => ChatServerRequest; - unsubscribe: (roomName: RoomName) => void; -} - -export interface ChatService { - isConnected: boolean; - serverList: ChatServer[]; - connect: (serverURL: ServerURL) => ChatServerRequest; - disconnect: () => void; + id: RoomID, + name: string } diff --git a/client/ts-variant/src/routes/index.tsx b/client/ts-variant/src/routes/index.tsx index 191c92a..61a8bc1 100644 --- a/client/ts-variant/src/routes/index.tsx +++ b/client/ts-variant/src/routes/index.tsx @@ -1,13 +1,26 @@ import style from "./style.module.css"; +import { useState } from "react"; + +import { ChatRoom } from "../models/chatService"; + import { ToAdmin } from "../components/ToAdmin/ToAdmin"; import { ToAddRoom } from "../components/ToAddRoom/ToAddRoom"; -import { RoomList } from "../components/RoomList/RoomList"; +import { Link } from "react-router-dom"; + +const mockList: ChatRoom[] = [ + {id: "Pirates", name: "pirates cove"}, + {id: "Maestro", name: "Colloseum"}, + {id: "Saints", name: "Dead hill"}, + {id: "Clickbait", name: "Memes"}, +] /** * This is the default landing page */ export function Lobby() { + const [rooms] = useState(mockList) + return (
    @@ -16,7 +29,17 @@ export function Lobby() {
    - +
      + { + rooms.map(room => { + return ( +
    • + {room.name} +
    • + ) + }) + } +
    ); diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx new file mode 100644 index 0000000..37e84ba --- /dev/null +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -0,0 +1,100 @@ +import { useParams } from "react-router-dom"; +import style from "./style.module.css"; +import { FormEvent, useContext, useEffect, useState } from "react"; +import { ChatMessage } from "../../../models/generic"; +import { connectionContext } from "../../../App"; +import { Msg, NatsError, StringCodec } from "nats.ws"; + +const codec = StringCodec() + +export function Room() { + const { roomID } = useParams() + const connection = useContext(connectionContext) + + const [messages, updateMessages ] = useState([]) + const [ formContent, setFormContent ] = useState("") + const [ sendMessage, setSendMessage ] = useState<((message: ChatMessage) => void) | null>(null) + + useEffect(() => { + if (!roomID || !connection) return; + + const subscription = connection.subscribe(roomID,{callback: handleNewMessage}) + setSendMessage(() => (message: ChatMessage) => connection.publish(roomID, codec.encode(JSON.stringify(message)))) + + + return () => subscription.unsubscribe() + }, [roomID]) + + function handleNewMessage(error: NatsError | null, message: Msg) { + if(error) return + + const newMessage = message.json() as ChatMessage + + updateMessages(currentMessages => [...currentMessages, newMessage]) + } + + function submit(event: FormEvent) { + event.preventDefault() + if (sendMessage === null) return + + const currentTime = Date.now() + + sendMessage({ + author: {alias: "Me", id: "larsien"}, + body: formContent, + createdAt: new Date(currentTime).toISOString(), + id: `${currentTime}"me"` + }) + + setFormContent("") + } + + function updateForm(event: React.ChangeEvent) { + setFormContent(event.target.value) + } + + return ( +
    +
    +

    {roomID}

    +
    + +
    +
      + { + messages.map((message) => { + return ( +
    • + +
    • + ) + }) + } +
    +
    + +
    + { +
    + + +
    + } +
    +
    + ); +} + +interface MessageFeedCardProps { + message: ChatMessage +} + +function MessageFeedCard({ + message +}: MessageFeedCardProps) { + return ( +
    + {message.body} +
    + ) +} \ No newline at end of file diff --git a/client/ts-variant/src/components/RoomList/style.module.css b/client/ts-variant/src/routes/room/:roomID/style.module.css similarity index 100% rename from client/ts-variant/src/components/RoomList/style.module.css rename to client/ts-variant/src/routes/room/:roomID/style.module.css diff --git a/client/ts-variant/src/routes/room/index.tsx b/client/ts-variant/src/routes/room/index.tsx index a259177..a55436c 100644 --- a/client/ts-variant/src/routes/room/index.tsx +++ b/client/ts-variant/src/routes/room/index.tsx @@ -1,9 +1,17 @@ import style from "./style.module.css"; -export function Room() { +import { Link, Outlet } from "react-router-dom"; + +export function RoomLayout() { return ( -
    -

    Room

    +
    +
    + Lobby +
    + +
    + +
    ); -} +} \ No newline at end of file diff --git a/client/ts-variant/src/utilities/server.ts b/client/ts-variant/src/utilities/server.ts new file mode 100644 index 0000000..aaad863 --- /dev/null +++ b/client/ts-variant/src/utilities/server.ts @@ -0,0 +1,10 @@ +import { connect as natsConnect } from "nats.ws" + +// ENVIRONMENT VARIABLES +const URL = import.meta.env.VITE_MESSAGE_BROOKER_URL; +const PORT = import.meta.env.VITE_MESSAGE_BROOKER_CLIENT_PORT; + +export const connect = () => natsConnect( { + servers: `ws://${URL}:${PORT}`, + tls: null, +}) \ No newline at end of file From a8f007675e1baa2148f5998d381cab2435e1e46a Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:00:49 +0000 Subject: [PATCH 41/74] tidy --- .../ts-variant/src/routes/room/:roomID/index.tsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index 37e84ba..8a48423 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -1,8 +1,11 @@ -import { useParams } from "react-router-dom"; import style from "./style.module.css"; +import { useParams } from "react-router-dom"; import { FormEvent, useContext, useEffect, useState } from "react"; + import { ChatMessage } from "../../../models/generic"; + import { connectionContext } from "../../../App"; + import { Msg, NatsError, StringCodec } from "nats.ws"; const codec = StringCodec() @@ -74,12 +77,10 @@ export function Room() {
    - { -
    - - -
    - } +
    + + +
    ); From 92761d91d6f8324e883e7bad41a2c7f43bc671e7 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:08:48 +0000 Subject: [PATCH 42/74] extracted context --- client/ts-variant/src/App.tsx | 14 +++-------- .../src/contexts/ConnectionContext.tsx | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 client/ts-variant/src/contexts/ConnectionContext.tsx diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index e5871f4..1433a17 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -12,19 +12,11 @@ import { Admin } from "./routes/admin"; import { Login } from "./routes/login"; import { RoomLayout } from "./routes/room"; import { Room } from "./routes/room/:roomID"; -import { createContext, useEffect, useState } from "react"; -import { NatsConnection } from "nats.ws"; -import { connect } from "./utilities/server"; - -export const connectionContext = createContext(null) - +import { ConnectionContextProvider } from "./contexts/ConnectionContext"; export default function App() { - const [connection, setConnection] = useState(null) - - useEffect(() => {connect().then(setConnection)}, []) return ( - + } /> @@ -40,6 +32,6 @@ export default function App() { } /> - + ); } diff --git a/client/ts-variant/src/contexts/ConnectionContext.tsx b/client/ts-variant/src/contexts/ConnectionContext.tsx new file mode 100644 index 0000000..9e041fa --- /dev/null +++ b/client/ts-variant/src/contexts/ConnectionContext.tsx @@ -0,0 +1,23 @@ +import { NatsConnection } from "nats.ws" +import { connect } from "../utilities/server" +import React, { createContext, useEffect, useState } from "react" + + +export const connectionContext = createContext(null) + +interface ContextProps { + children: React.JSX.Element +} + +export function ConnectionContextProvider({ + children +}: ContextProps) { + const [connection, setConnection] = useState(null) + useEffect(() => {connect().then(setConnection)}, []) + + return ( + + {children} + + ) +} \ No newline at end of file From a714c4a8df9ce4fe7d3a08515b1bfcd8a2fdff26 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:12:07 +0000 Subject: [PATCH 43/74] fix mangled import --- client/ts-variant/src/routes/room/:roomID/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index 8a48423..65a2c72 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -4,7 +4,7 @@ import { FormEvent, useContext, useEffect, useState } from "react"; import { ChatMessage } from "../../../models/generic"; -import { connectionContext } from "../../../App"; +import { connectionContext } from "../../../contexts/ConnectionContext"; import { Msg, NatsError, StringCodec } from "nats.ws"; From f2b55a57ea937d4487d9c64d146cd401652a6b18 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:12:32 +0000 Subject: [PATCH 44/74] format project --- client/ts-variant/src/App.tsx | 3 +- .../src/components/RoomLink/RoomLink.tsx | 18 ++-- .../src/contexts/ConnectionContext.tsx | 25 +++--- client/ts-variant/src/models/chatService.d.ts | 4 +- client/ts-variant/src/routes/index.tsx | 28 +++--- .../src/routes/room/:roomID/index.tsx | 88 ++++++++++--------- client/ts-variant/src/routes/room/index.tsx | 2 +- client/ts-variant/src/utilities/server.ts | 11 +-- 8 files changed, 87 insertions(+), 92 deletions(-) diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index 1433a17..fefbc09 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -14,7 +14,6 @@ import { RoomLayout } from "./routes/room"; import { Room } from "./routes/room/:roomID"; import { ConnectionContextProvider } from "./contexts/ConnectionContext"; export default function App() { - return ( @@ -24,7 +23,7 @@ export default function App() { } /> } /> - } > + }> } /> diff --git a/client/ts-variant/src/components/RoomLink/RoomLink.tsx b/client/ts-variant/src/components/RoomLink/RoomLink.tsx index bc5f12f..4adeabb 100644 --- a/client/ts-variant/src/components/RoomLink/RoomLink.tsx +++ b/client/ts-variant/src/components/RoomLink/RoomLink.tsx @@ -1,16 +1,10 @@ -import { Link } from "react-router-dom" -import { ChatRoom } from "../../models/chatService" +import { Link } from "react-router-dom"; +import { ChatRoom } from "../../models/chatService"; interface RoomLinkProps { - room: ChatRoom + room: ChatRoom; } -export function RoomLink({ - room -}: RoomLinkProps) { - return ( - - {room.name} - - ) -} \ No newline at end of file +export function RoomLink({ room }: RoomLinkProps) { + return {room.name}; +} diff --git a/client/ts-variant/src/contexts/ConnectionContext.tsx b/client/ts-variant/src/contexts/ConnectionContext.tsx index 9e041fa..260958e 100644 --- a/client/ts-variant/src/contexts/ConnectionContext.tsx +++ b/client/ts-variant/src/contexts/ConnectionContext.tsx @@ -1,23 +1,22 @@ -import { NatsConnection } from "nats.ws" -import { connect } from "../utilities/server" -import React, { createContext, useEffect, useState } from "react" +import { NatsConnection } from "nats.ws"; +import { connect } from "../utilities/server"; +import React, { createContext, useEffect, useState } from "react"; - -export const connectionContext = createContext(null) +export const connectionContext = createContext(null); interface ContextProps { - children: React.JSX.Element + children: React.JSX.Element; } -export function ConnectionContextProvider({ - children -}: ContextProps) { - const [connection, setConnection] = useState(null) - useEffect(() => {connect().then(setConnection)}, []) +export function ConnectionContextProvider({ children }: ContextProps) { + const [connection, setConnection] = useState(null); + useEffect(() => { + connect().then(setConnection); + }, []); return ( {children} - ) -} \ No newline at end of file + ); +} diff --git a/client/ts-variant/src/models/chatService.d.ts b/client/ts-variant/src/models/chatService.d.ts index bb72605..0a3b6ce 100644 --- a/client/ts-variant/src/models/chatService.d.ts +++ b/client/ts-variant/src/models/chatService.d.ts @@ -3,6 +3,6 @@ export type ServerID = string; export type ServerURL = `ws://${string}:${number}`; export interface ChatRoom { - id: RoomID, - name: string + id: RoomID; + name: string; } diff --git a/client/ts-variant/src/routes/index.tsx b/client/ts-variant/src/routes/index.tsx index 61a8bc1..e3daf0d 100644 --- a/client/ts-variant/src/routes/index.tsx +++ b/client/ts-variant/src/routes/index.tsx @@ -9,17 +9,17 @@ import { ToAddRoom } from "../components/ToAddRoom/ToAddRoom"; import { Link } from "react-router-dom"; const mockList: ChatRoom[] = [ - {id: "Pirates", name: "pirates cove"}, - {id: "Maestro", name: "Colloseum"}, - {id: "Saints", name: "Dead hill"}, - {id: "Clickbait", name: "Memes"}, -] + { id: "Pirates", name: "pirates cove" }, + { id: "Maestro", name: "Colloseum" }, + { id: "Saints", name: "Dead hill" }, + { id: "Clickbait", name: "Memes" }, +]; /** * This is the default landing page */ export function Lobby() { - const [rooms] = useState(mockList) + const [rooms] = useState(mockList); return (
    @@ -30,15 +30,13 @@ export function Lobby() {
      - { - rooms.map(room => { - return ( -
    • - {room.name} -
    • - ) - }) - } + {rooms.map((room) => { + return ( +
    • + {room.name} +
    • + ); + })}
    diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index 65a2c72..e8e2f38 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -8,52 +8,58 @@ import { connectionContext } from "../../../contexts/ConnectionContext"; import { Msg, NatsError, StringCodec } from "nats.ws"; -const codec = StringCodec() +const codec = StringCodec(); export function Room() { - const { roomID } = useParams() - const connection = useContext(connectionContext) + const { roomID } = useParams(); + const connection = useContext(connectionContext); - const [messages, updateMessages ] = useState([]) - const [ formContent, setFormContent ] = useState("") - const [ sendMessage, setSendMessage ] = useState<((message: ChatMessage) => void) | null>(null) + const [messages, updateMessages] = useState([]); + const [formContent, setFormContent] = useState(""); + const [sendMessage, setSendMessage] = useState< + ((message: ChatMessage) => void) | null + >(null); useEffect(() => { if (!roomID || !connection) return; - const subscription = connection.subscribe(roomID,{callback: handleNewMessage}) - setSendMessage(() => (message: ChatMessage) => connection.publish(roomID, codec.encode(JSON.stringify(message)))) + const subscription = connection.subscribe(roomID, { + callback: handleNewMessage, + }); + setSendMessage( + () => (message: ChatMessage) => + connection.publish(roomID, codec.encode(JSON.stringify(message))) + ); - - return () => subscription.unsubscribe() - }, [roomID]) + return () => subscription.unsubscribe(); + }, [roomID]); function handleNewMessage(error: NatsError | null, message: Msg) { - if(error) return + if (error) return; - const newMessage = message.json() as ChatMessage + const newMessage = message.json() as ChatMessage; - updateMessages(currentMessages => [...currentMessages, newMessage]) + updateMessages((currentMessages) => [...currentMessages, newMessage]); } function submit(event: FormEvent) { - event.preventDefault() - if (sendMessage === null) return + event.preventDefault(); + if (sendMessage === null) return; - const currentTime = Date.now() + const currentTime = Date.now(); sendMessage({ - author: {alias: "Me", id: "larsien"}, + author: { alias: "Me", id: "larsien" }, body: formContent, createdAt: new Date(currentTime).toISOString(), - id: `${currentTime}"me"` - }) + id: `${currentTime}"me"`, + }); - setFormContent("") + setFormContent(""); } function updateForm(event: React.ChangeEvent) { - setFormContent(event.target.value) + setFormContent(event.target.value); } return ( @@ -64,21 +70,25 @@ export function Room() {
      - { - messages.map((message) => { - return ( -
    • - -
    • - ) - }) - } + {messages.map((message) => { + return ( +
    • + +
    • + ); + })}
    - +
    @@ -87,15 +97,9 @@ export function Room() { } interface MessageFeedCardProps { - message: ChatMessage + message: ChatMessage; } -function MessageFeedCard({ - message -}: MessageFeedCardProps) { - return ( -
    - {message.body} -
    - ) -} \ No newline at end of file +function MessageFeedCard({ message }: MessageFeedCardProps) { + return
    {message.body}
    ; +} diff --git a/client/ts-variant/src/routes/room/index.tsx b/client/ts-variant/src/routes/room/index.tsx index a55436c..f8b09d7 100644 --- a/client/ts-variant/src/routes/room/index.tsx +++ b/client/ts-variant/src/routes/room/index.tsx @@ -14,4 +14,4 @@ export function RoomLayout() { ); -} \ No newline at end of file +} diff --git a/client/ts-variant/src/utilities/server.ts b/client/ts-variant/src/utilities/server.ts index aaad863..a2137c2 100644 --- a/client/ts-variant/src/utilities/server.ts +++ b/client/ts-variant/src/utilities/server.ts @@ -1,10 +1,11 @@ -import { connect as natsConnect } from "nats.ws" +import { connect as natsConnect } from "nats.ws"; // ENVIRONMENT VARIABLES const URL = import.meta.env.VITE_MESSAGE_BROOKER_URL; const PORT = import.meta.env.VITE_MESSAGE_BROOKER_CLIENT_PORT; -export const connect = () => natsConnect( { - servers: `ws://${URL}:${PORT}`, - tls: null, -}) \ No newline at end of file +export const connect = () => + natsConnect({ + servers: `ws://${URL}:${PORT}`, + tls: null, + }); From 40258c3dd50ee4aa1f39bae5e23e7e17b9089783 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:23:36 +0000 Subject: [PATCH 45/74] extract chat input --- .../src/components/ChatInput/ChatInput.tsx | 41 +++++++++++++++++++ .../src/components/ChatInput/style.module.css | 0 .../src/routes/room/:roomID/index.tsx | 37 ++--------------- 3 files changed, 44 insertions(+), 34 deletions(-) create mode 100644 client/ts-variant/src/components/ChatInput/ChatInput.tsx create mode 100644 client/ts-variant/src/components/ChatInput/style.module.css diff --git a/client/ts-variant/src/components/ChatInput/ChatInput.tsx b/client/ts-variant/src/components/ChatInput/ChatInput.tsx new file mode 100644 index 0000000..ad5132e --- /dev/null +++ b/client/ts-variant/src/components/ChatInput/ChatInput.tsx @@ -0,0 +1,41 @@ +import { FormEvent, useState } from "react"; +import { ChatMessage } from "../../models/generic"; + +interface ChatInputProps { + sendMessage: ((message: ChatMessage) => void) | null; +} + +export function ChatInput({ sendMessage }: ChatInputProps) { + const [formContent, setFormContent] = useState(""); + + function submit(event: FormEvent) { + event.preventDefault(); + if (sendMessage === null) return; + + const currentTime = Date.now(); + + sendMessage({ + author: { alias: "Me", id: "larsien" }, + body: formContent, + createdAt: new Date(currentTime).toISOString(), + id: `${currentTime}"me"`, + }); + + setFormContent(""); + } + + function updateForm(event: React.ChangeEvent) { + setFormContent(event.target.value); + } + + return ( +
    +
    + + +
    +
    + ); +} diff --git a/client/ts-variant/src/components/ChatInput/style.module.css b/client/ts-variant/src/components/ChatInput/style.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index e8e2f38..d59a9b2 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -1,12 +1,13 @@ import style from "./style.module.css"; import { useParams } from "react-router-dom"; -import { FormEvent, useContext, useEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { ChatMessage } from "../../../models/generic"; import { connectionContext } from "../../../contexts/ConnectionContext"; import { Msg, NatsError, StringCodec } from "nats.ws"; +import { ChatInput } from "../../../components/ChatInput/ChatInput"; const codec = StringCodec(); @@ -15,7 +16,6 @@ export function Room() { const connection = useContext(connectionContext); const [messages, updateMessages] = useState([]); - const [formContent, setFormContent] = useState(""); const [sendMessage, setSendMessage] = useState< ((message: ChatMessage) => void) | null >(null); @@ -42,26 +42,6 @@ export function Room() { updateMessages((currentMessages) => [...currentMessages, newMessage]); } - function submit(event: FormEvent) { - event.preventDefault(); - if (sendMessage === null) return; - - const currentTime = Date.now(); - - sendMessage({ - author: { alias: "Me", id: "larsien" }, - body: formContent, - createdAt: new Date(currentTime).toISOString(), - id: `${currentTime}"me"`, - }); - - setFormContent(""); - } - - function updateForm(event: React.ChangeEvent) { - setFormContent(event.target.value); - } - return (
    @@ -80,18 +60,7 @@ export function Room() {
-
-
- - -
-
+ ); } From 39167d431f239456db67ffd4dd987c2eb72a7cb9 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:29:36 +0000 Subject: [PATCH 46/74] extract feed --- .../src/components/ChatFeed/ChatFeed.tsx | 29 +++++++++++++++++++ .../src/components/ChatFeed/style.module.css | 0 .../src/routes/room/:roomID/index.tsx | 22 +++----------- 3 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 client/ts-variant/src/components/ChatFeed/ChatFeed.tsx create mode 100644 client/ts-variant/src/components/ChatFeed/style.module.css diff --git a/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx b/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx new file mode 100644 index 0000000..2385247 --- /dev/null +++ b/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx @@ -0,0 +1,29 @@ +import style from "./style.module.css"; + +import { ChatMessage } from "../../models/generic"; + +interface ChatFeedProps { + messages: ChatMessage[]; +} + +export function ChatFeed({ messages }: ChatFeedProps) { + return ( +
    + {messages.map((message) => { + return ( +
  • + +
  • + ); + })} +
+ ); +} + +interface MessageFeedCardProps { + message: ChatMessage; +} + +function MessageFeedCard({ message }: MessageFeedCardProps) { + return
{message.body}
; +} diff --git a/client/ts-variant/src/components/ChatFeed/style.module.css b/client/ts-variant/src/components/ChatFeed/style.module.css new file mode 100644 index 0000000..e69de29 diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index d59a9b2..18859f6 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -1,13 +1,15 @@ import style from "./style.module.css"; + import { useParams } from "react-router-dom"; import { useContext, useEffect, useState } from "react"; import { ChatMessage } from "../../../models/generic"; import { connectionContext } from "../../../contexts/ConnectionContext"; - import { Msg, NatsError, StringCodec } from "nats.ws"; + import { ChatInput } from "../../../components/ChatInput/ChatInput"; +import { ChatFeed } from "../../../components/ChatFeed/ChatFeed"; const codec = StringCodec(); @@ -49,26 +51,10 @@ export function Room() {
-
    - {messages.map((message) => { - return ( -
  • - -
  • - ); - })} -
+
); } - -interface MessageFeedCardProps { - message: ChatMessage; -} - -function MessageFeedCard({ message }: MessageFeedCardProps) { - return
{message.body}
; -} From 3e1b074ae98bbb9afa6aed0d98f8f670cab890a5 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:41:27 +0000 Subject: [PATCH 47/74] extracted connection logic --- .../src/hooks/useChatRoom/useChatRoom.ts | 37 +++++++++++++++++++ .../src/routes/room/:roomID/index.tsx | 28 ++------------ 2 files changed, 41 insertions(+), 24 deletions(-) create mode 100644 client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts diff --git a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts new file mode 100644 index 0000000..c19c7e6 --- /dev/null +++ b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts @@ -0,0 +1,37 @@ +import { useContext, useEffect, useState } from "react"; +import { connectionContext } from "../../contexts/ConnectionContext"; +import { Msg, NatsError, StringCodec } from "nats.ws"; +import { ChatMessage } from "../../models/generic"; + +const codec = StringCodec(); + +interface IuseChatRoom { + roomID: string | undefined, + onNewMessage: (error: NatsError | null, message: Msg) => void +} + +export function useChatRoom({roomID, onNewMessage}: IuseChatRoom) { + const connection = useContext(connectionContext); + const [sendMessage, setSendMessage] = useState< + ((message: ChatMessage) => void) | null + >(null); + + useEffect(() => { + if (!roomID || !connection) return; + + const subscription = connection.subscribe(roomID, { + callback: onNewMessage, + }); + + setSendMessage( + () => (message: ChatMessage) => + connection.publish(roomID, codec.encode(JSON.stringify(message))) + ); + + return () => subscription.unsubscribe(); + }, [roomID]); + + return { + sendMessage, + } +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index 18859f6..e737a75 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -1,40 +1,20 @@ import style from "./style.module.css"; import { useParams } from "react-router-dom"; -import { useContext, useEffect, useState } from "react"; +import { useState } from "react"; import { ChatMessage } from "../../../models/generic"; -import { connectionContext } from "../../../contexts/ConnectionContext"; -import { Msg, NatsError, StringCodec } from "nats.ws"; +import { Msg, NatsError} from "nats.ws"; import { ChatInput } from "../../../components/ChatInput/ChatInput"; import { ChatFeed } from "../../../components/ChatFeed/ChatFeed"; - -const codec = StringCodec(); +import { useChatRoom } from "../../../hooks/useChatRoom/useChatRoom"; export function Room() { const { roomID } = useParams(); - const connection = useContext(connectionContext); - const [messages, updateMessages] = useState([]); - const [sendMessage, setSendMessage] = useState< - ((message: ChatMessage) => void) | null - >(null); - - useEffect(() => { - if (!roomID || !connection) return; - - const subscription = connection.subscribe(roomID, { - callback: handleNewMessage, - }); - setSendMessage( - () => (message: ChatMessage) => - connection.publish(roomID, codec.encode(JSON.stringify(message))) - ); - - return () => subscription.unsubscribe(); - }, [roomID]); + const { sendMessage } = useChatRoom({roomID, onNewMessage: handleNewMessage}) function handleNewMessage(error: NatsError | null, message: Msg) { if (error) return; From 4c24ebc96f4b75d77417cd88dc761d07ca043302 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:42:18 +0000 Subject: [PATCH 48/74] format project --- .../ts-variant/src/hooks/useChatRoom/useChatRoom.ts | 12 ++++++------ client/ts-variant/src/routes/room/:roomID/index.tsx | 7 +++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts index c19c7e6..bf9cec8 100644 --- a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts +++ b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts @@ -6,11 +6,11 @@ import { ChatMessage } from "../../models/generic"; const codec = StringCodec(); interface IuseChatRoom { - roomID: string | undefined, - onNewMessage: (error: NatsError | null, message: Msg) => void + roomID: string | undefined; + onNewMessage: (error: NatsError | null, message: Msg) => void; } -export function useChatRoom({roomID, onNewMessage}: IuseChatRoom) { +export function useChatRoom({ roomID, onNewMessage }: IuseChatRoom) { const connection = useContext(connectionContext); const [sendMessage, setSendMessage] = useState< ((message: ChatMessage) => void) | null @@ -22,7 +22,7 @@ export function useChatRoom({roomID, onNewMessage}: IuseChatRoom) { const subscription = connection.subscribe(roomID, { callback: onNewMessage, }); - + setSendMessage( () => (message: ChatMessage) => connection.publish(roomID, codec.encode(JSON.stringify(message))) @@ -33,5 +33,5 @@ export function useChatRoom({roomID, onNewMessage}: IuseChatRoom) { return { sendMessage, - } -} \ No newline at end of file + }; +} diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index e737a75..9a5432e 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -5,7 +5,7 @@ import { useState } from "react"; import { ChatMessage } from "../../../models/generic"; -import { Msg, NatsError} from "nats.ws"; +import { Msg, NatsError } from "nats.ws"; import { ChatInput } from "../../../components/ChatInput/ChatInput"; import { ChatFeed } from "../../../components/ChatFeed/ChatFeed"; @@ -14,7 +14,10 @@ import { useChatRoom } from "../../../hooks/useChatRoom/useChatRoom"; export function Room() { const { roomID } = useParams(); const [messages, updateMessages] = useState([]); - const { sendMessage } = useChatRoom({roomID, onNewMessage: handleNewMessage}) + const { sendMessage } = useChatRoom({ + roomID, + onNewMessage: handleNewMessage, + }); function handleNewMessage(error: NatsError | null, message: Msg) { if (error) return; From 78159aa495b563440eb8f050188742bc84b04630 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:46:47 +0000 Subject: [PATCH 49/74] extract remaining connection logic --- .../src/hooks/useChatRoom/useChatRoom.ts | 15 ++++++++++++--- .../src/routes/room/:roomID/index.tsx | 19 +------------------ 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts index bf9cec8..6789492 100644 --- a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts +++ b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts @@ -7,20 +7,20 @@ const codec = StringCodec(); interface IuseChatRoom { roomID: string | undefined; - onNewMessage: (error: NatsError | null, message: Msg) => void; } -export function useChatRoom({ roomID, onNewMessage }: IuseChatRoom) { +export function useChatRoom({ roomID }: IuseChatRoom) { const connection = useContext(connectionContext); const [sendMessage, setSendMessage] = useState< ((message: ChatMessage) => void) | null >(null); + const [messages, updateMessages] = useState([]); useEffect(() => { if (!roomID || !connection) return; const subscription = connection.subscribe(roomID, { - callback: onNewMessage, + callback: handleNewMessage, }); setSendMessage( @@ -31,7 +31,16 @@ export function useChatRoom({ roomID, onNewMessage }: IuseChatRoom) { return () => subscription.unsubscribe(); }, [roomID]); + function handleNewMessage(error: NatsError | null, message: Msg) { + if (error) return; + + const newMessage = message.json() as ChatMessage; + + updateMessages((currentMessages) => [...currentMessages, newMessage]); + } + return { sendMessage, + messages, }; } diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index 9a5432e..a90dc66 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -1,11 +1,6 @@ import style from "./style.module.css"; import { useParams } from "react-router-dom"; -import { useState } from "react"; - -import { ChatMessage } from "../../../models/generic"; - -import { Msg, NatsError } from "nats.ws"; import { ChatInput } from "../../../components/ChatInput/ChatInput"; import { ChatFeed } from "../../../components/ChatFeed/ChatFeed"; @@ -13,19 +8,7 @@ import { useChatRoom } from "../../../hooks/useChatRoom/useChatRoom"; export function Room() { const { roomID } = useParams(); - const [messages, updateMessages] = useState([]); - const { sendMessage } = useChatRoom({ - roomID, - onNewMessage: handleNewMessage, - }); - - function handleNewMessage(error: NatsError | null, message: Msg) { - if (error) return; - - const newMessage = message.json() as ChatMessage; - - updateMessages((currentMessages) => [...currentMessages, newMessage]); - } + const { messages, sendMessage } = useChatRoom({ roomID }); return (
From 19bf572ea62e38752d2c28cfd497fae377d0d914 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 21:56:39 +0000 Subject: [PATCH 50/74] tidy up typing --- client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts index 6789492..915786a 100644 --- a/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts +++ b/client/ts-variant/src/hooks/useChatRoom/useChatRoom.ts @@ -5,15 +5,15 @@ import { ChatMessage } from "../../models/generic"; const codec = StringCodec(); +type SendMessage = ((message: ChatMessage) => void) | null; + interface IuseChatRoom { roomID: string | undefined; } export function useChatRoom({ roomID }: IuseChatRoom) { const connection = useContext(connectionContext); - const [sendMessage, setSendMessage] = useState< - ((message: ChatMessage) => void) | null - >(null); + const [sendMessage, setSendMessage] = useState(null); const [messages, updateMessages] = useState([]); useEffect(() => { From d6a537c9fe649feda3907a16c62dbcbd2534e6b9 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 22:04:01 +0000 Subject: [PATCH 51/74] tidy --- client/ts-variant/src/App.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/ts-variant/src/App.tsx b/client/ts-variant/src/App.tsx index fefbc09..04e083d 100644 --- a/client/ts-variant/src/App.tsx +++ b/client/ts-variant/src/App.tsx @@ -5,6 +5,9 @@ import { Navigate, } from "react-router-dom"; +// Contexts +import { ConnectionContextProvider } from "./contexts/ConnectionContext"; + // Routes import { Lobby } from "./routes"; import { AddRoom } from "./routes/addRoom"; @@ -12,7 +15,7 @@ import { Admin } from "./routes/admin"; import { Login } from "./routes/login"; import { RoomLayout } from "./routes/room"; import { Room } from "./routes/room/:roomID"; -import { ConnectionContextProvider } from "./contexts/ConnectionContext"; + export default function App() { return ( From 09ce2b16410fa8b6ab88075a6e1dd4ee3b6e9d04 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 22:08:02 +0000 Subject: [PATCH 52/74] add css spacing variables --- client/ts-variant/src/main.tsx | 1 + client/ts-variant/src/styles/spacing.css | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 client/ts-variant/src/styles/spacing.css diff --git a/client/ts-variant/src/main.tsx b/client/ts-variant/src/main.tsx index bc6acac..9abd169 100644 --- a/client/ts-variant/src/main.tsx +++ b/client/ts-variant/src/main.tsx @@ -5,6 +5,7 @@ import App from "./App.tsx"; // Global CSS import "./styles/normalize.css"; import "./styles/palettes.css"; +import "./styles/spacing.css" import "./styles/typography.css"; ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( diff --git a/client/ts-variant/src/styles/spacing.css b/client/ts-variant/src/styles/spacing.css new file mode 100644 index 0000000..756d19b --- /dev/null +++ b/client/ts-variant/src/styles/spacing.css @@ -0,0 +1,8 @@ +:root { + --spacing-1: 8px, + --spacing-2: 12px, + --spacing-3: 16px, + --spacing-4: 24px, + --spacing-5: 32px, + --spacing-6: 48px, +} \ No newline at end of file From abb320fa92921dee4c50a1083571aac2bf509c4e Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 22:09:06 +0000 Subject: [PATCH 53/74] fix css spacing variables --- client/ts-variant/src/styles/spacing.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/ts-variant/src/styles/spacing.css b/client/ts-variant/src/styles/spacing.css index 756d19b..2646623 100644 --- a/client/ts-variant/src/styles/spacing.css +++ b/client/ts-variant/src/styles/spacing.css @@ -1,8 +1,8 @@ :root { - --spacing-1: 8px, - --spacing-2: 12px, - --spacing-3: 16px, - --spacing-4: 24px, - --spacing-5: 32px, - --spacing-6: 48px, + --spacing-1: 8px; + --spacing-2: 12px; + --spacing-3: 16px; + --spacing-4: 24px; + --spacing-5: 32px; + --spacing-6: 48px; } \ No newline at end of file From f748ab5d83f122c8bbc41c2f126e84620b2bf4b5 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 22:22:03 +0000 Subject: [PATCH 54/74] add basic styling to lobby --- client/ts-variant/src/routes/index.tsx | 16 +++++++- client/ts-variant/src/routes/style.module.css | 40 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/client/ts-variant/src/routes/index.tsx b/client/ts-variant/src/routes/index.tsx index e3daf0d..fb74145 100644 --- a/client/ts-variant/src/routes/index.tsx +++ b/client/ts-variant/src/routes/index.tsx @@ -29,11 +29,11 @@ export function Lobby() {
-
    +
      {rooms.map((room) => { return (
    • - {room.name} +
    • ); })} @@ -42,3 +42,15 @@ export function Lobby() {
); } + +interface RoomCardProps { + room: ChatRoom +} + +function RoomCard({room}: RoomCardProps) { + return ( + +

{room.name}

+ + ) +} diff --git a/client/ts-variant/src/routes/style.module.css b/client/ts-variant/src/routes/style.module.css index 9b469e1..a45060e 100644 --- a/client/ts-variant/src/routes/style.module.css +++ b/client/ts-variant/src/routes/style.module.css @@ -1,2 +1,42 @@ .Lobby { + display: flex; + flex-direction: column; + min-height: 100vh; + min-height: 100svh; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + + position: sticky; + top: 0px; + + background-color: var(--color-primary-400); + padding: var(--spacing-1) var(--spacing-2); +} + +.main { + margin-top: var(--spacing-2); + margin-left: auto; + margin-right: auto; +} + +.rooms { + display: flex; + flex-direction: column; + gap: var(--spacing-2); +} + + +/* Separate Components */ +.RoomCard { +} +.RoomCard > h2 { + color: var(--color-primary-950); + background-color: var(--color-accent-400); + + padding: var(--spacing-2) var(--spacing-4); + border-radius: 10px; } From a1b334e0058badbeb55318c506932980d8a67635 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 22:32:35 +0000 Subject: [PATCH 55/74] add styling to room layout --- client/ts-variant/src/routes/room/index.tsx | 8 ++++--- .../src/routes/room/style.module.css | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/client/ts-variant/src/routes/room/index.tsx b/client/ts-variant/src/routes/room/index.tsx index f8b09d7..9862553 100644 --- a/client/ts-variant/src/routes/room/index.tsx +++ b/client/ts-variant/src/routes/room/index.tsx @@ -4,9 +4,11 @@ import { Link, Outlet } from "react-router-dom"; export function RoomLayout() { return ( -
-
- Lobby +
+
+
diff --git a/client/ts-variant/src/routes/room/style.module.css b/client/ts-variant/src/routes/room/style.module.css index e69de29..1350cfa 100644 --- a/client/ts-variant/src/routes/room/style.module.css +++ b/client/ts-variant/src/routes/room/style.module.css @@ -0,0 +1,22 @@ +.room-layout { + display: flex; + flex-direction: column; +} + +.navigation { + display: flex; + + padding-left: var(--spacing-1); + background-color: var(--color-primary-600); + color: var(--color-gray-200); +} + +.navigation > * > a { + display: block; + + background-color: var(--color-secondary-800); + padding: var(--spacing-1) var(--spacing-4); + border-radius: 10px; + + margin: var(--spacing-1) 0px; +} \ No newline at end of file From a884b2da179a04bfc477d8751210cb7870166020 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 22:42:41 +0000 Subject: [PATCH 56/74] add basic styling to room --- .../ts-variant/src/routes/room/:roomID/index.tsx | 6 +++--- .../src/routes/room/:roomID/style.module.css | 16 ++++++++++++++++ .../ts-variant/src/routes/room/style.module.css | 4 ++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/client/ts-variant/src/routes/room/:roomID/index.tsx b/client/ts-variant/src/routes/room/:roomID/index.tsx index a90dc66..59b5032 100644 --- a/client/ts-variant/src/routes/room/:roomID/index.tsx +++ b/client/ts-variant/src/routes/room/:roomID/index.tsx @@ -11,12 +11,12 @@ export function Room() { const { messages, sendMessage } = useChatRoom({ roomID }); return ( -
-
+
+

{roomID}

-
+
diff --git a/client/ts-variant/src/routes/room/:roomID/style.module.css b/client/ts-variant/src/routes/room/:roomID/style.module.css index e69de29..83916bc 100644 --- a/client/ts-variant/src/routes/room/:roomID/style.module.css +++ b/client/ts-variant/src/routes/room/:roomID/style.module.css @@ -0,0 +1,16 @@ +.room { + display: grid; + grid-template-rows: 1fr 12fr 1fr; + height: calc(100vh - 9vh); + height: calc(100svh - 9svh); +} + +.room-header { + display: flex; + justify-content: center; +} + +.feed-container { + margin-left: auto; + margin-right: auto; +} \ No newline at end of file diff --git a/client/ts-variant/src/routes/room/style.module.css b/client/ts-variant/src/routes/room/style.module.css index 1350cfa..225f9c1 100644 --- a/client/ts-variant/src/routes/room/style.module.css +++ b/client/ts-variant/src/routes/room/style.module.css @@ -5,10 +5,14 @@ .navigation { display: flex; + align-items: center; padding-left: var(--spacing-1); background-color: var(--color-primary-600); color: var(--color-gray-200); + + --navbar-height: 9vh; + height: var(--navbar-height); } .navigation > * > a { From 26f29dd4cfe60baca838a510d846aa4a5c5ef348 Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 23:03:04 +0000 Subject: [PATCH 57/74] add basic css to message feed --- .../src/components/ChatFeed/ChatFeed.tsx | 26 ++++++++++++-- .../src/components/ChatFeed/style.module.css | 35 +++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx b/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx index 2385247..f5b94f9 100644 --- a/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx +++ b/client/ts-variant/src/components/ChatFeed/ChatFeed.tsx @@ -11,7 +11,7 @@ export function ChatFeed({ messages }: ChatFeedProps) {
    {messages.map((message) => { return ( -
  • +
  • ); @@ -25,5 +25,27 @@ interface MessageFeedCardProps { } function MessageFeedCard({ message }: MessageFeedCardProps) { - return
    {message.body}
    ; + const formatedDate = new Date(message.createdAt).toUTCString() + + return ( +
    +
    +
    +

    + {message.author.alias} +

    +
    + +
    + {formatedDate} +
    +
    +
    +
    +

    + {message.body} +

    +
    +
    + ); } diff --git a/client/ts-variant/src/components/ChatFeed/style.module.css b/client/ts-variant/src/components/ChatFeed/style.module.css index e69de29..08c49f5 100644 --- a/client/ts-variant/src/components/ChatFeed/style.module.css +++ b/client/ts-variant/src/components/ChatFeed/style.module.css @@ -0,0 +1,35 @@ +.feed { + display: flex; + flex-direction: column; + gap: var(--spacing-1); +} + +.feed-item { + display: flex; + + background-color: var(--color-primary-500); + border: 2px solid var(--color-accent-300); + border-radius: 5px; + + padding: var(--spacing-1) var(--spacing-2); + width: 80vw; +} + + +/* Separate component */ +.message { + flex-grow: 1; +} + +.message-header { + display: flex; + justify-content: space-between; + + font-size: xx-small; +} + +.message-content { + box-shadow: 0px 0px 2px 2px rgba(128, 128, 128, 0.5); + background-color: var(--color-secondary-500); + padding: var(--spacing-1); +} \ No newline at end of file From 18a4ac7e577525e4d764c81c19fa8a16e78fd09a Mon Sep 17 00:00:00 2001 From: LarsG Date: Sun, 18 Jun 2023 23:31:48 +0000 Subject: [PATCH 58/74] add some basic styling to chat input --- .../src/components/ChatInput/ChatInput.tsx | 10 ++++++---- .../src/components/ChatInput/style.module.css | 20 +++++++++++++++++++ client/ts-variant/src/styles/normalize.css | 4 ++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/client/ts-variant/src/components/ChatInput/ChatInput.tsx b/client/ts-variant/src/components/ChatInput/ChatInput.tsx index ad5132e..f0d9b7e 100644 --- a/client/ts-variant/src/components/ChatInput/ChatInput.tsx +++ b/client/ts-variant/src/components/ChatInput/ChatInput.tsx @@ -1,3 +1,5 @@ +import style from "./style.module.css" + import { FormEvent, useState } from "react"; import { ChatMessage } from "../../models/generic"; @@ -24,14 +26,14 @@ export function ChatInput({ sendMessage }: ChatInputProps) { setFormContent(""); } - function updateForm(event: React.ChangeEvent) { + function updateForm(event: React.ChangeEvent) { setFormContent(event.target.value); } return ( -